搬家到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

 

Apache添加ip黑名单:.htaccess限制特定IP地址(段)访问

本来指望用阿里云云盾有黑名单功能的,看来是指望不到了,有两个IP每一分钟都在不停的评论,搞得wordpress进后台总是想崩溃!!

今天终于还是决定通过服务器本身过滤掉这俩IP好了,

Linux可以通过两种方法添加IP过滤。

1、通过iptables规则
可以参考Linux防火墙规则设置,太多了,这里就不写了

2、通过Apache网站根目录里的htaccess文件加过滤

#添加IP黑名单

Order Deny,Allow
Deny from 121.42.17.220
Deny from 42.120.107.28

如果你想过滤IP地址段,可以写成
Deny from 42.120.107.28/24

这样可以过滤掉 42.120.107.1~42.120.107.255范围的所有IP访问网址

。。。

重启下apache服务,世界终于清静了。

Restarting web server: apache2apache2: apr_sockaddr_info_get() failed for

重启Apache的时候提示:

[….] Restarting web server: apache2apache2: apr_sockaddr_info_get() failed for (none)
apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
… waiting ……….apache2: apr_sockaddr_info_get() failed for (none)
apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

解决办法:
打开 /etc/apache2/apache2.conf
在里面加入:

ServerName localhost

即可。
或者 打开 /etc/apache2/httpd.conf
在里面加入

ServerName localhost

然后重启服务器就ok了。

PS:其实这个只是警告没有配置默认主机名,可以不用理会的,如果你和我一样看不顺眼那警告信息,那就加个servername好了。

CentOS5 安装 Apache MySQL PHP Zend Optimizer

系统环境:Centos 5.8

更新系统内核
yum -y update

1、安装Apahce、PHP、MySQL、PHP连接MySQL库组件;
yum -y install httpd php mysql mysql-server php-mysql
安装MySQL扩展;
yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
mysqladmin -u root password ‘设置密码’; (引号内填密码)

查看mysql版本号
mysql -V

2、PHP的安装
yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-mcrypt

3、安装Apache扩展
yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql

4、安装Zend Optimizer
cd /usr/local/src
wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz
tar xzvf ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz

有暗转说明。。。

五、启动服务配置
/sbin/chkconfig httpd on (设置Apache为自启动)
/sbin/chkconfig –add mysqld (MySQL服务)
/sbin/chkconfig mysqld on (mysqld服务)
service httpd start (自启动httpd服务)
service mysqld start (自启动mysqld服务)

借助阿里云sh脚本Linux一键安装web环境

系统环境:CentOS6

卸载CentOS自带Apache

rpm -qa|grep httpd,查看与httpd相关软件包。
rpm -e httpd

因为这个一键安装是通过脚本编译按照的。
SO,首先需要解决编译环境问题

获取相关开源程序:
1、【适用CentOS操作系统】利用CentOS Linux系统自带的yum命令安装、升级所需的程序库(RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包,进行安装):
sudo -s
LANG=C
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

2、进入home目录建立tmp目录
mkdir -p /home/tmp
cd tmp

3、下载一键安装脚本
wget http://soft.phpwind.me/web/sh.zip

unzip sh.zip
chmod -R 777 sh
cd sh
./install.sh

出现了一个选择提示,进入web服务器版本的选择界面,可以根据需要选择apache或者nginx服务器
这里我们选择nginx,输入n,回车

参考:
linux一键安装web环境全攻略 http://help.aliyun.com/manual?helpId=129

Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创] http://blog.s135.com/nginx_php_v6/

一键安装web环境全攻略

配置Apache/2.2.16 (Debian) 支持 .htaccess

配置apache2.2 伪静态

第一步:修改sites-available中对应的网站配置文件(以默认配置文件default为例)
nano nano /etc/apache2/sites-available/default

找到以下语句

AllowOverride None

修改为

Options FollowSymLinks
AllowOverride All

第二步:载入rewrite.load(默认装好后apache是没有建立文件连接的)
#cd /etc/apache2/mods-enabled
#ln -s ../mods-available/rewrite.load rewrite.load

第三步:重启apache
/etc/init.d/apache2 restart