Centos 7 搭建 WordPress

环境准备

系统 CentOS 7.9,本次采用 LNMP 搭建 (Linux + Nginx + Mysql + Php)

我之前使用的是 OneinStack 自动安装的 LNMP 环境,但后来发现该工具存在后门风险。为了确保系统的安全性和稳定性,建议大家自行通过百度或其他可靠渠道手动安装 LNMP 环境。

创建数据库

登录数据库

1
mysql -uroot -p密码

创建名字为 wordpress 数据库

1
CREATE DATABASE wordpress DEFAULT CHARACTER SET UTF8;

创建用户,用户名尽量避免直接用 root

  • 用户名:admin
  • 密码:admin123
1
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin123';

给新用户授权所有的 wordpress 库中的表

1
GRANT ALL ON wordpress.* to 'admin'@'localhost';

刷新权限

1
flush privileges;

退出 mysql

1
exit;

关闭防火墙

1
systemctl stop firewalld.service

安装 WordPress

解压压缩包

1
unzip wordpress-6.4.1-zh_CN.zip

重命名为 wordpress

1
mv  wordpress-6.4.1-zh_CN  wordpress

移动 wordpress 文件夹到 nginx 目录下

1
mv wordpress /usr/local/nginx/html/

修改 nginx.conf 文件,将 root 改为 html/wordpress,这样前端在访问时,输入的地址是:IP:端口,而不是 IP:端口/wordpress

/images/documents/Centos7搭建WordPress/1.png
(图1)

重新加载 nginx

1
nginx -s reload

启动 nginx 服务

1
systemctl start nginx

设置网站目录可写的权限

1
chmod -R 755 /usr/local/nginx/html/

输入网址 http://ip/wp-admin/setup-config.php 进行在线初始化
后台登陆地址:http://ip/wp-admin

问题及解决

无法上传主题

发现无法上传主题,需要输入 FTP,这一般是用户组的问题,在 ngnix.conf 中第一行查看用户组名,发现用户组是 www www,而 wordpress 文件夹的用户组为 root,那我们就将 wordpress 文件夹的用户组改为 www www

1
chown -R www:www wordpress

通过域名访问

目前是通过 ip 访问的,修改 nginx.conf 文件,通过域名访问

/images/documents/Centos7搭建WordPress/2.png
(图2)

又发现设置域名后,只有访问首页地址栏显示的是 域名,访问其它页面地址栏显示的仍是 ip,网上的方案都是在 设置-常规 中修改 WordPress地址站点地址,我采用这种方法后,发现虽然访问任何页面,它的地址栏显示的都是域名,但是页面的样式加载不出来,这是因为页面样式仍是通过 ip 获取的

/images/documents/Centos7搭建WordPress/3.png
(图3)

我的做法是 WordPress地址站点地址 不要修改
在当前使用的主题目录下 /usr/local/nginx/html/wordpress/wp-content/themes/,找到 funtions.php 文件,添加下列代码

1
2
update_option('siteurl','http://piliqiu.com');
update_option('home','http://piliqiu.com');

然后,再次访问后台会发现 WordPress地址站点地址 自己变了,变成了 http://piliqiu.com,此时访问任何页面地址栏显示的都是域名,并且样式也可以加载出来了

伪静态

WordPress 的后台,进行以下设置

/images/documents/Centos7搭建WordPress/4.png
(图4)

nginx.conf 文件中,添加 location / {} 中的内容,实现伪静态

/images/documents/Centos7搭建WordPress/5.png
(图5)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#伪静态
location / {
	index index.html index.php;
	if (-f $request_filename/index.html){
		rewrite (.*) $1/index.html break;
	}
	if (-f $request_filename/index.php){
		rewrite (.*) $1/index.php;
	}
	if (!-f $request_filename){
		rewrite (.*) /index.php;
	}
}

注意:添加完伪静态规则后,记得要执行下面的代码,重新加载 nginx 配置

1
2
nginx -s reload
systemctl start nginx

防盗链

为了防止网站上的图片资源被引用,增加服务器的负担,加入防盗链,在 nginx.conf 文件中配置
注意: if( 之间是有空格的,不加空格报错 unknown directive 'if($invalid_referer...119,记得加空格

/images/documents/Centos7搭建WordPress/6.png
(图6)
1
2
3
4
valid_referers piliqiu.com;
if ($invalid_referer) {
	return 401;
}

在对方在新的标签页打开网站上的图片时,让防盗链返回一个错误的页面 401.html

/images/documents/Centos7搭建WordPress/7.png
(图7)

我们需要在 root 后面指定 401.html 所在的位置

/images/documents/Centos7搭建WordPress/8.png
(图8)

401.html 需要依靠其他的 css、js 文件,我们在 401.html 中指定
我们在 nginx.conf 文件中,root 后是这样写的:root html/wordpress,所以,默认是从 html/wordpress 这个层级开始找的,所以,js、css 的位置从这层目录开始

/images/documents/Centos7搭建WordPress/9.png
(图9)
/images/documents/Centos7搭建WordPress/10.png
(图10)
/images/documents/Centos7搭建WordPress/11.png
(图11)

0%