yum upgrade 和 yum update 区别

yum -y update

升级所有包,改变软件设置和系统设置,系统版本内核都升级

yum -y upgrade

升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变

 

等效指令

sudo dnf upgrade –refresh

Fedora、CentOS或RHEL安装Go语言

基于 Red Hat 的 Linux 发行版本都可以使用 yum 命令来进行安装

sudo yum install golang

要查看当前系统安装的 Go 语言版本可以使用如下命令:

go version

接下来还是在 Home 目录(例如 ~/go)创建一个 go 目录并定义 GOPATH 环境变量指向该目录,这个目录将被 Go 工具用于保存和编辑二进制文件。

mkdir ~/go
echo ‘export GOPATH=”$HOME/go”‘ >> ~/.bashrc
source ~/.bashrc

根据不同的需要,我们可以使用 yum 安装 Go tools:

yum search golang

 

Ubuntu、Debian或Linux Mint安装Go语言

基于 Debian的 Linux 发行版本都可以使用 apt-get 命令来进行安装:

sudo apt-get install golang

要查看当前系统安装的 Go 语言版本可以使用如下命令:

go version

由于 Go 代码必需保存在 workspace(工作区)中,所以我们必需在 Home 目录(例如 ~/go)创建一个go 目录并定义 GOPATH 环境变量指向该目录,这个目录将被 Go 工具用于保存和编辑二进制文件。

mkdir ~/go
echo ‘export GOPATH=”$HOME/go”‘ >> ~/.bashrc
source ~/.bashrc

根据不同的需要,我们可以使用 apt-get 安装 Go tools:

sudo apt-cache search golang

Go语言的安装包, 装完了需要设置三个地方(WINDOWS)

1. 在windows的PATH变量中添加go的可执行文件所在的目录

PATH=C:\Go\bin;其他设置;

2. 设置 GOROOT , 这个好理解, 直接设置成 C:\Go 即可

GOROOT=C:\Go

3. 设置GOPATH, 这个很难理解, 我的尝试

GOPATH= #就是等于空, 这个是可以在系统环境变量中设置的, 结果报错go get 包的时候报错说$GOPATH未设置
GOPATH=; #就是等于一个分号(;), go get 包开始可以运行, 不报错, 最后还是报错, 说$GOPATH未设置
GOPATH=C:\Go 或者GOPATH=C:\Go; #go get 包报错, 说$GOPATH不能设置成和GOROOT一样的

最后的解决方案是:

在C盘创建一个目录叫做GOPATH, 然后设置GOPATH=C:\GOPATH,

GOPATH=C:\GOPATH

go get 包可以使用了, 最后包会安装到 C:\GOPATH\ 目录的pkg和src文件夹里, pkg里是*.a格式的, 暂且理解为库吧, src目录里是*.go格式的源码.

总结

实际上GOPATH, 可以是一个目录的列表, 在windows环境变量里设置的时候, 多个目录使用分号(;)隔开, 在linux里多个目录使用冒号(:)隔开, 组合的一个字符串.

GOPATH是一些列用于go来查找包的目录列表. 使用import “包名” 的时候, 如果在 GOROOT里找不到, 应该会转向到你的GOPATH里去寻找.

不让GOPATH和GOROOT环境变量的值设置为同一个目录, 可能是因为不想你新安装的包, 污染了核心go的pkg和src文件.

搬家到GCP Centos 7 (SELinux)日志:

系统环境:Centos 7
selinux:开启
Apache:2.4
PHP :5.4
Mysql:GCP 云SQL

GCP目标系统基础运行LAMP环境搭建:

yun -y install httpd php php-gd php-mbstring php-mysql wget unzip zip nano
可选组件安装:
yun -y install php-opcache php-devel php-mcrypt php-pdo php-fpm php-xml php-common

接着开始网站搬家

1、备份数据库。

借助帝国备份王备份数据库:http://ebak.phome.net/

2、打包网站。

使用zip命令打包网站以及备份数据库文件
zip -q -r www.zip /var/www/
格式:zip 参数 压缩包名字 压缩文件夹目录
然后mv移动压缩包文件到你网站根目录。

3、转移打包文件。

mkdir创建一个临时目录,并进入
使用wget http://clin003.com/www.zip (记得域名替换为自己的)

4、解压。

unzip www.zip

5、导入数据库。

使用帝国备份王,恢复备份的数据库

6、测试网站。

如果只有一个网站,并且使用了默认网站目录,那么到此基本没有什么问题,一切顺利。

……

遇到Selinux之文件属性问题

然而如果你爱折腾,使用了非默认网站目录,那么可能会发现,从上一步开始,怎么搞也是
(13)Permission denied AH00035

[core:error] [pid 1519] (13)Permission denied: [client 1.11.21.21:19224] AH00035: access to /index.html denied (filesystem path '/clin003.com/index.html') because search permissions are missing on a component of the path

这个看上去很容易解决,不就是没权限么!
排查顺序如下:
cd /clin003.com/
ls -l index.html
chmod 644 index.html

然后
ls -la
chmod +x .

重启httpd服务。
问题依旧Permission denied

经过Google,翻阅文档:(13) Permission Denied
最终找到解决办法
那就是selinux开启的情况下。
ls -alZ
查看文档权限属性
通过对比默认目录和自定义目录,发现问题
[gcp@clin003.com]$ ls -alZ
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 .
drwxr-xr-x. root root system_u:object_r:var_t:s0 ..
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
[gcp@clin003.com]$ ls -alZ
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 .
dr-xr-xr-x. root root system_u:object_r:root_t:s0 ..
-rw-r–r–. root root unconfined_u:object_r:default_t:s0 index.html
通过对比可以发现同样的owner属性,实际的安全属性却不同
那么解决的办法就是给自定义目录及目录下文件添加“httpd_sys_content_t”属性,命令如下:
chcon -R -t httpd_sys_content_t /clin003.com

遇到Selinux之php语法错误问题解决方法

Parse error: syntax error, unexpected end of file in *.php on line *

这个比较容易解决,定位到目标行后发现是php结尾处错误!检查php.ini配置文件

找到short_open_tag

把short_open_tag = off 改为 short_open_tag = on

开启段标签模式就可一解决。

 

遇到Selinux之PHP连接MySQL出现 Can’t connect to MySQL server 的解决方法

问题情景,命令行mysql客户端可以连接成功,网站php连接不成功。

无论是指定IP、端口的tcp/ip方式连接,或者是用unix socket方式连接,报错信息都类似:

Could not connect: Can't connect to MySQL server on 'MYSQL.SERVER' (13)

php.ini配置文件,php mysql组件,防火墙均检查没问题。

最终把目标盯在SElinux

getsebool -a|grep -i httpd

可以看到这里设置了httpd进程的许可模式,再仔细看一下,有一个选项:

getsebool -a|grep -i httpd_can_network_connect
httpd_can_network_connect --> off

原来是SELinux限制了httpd对外访问的权限。将其开启即可:

setsebool -P httpd_can_network_connect=1

如果对SELinux不熟悉,也可以直接修改系统配置文件 /etc/sysconfig/selinux,全局关闭SELINUX!

#SELINUX=enforcing
#把设置改为disabled
SELINUX=disabled

然后重启操作系统,即可生效。
或者,直接执行命令,可在线生效:
[gcp@clin003.com]# setenforce 0
setenforce: SELinux is disabled

至此,坑已填完,网站已搬家完成!

参考文档:

(13) Permission Denied

https://wiki.apache.org/httpd/13PermissionDenied

SELinux导致PHP连接MySQL异常

https://yq.aliyun.com/ziliao/145002