在CentOS 7操作系统上部署WordPress,使用Apache2作为后端并使用nginx做反代和负载均衡(负载均衡有空再写)。
这篇是之前写了一半的文章(使用 Nginx 反代基于 Apache2+PHP 的 Wordpress 站点)的重制版,懒得改之前的屎山了。
WordPress是一款能让您建立出色网站、博客或应用程序的开源软件。官网为WordPress。美观的设计,强大的功能,助您自由发挥心中所想。 WordPress既是免费的,也是无价的。(来自WordPress官网)
基础环境
操作系统
我这里采用了CentOS 7,内核版本为3.10.0-1160.90.1.el7.x86_64
,架构为x86_64
,截至发文时nginx版本为,Apache2版本为,PHP使用的版本为7.4,MySQL使用的版本为5.7,WordPress版本为6.2。
其中本文环境下防火墙和SELinux均已关闭,如遇到高位端口无法绑定请尝试允许SELinux授权。
Apache2部署
1. 安装
执行如下命令:
1 | yum install httpd openssl -y |
默认情况下httpd没有启动,先不要启动,先改配置文件。
2. 修改配置
- 打开配置文件
/etc/httpd/conf/httpd.conf
,找到并注释Listen 80
行;同时在该行下方再添加一行Listen 2048
。1
2# Listen 80
Listen 2048Listen用于指定httpd的监听端口,创建其他的VirtualHost前需要检查是否在这里让httpd监听了对应的端口。可以同时监听多个端口。
1
2
3# Listen 80
Listen 2048
Listen 2049 - 在配置文件
/etc/httpd/conf/httpd.conf
中搜索所有Options Indexes FollowSymLinks
,并全部改为Options -Indexes
(这个是目录展示,如果不关会有安全性问题)。 - 删除目录
/etc/httpd/conf.d
下的所有文件。
3. 启动Apache2
首先检查一下配置文件是否有错误:
1 | httpd -t |
如果返回Syntax is OK
,则使用下面的命令启动Apache2:
1 | systemctl start httpd |
此时在浏览器访问http://主机IP:端口号
看看是否能够访问到Forbidden页面。
安装PHP
- 安装基础依赖:
1
2yum install epel-release yum-utils gcc gcc-c++ -y
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y - 设定安装版本:其中最后的
1
yum-config-manager --enable remi-php74
remi-php74
可以替换最后两位数字调整为其他版本,比如替换为remi-php54
安装的就是PHP 5.4版本。具体的版本号可以查看清华源的镜像Remi’s RPM repository。 - 安装PHP和相关依赖:
1
2yum install -y php74 php74-php-devel php74-php-gd php74-php-pdo php74-php-mbstring php74-php-cli php74-php-fpm php74-php-mysqlnd
yum install --enablerepo=remi-php74 -y php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt php-mysqli - 查找并关联php:
首先看一下是不是有php:如果此时能够返回版本信息则跳过这一步;如果此时报错不存在则执行如下命令:1
php -v
如果此时能够返回版本信息则为php安装正确继续往下执行,否则就是php安装不成功。1
php74 -v
然后找一下php在哪:返回1
whereis php74
php74: /usr/bin/php74 /usr/share/man/man7/php74.7.gz
,得知php在/usr/bin/php74
。
最后复制一份即可:此时测试一下php命令:1
cp /usr/bin/php74 /usr/bin/php
有正确返回版本号即可。1
2
3
4[root@esc-hw ~]# php -v
PHP 7.4.33 (cli) (built: Feb 14 2023 08:49:52) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies - 重启httpd:
1
systemctl restart httpd
- 新建文件
/var/www/html/index.php
,在其中插入内容:1
phpinfo();
- 此时重新在浏览器访问
http://主机IP:端口号
看看是否能够访问到PHP相关信息页面。如果可以访问到,则可以删掉/var/www/html/index.php
文件,也可以先不删。
部署MySQL
安装
- 下载并添加仓库:
1
2
3yum install -y wget
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum localinstall mysql57-community-release-el7-10.noarch.rpm -y - 导入Key:
1
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
- 安装MySQL:
1
yum -y install mysql-community-server
- 启动MySQL:
1
systemctl start mysqld
配置
- 首先获取一下密码,第一次启动mysql会自动在日志中生成默认密码,默认日志位置为
/var/log/mysqld.log
。如果该文件是0KB(无内容)则mysql没有启动或启动失败。
找到A temporary password is generated for root@localhost:
行,后面的就是默认密码,第一次登录成功后请务必更改密码,修改后请牢记并妥善保管。 - 在shell中输入
mysql -u root -p
,并使用默认密码登录。 - 修改密码:
1
SET PASSWORD = PASSWORD('P@ssworc1!');
将其中的
P@ssworc1!
替换为你自己的密码,该密码即为MySQL的root密码。 - 创建数据库:该句命令的含义为创建一个名为
1
CREATE DATABASE IF NOT EXISTS wordpress DEFAULT CHARACTER SET = utf8mb4 DEFAULT COLLATE = utf8mb4_general_ci;
wordpress
的数据库,如果该数据库不存在的话。该数据库使用UTF-8编码,字符集为utf8mb4
,并且使用utf8mb4_general_ci
作为默认的排序规则。 - 创建专用用户:该句命令的含义为在
1
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'P@ssworc1!';
localhost
(本机)创建一个wordpress
的用户,该用户使用密码P@ssworc1!
认证,执行时请自行修改命令中的密码。请注意,绝对不要在生产环境中将其他用户的密码设置为root密码,这里仅为测试展示。 - 授予用户访问数据库的权限并强制刷新权限:这两句中的第一句的含义为授予一个名为
1
2GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;wordpress
的用户在localhost
范围内对数据库wordpress
的所有权限,并且允许该用户通过GRANT
命令进一步授予权限给其他用户。
因为本文前提条件下请求端(WordPress)和MySQL服务在同一台服务器上,因此直接授予在localhost
的权限即可。如果是部署在docker里或者分开部署的话则需要酌情修改访问范围。
配置 Wordpress
- 首先新建一个配置文件
/etc/httpd/conf.d/wp.conf
,并填入以下内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14# 该处设置的端口号必须和上面Listen设置的端口号一样
<VirtualHost *:2048>
# 服务器管理员,不重要
ServerAdmin LxnChan
# 服务器名称,不重要
ServerName LxnChan-Blog
# 服务器别名,填写你的域名,没有的话就填IP
ServerAlias <Domain Name>
# 文档位置,文件夹必须存在,网站的数据都在该文件夹内
DocumentRoot /var/www/wp
# 日志配置,一般不用动,可以改一下后面的文件名方便识别,配置的文件夹必须存在
ErrorLog /var/log/httpd/lxnchan-blog-error.log
CustomLog /var/log/httpd/lxnchan-blog-access.log combined
</VirtualHost> - 下载WordPress:解压到上面设置的文档位置:
1
wget https://cn.wordpress.org/latest-zh_CN.tar.gz -O wp_latest.tar.gz
1
tar -zxvf wp_latest.tar.gz -C /var/www/
- 此时访问
http://本机IP:端口号
应该可以访问到WordPress的设置页,先不要设置。
配置Nginx
安装
- 添加nginx源:
1
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 安装nginx:
1
yum install -y nginx
- 启动nginx:
1
systemctl start nginx
- 此时访问
http://本机IP
,如果可以访问到“Welcome to nginx!”的页面则为安装成功。
配置代理
- 新建配置文件
/etc/nginx/conf.d/wpp.conf
,输入如下内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30server {
# 监听端口,nginx这里用80
listen 80;
# 服务器名称,有域名填写域名,没有域名填写IP
server_name lxnchan.cn;
# 反代规则
location / {
# 填写刚才的Apache2的服务地址
proxy_pass http://127.0.0.1:2048;
# 反代header规则,一般不用动
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# WordPress所需的路径变换规则,一般不用动
rewrite ^/([_0-9a-zA-Z-]+/)?wp-admin$ /$1wp-admin/ permanent;
if (-f $request_filename){
set $rule_2 1;
}
if (-d $request_filename){
set $rule_2 1;
}
if ($rule_2 = “1”){
# ignored: “-” thing used or unknown variable in regex/rew
}
rewrite ^/([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) /$2 last;
rewrite ^/([_0-9a-zA-Z-]+/)?(.*.php)$ /$2 last;
rewrite /. /index.php last;
} - 测试配置文件:返回
1
nginx -t
syntax is ok
即可。 - nginx重载:
1
nginx -s reload
- 此时访问
http://本机IP
,应该会出现WordPress的设置页面。
配置WordPress
- 在浏览器打开
http://本机IP
,此时会出现WordPress的初始设置页面。 - 输入数据库相关的信息。
- 如果之前未作相关权限设置,则需要手动写入配置文件,将配置文件写入对应的路径即可。
- 设置站点相关信息,然后开始安装即可。
- 安装完成。