不使用安装脚本,手动安装的情况下,很多人第一次尝试手动安装 WordPress时,经常会出现什么该做的都做完了,但是访问域名就是没办法打开的情况。
这种情况首先应该查看日志排除问题,在命令行输入
journalctl -u nginx
如果发现是报错 permission denied。那一般就是与 selinux 有关的问题。
可以根据不同的内容排查问题,原因一般有下面几种:
1. nginx没有php的访问权限(php的启动用户不是nginx)
解决办法:编辑php-fpm配置文件,然后将user 和 group 改为 nginx
vi /etc/php-fpm.d/www.conf
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
2. nginx 没有 wordpress 目录的访问权限
解决方法:将wordpress目录的用户改成 nginx
chown -R nginx:nginx /var/www/wordpress/
find /var/www/wordpress/ -type d -exec chmod 755 {} \;
find /var/www/wordpress/ -type f -exec chmod 644 {} \;
这里的命令要改成你的 wordpress 目录再输入
类似的问题还有 ssl 证书的没有访问权限,解决方法也与上面类似。只不过要把目录名再改成你对应的目录位置
3. 上面的工夫都做了,什么问题都排查了,但是还是无法访问。这时一般就就要查看selinux 的上下文设置了。 运行下面的命令:
getsebool -a | grep 'httpd'
查看 httpd_can_network_connect –> off 是不是关闭的状态,如果是就要运行 setsebool -P httpd_can_network_connect on 开启与服务器与外界的连接
当然你说上面的都试过了,还是不行,别急,有关selinux的部分还没有讲完。
4. 检查wordress 目录的上下文
cd /var/www;
ls -lZ
查看输出:
drwxr-xr-x. 5 nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 4096 Nov 27 13:25 wordpress
可以发现wordpress 的上下文是 httpd_sys_content_t ,如果不一样就要改成一样的,输入:
semanage fcontext -a -t httpd_sys_content_t "/var/www/wordpress(/.*)?"
而且也要把wordpress需要写入权限的文件的上下文也改一改,否则会出现无法上传文件或者更改网站语言等问题
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wordpress/wp-content(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t /var/www/wordpress/wp-config.php
最后使其生效:
restorecon -R -v /var/www/wordpress/
完成后测试一下,一般都能正常访问wordpress的安装页面了
补充:
如果你输入上面的命令时提示
-bash: semanage: command not found
那么就应该先安装 semanage 的相关工具
yum -y install policycoreutils-python