部署环境

系统: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个小时左右,一个晚上和一个下午,写完的时候已经天黑了,真的是写的好辛苦,如果你觉得写的还不错可以请我喝杯茶*-*,或者请多多点赞,多多关照。
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐