史上最详细wordpress部署教程 centos7+mysql+nginx+php7
部署环境系统:CentOS 7 x64环境:nginx + mysql5.7 + php7.4版本:wordpress 5.7.x安装nginx安装yum工具,vim编辑器,wget下载工具sudo yum install yum-utils vim wget -y用vim编辑器添加repo文件sudo vim /etc/yum.repos.d/nginx.repo添加yum源,按i键进入输入模式
部署环境
系统:CentOS 7 x64
环境:nginx + mysql5.7 + php7.4
版本:wordpress 5.7.x
安装nginx
安装yum工具,vim编辑器,wget下载工具
sudo yum install yum-utils vim wget -y
用vim编辑器添加repo文件
sudo vim /etc/yum.repos.d/nginx.repo
添加yum源,按i键进入输入模式,添加以下代码,按esc键退出编辑模式,输入 :wq 保存文件
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
执行安装nginx
sudo yum install nginx
安装完成测试nginx是否安装成功,显示版本号则表明安装成功
[root@MiWiFi-RA67-srv ~]# nginx -v
nginx version: nginx/1.20.1
nginx 启动、停止、重启和状态,需要哪个功能就执行对应命令即可。
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl status nginx
启动nginx,并设置nginx开机自启
systemctl start nginx
systemctl enable nginx
打开浏览器输入localhost 或者服务器ip地址,看到nginx的欢迎页面表明已经安装并启动
至此nginx安装完成
配置nginx
编辑nginx的配置文件,如果路径不一致,用whereis nginx找到安装路径,或者使用 find / -name nginx.conf 查找nginx配置文件。
vim /usr/local/nginx/conf/nginx.conf
修改server里面的 index索引文件,添加index.php
location / {
root html;
index index.html index.php index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}
在注释virtual host的位置添加虚拟host
# another virtual host using mix of IP-, name-, and port-based configuration
include vhost/*.conf;
保存文件并退出,在当前目录下添加vhost文件夹,在添加域名的配置文件
makdir vhost
vim yourhost.conf
添加以下内容
server {
listen 80;
# 下面youhost换成你自己的域名
server_name yourhost.com www.youhost.com;
# 下面这个是wordpress部署路径
root /usr/local/nginx/html/wordpress;
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}
}
输入**:wq**保存并退出,测试配置文件
root@MiWiFi-RA67-srv ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
配置文件通过测试,重新启动nginx
nginx -s reload
至此nginx初步配置完成。
安装mysql 5.7
这里说明一下选mysql5.7是为了避免一些坑,使用mysql8 后面安装wordpress初始化的时候需要更改数据登录密码认证的方式,如果选择了mysql8后面安装的时候链接不上数据库可以参考这篇博客修改密码认证:wordpress安装时连接不上MySQL8.0,还有需要注意的是使用yum install默认安装的数据可能是MariaDB,并且可能是低于10.x版本的,wordpres要求MariaDB最低版本是10.x,为了安装的便捷选择了mysql5.7。
回归主题,下载mysql安装源
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
下载后进行源安装
yum -y install mysql57-community-release-el7-10.noarch.rpm
已安装:
mysql-community-client.x86_64 0:5.7.34-1.el7
mysql-community-libs.x86_64 0:5.7.34-1.el7
mysql-community-libs-compat.x86_64 0:5.7.34-1.el7
mysql-community-server.x86_64 0:5.7.34-1.el7
作为依赖被安装:
mysql-community-common.x86_64 0:5.7.34-1.el7
net-tools.x86_64 0:2.0-0.25.20131004git.el7
替代:
mariadb.x86_64 1:5.5.68-1.el7 mariadb-libs.x86_64 1:5.5.68-1.el7 mariadb-server.x86_64 1:5.5.68-1.el7
完毕!
查看数据运行状态
systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
启动数据库
systemctl start mysqld
[root@MiWiFi-RA67-srv ~]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 六 2021-06-26 22:58:46 CST; 15s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 9898 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 9880 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 9901 (mysqld)
CGroup: /system.slice/mysqld.service
└─9901 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
6月 26 22:58:43 MiWiFi-RA67-srv systemd[1]: Starting MySQL Server...
6月 26 22:58:46 MiWiFi-RA67-srv systemd[1]: Started MySQL Server.
看到数据库已经启动了,另外附上数据库的停止和重启命令。说明一下命令最后mysql后面有个d。
systemctl stop mysqld
systemctl restart msyqld
查看数据密码
grep "password" /var/log/mysqld.log
获得密码后,执行命令输入密码进入数据库,输入密码的时候控制台没有反应,输入完成回车即可
mysql -uroot -p
更改数据库密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
开启远程链接(根据需要开启,远程链接可能增加安全风险),下面的192.168.0.1 换成自己的ip地址
grant all privileges on *.* to 'root'@'192.168.0.1' identified by 'password' with grant option;
更新数据库权限
flush privileges;
创建wordpress数据库
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;;
添加wordpress数据库用户,并设置使用刚刚创建的数据库权限,
create user 'wordpress_user'@'localhost' identified by '123456789';
grant all privileges on wordpress.* to 'wordpress_user'@'localhost' identified by '123456789';
运行结果
mysql> create user 'wordpress_user'@'localhost' identified by '123456789';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on wordpress.* to 'wordpress_user'@'localhost' identified by '123456789';
Query OK, 0 rows affected, 1 warning (0.00 sec)
查看数据
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| blog |
| mysql |
| performance_schema |
| wordpress |
+--------------------+
5 rows in set (0.01 sec)
退出数据库
exit;
至此数据库已基本准备完啦,下面安装php。
安装PHP 7.4
下载php源码前要回到根目录执行一下cd命令即可
cd
wget https://www.php.net/distributions/php-7.4.20.tar.gz
下载完成解压
tar -zvxf php-7.4.20.tar.gz
安装php前先安装编译需要用的依赖包,不同版本的os可能会有些差异,根据自己实际安装中缺少的依赖包进行补充安装
yum install gcc g++ cmake autoconf libxml2-devel libxml2 -y
进入php源码目录并准备安装
cd php-7.4.20
./configure --enable-fpm --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-openssl --with-mhash --without-sqlite3 --without-pdo-sqlite --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-openssl-dir --with-zlib-dir --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib-dir --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-xsl --enable-mysqlnd-compression-support --with-pear --enable-opcache
如果有依赖包缺失安装对应依赖包以后还是不能找到依赖可以尝试安装 依赖包的-devel包,我遇到的是oniguruma依赖
yum -y install http://down.24kplus.com/linux/oniguruma/oniguruma-6.7.0-1.el7.x86_64.rpm
yum -y install http://down.24kplus.com/linux/oniguruma/oniguruma-devel-6.7.0-1.el7.x86_64.rpm
重新执行上面configure命令通过后进行安装
sudo make
sudo make install
创建配置文件,并将其复制到正确的位置。
cp php.ini-development /usr/local/php/php.ini
cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
cp sapi/fpm/php-fpm /usr/local/bin
需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。
将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。
打开 php.ini:
vim /usr/local/php/php.ini
定位到 cgi.fix_pathinfo= 并将其修改为如下所示:
cgi.fix_pathinfo=0
开启wordpress需要的扩展,找到 extension部分,去掉前面的 ;修改成下面几项(如果不能识别就加上 .so ex:curl.so)
extension=curl
extension=mbstring
extension=zlib
在启动服务之前,需要修改 php-fpm.conf 配置文件,确保 php-fpm 模块使用 nginx 用户和 nginx 用户组的身份运行。
查看用户组命令,确认是否存在nginx用户,保证nginx和php是同一个用户组,包括nginx下面的html部署的文件夹和文件用户组都是nginx
cat /etc/group
vim /usr/local/etc/php-fpm.d/www.conf
找到一下内容并修改
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = nginx
group = nginx
修改以下几处数据库链接(根据实际情况来可能有些不存在的)
pdo_mysql.default_socket=/var/lib/mysql/mysql.sock
mysqli.default_socket =/var/lib/mysql/mysql.sock
mysql.default_socket = /var/lib/mysql/mysql.scok
退出保存,然后处理php-fpm配置文件,进入到下载的php源码文件夹下找到配置文件并复制
cd
cp /php-7.4.20/sapi/fpm/php-fpm.conf /usr/local/etc/php-fpm.conf
编辑配置,
vim /usr/local/etc/php-fpm.conf
找最后一行include=这里,修改成配置文件所在文件路径
include=/usr/local/etc/php-fpm.d/*.conf
添加测试php文件
echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
启动php-fpm
/usr/local/bin/php-fpm
如果报错缺少curl文件去到源码包中ext文件夹下编译安装对应组件扩展即可,只做一个示范。
cd
cd php-7.4.20/ext/curl
/usr/local/bin/phpize
./configure --with-curl --with-php-config=/usr/local/bin/php-config
make && make install
如果找不到config.m4文件,就把config0.m4重命名一下即可
mv config0.m4 config.m4
注意:如果启动了php-fpm以后,更改php.ini配置文件以后要重新加载配置文件
pkill php-fpm
/usr/local/bin/php-fpm -c /usr/local/php/php.ini
打开浏览器查看php-fpm是否正常工作,访问http://ip/index.php 或者 http://localhost/index.php
至此php安装完成,中途遇到了问题不要着急,耐心一点总会有解决办法的。
安装wordpress
终于来到主角了。
同样先回到系统根目录下载安装包
cd
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
解压
tar -zxvf wordpress-5.7.2-zh_CN.tar.gz
复制到nginx部署目录,这里的部署路径有时候会因为安装nginx方式不同导致路径不同,自行查找nginx的安装路径和nginx的默认页面部署路径,
mv ./wordpress /usr/local/nginx/html/
注意:安装wordpress前进行目录文件权限设置
因为nginx所属的用户组是nginx(注意也有可能是apache),所以要把wordpress文件夹全部设置成nginx用户所属,总之要保证nginx和部署目录的用户组一致。
首先查看并确认nginx用户组
cat /etc/passwd
[root@MiWiFi-RA67-srv wordpress]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
nginx:x:996:995:nginx user:/var/cache/nginx:/sbin/nologin
来到部署目录设置wordpress用户和用户组
cd /usr/local/nginx/html/
chown -R nginx.nginx wordpress
cd wordpress
chmod 777 *
访问wordpress部署的域名进行安装,
输入之前创建的数据库名:wordpress和用户:wordpress_user 密码:123456789,
验证通过后创建用户和密码,
等待安装完成自动跳转到登录界面,输入刚刚创建用户名和密码,登录到后台,至此所有安装已完成。
注意配置wordpress的时候如果你改成https协议访问,遇到重定向次数过多不能打开的问题,修改wordpress目录下的wp-config.php文件添加以下两行
/** for https */
$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
终于到了尾声了,这篇博客写了8个小时左右,一个晚上和一个下午,写完的时候已经天黑了,真的是写的好辛苦,如果你觉得写的还不错可以请我喝杯茶*-*,或者请多多点赞,多多关照。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)