LNMP环境搭建 WordPress站点

发布于 2020-05-03  822 次阅读


前言

WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。

WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。

WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。

准备工作

  • 云主机一台(Web服务器,用来存放网站程序、图片等,阿里云、腾讯云、金山云等都可以购买,我购买的阿里云主机)
  • 域名一个(我在阿里云万网注册了一个域名 chenshiyang.com,需要备案,域名需要解析到云主机)
  • WordPress程序(目前最新版本是5.4.1,邀请php版本在5.6以上,下载地址 中文版 英文版
  • https支持(可选,阿里云免费证书申请教程

安装

本教程是基于LNMP技术栈来搭建的,各个版本如下:

  1. Linux版本为CentOS7.4版本,
  2. Nginx版本为nginx1.12.2版本
  3. Mariadb版本为5.5.60-MariaDB MariaDB Server
  4. PHP版本为PHP 7.2.10

nginx安装

  • 新建一个wordpress用户来运行程序,并且使用下列命令设置为nologin,useradd -s /sbin/nologin wordpress
  • yum install nginx安装nginx
  • 修改/etc/nginx/nginx.conf文件启动用户为wordpress,如下
user wordpress;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
  • 启动nginx守护进程并设置为开机自启
    • systemctl start nginx
    • systemctl enable nginx
  • 将wordpress用户加入到nginx组usermod -a -G nginx wordpress,同时设置目录权限chmod 770 -R /var/lib/nginx/
  • ps命令查看nginx进程存在则nginx启动成功了,进程不存在查看80端口是否被占用

Mariadb安装

  • 执行yum install mariadb-server -y来安装mariadb
  • 启动Mariadb并设置为开机自启
    • systemctl start mariadb
    • systemctl enable mariadb
  • 执行mysql_secure_installation来加固Mariadb,你会看到要求设置数据库root密码、移除匿名用户、限制只能通过localhost登陆数据库root用户和移除test数据库,这里推荐全部选Y(YES),如下图所示,默认的数据库root密码为空

除此之外,还要把mariadb监听的地址改为127.0.0.1:3306

vim /etc/my.cnf.d/server.cnf打开Mariadb的配置文件

[mysqld]下面加上bind=127.0.0.1,如下图所示

执行systemctl restart mariadb重启数据库

执行netstat -lntp可以看到已经监听为本地回环地址了

创建数据库

在安装完mariadb数据库,并对其进行加固后,我们自然需要新建一个数据库来存放数据,这里首先我们用之前设置的root账号密码来登陆数据库mysql -uroot -p,并执行以下几条语句

CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # 创建数据库
GRANT ALL ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY '你的密码'; # 创建用户FLUSH PRIVILEGES;                              # 刷新数据库权限EXIT;

如果需要进行远程访问,需要添加3306端口到防火墙规则,并进行mysql授权
grant all privileges  on *.* to root@'%' identified by "password";
flush privileges;

PHP安装

  • CentOS的PHP默认版本为5.4,WordPress最新版本要求php版本在5.6以上,需要进行php升级
    • 首先移除当前的php安装包yum remove php* 
    • 更新源rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
    • 更新源rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    • 安装yum install -y php72w php72w-opcache php72w-xml php72w-mcrypt php72w-gd php72w-devel php72w-mysql php72w-intl php72w-mbstring
  • 安装php-fpm yum –y install php-fpm
  • 编辑php配置文件、php-fpm配置文件
vim /etc/php.ini
# 添加
extension=mysql.so
# 找到 extension_dir  并设为
extension_dir = "/usr/lib64/php/modules"

vim /etc/php-fpm.d/www.conf
user = wordpress
...
group = wordpress
...
listen = 127.0.0.1:9000
...
listen.owner = wordpress
listen.group = wordpress

# 重启 php 服务
systemctl restart php-fpm
  • 开机启动php-fpm
    • systemctl restart php-fpm
    • systemctl enable php-fpm

下载WordPress并配置Nginx

将WordPress下载到/home/wordpress/目录下wget https://wordpress.org/latest.tar.gz

tar zxvf latest.tar.gz解压WordPress文件

chown -R wordpress:wordpress wordpress将wordpress目录的所有者改为wordpress用户

进入wordpress目录修改wp-config-sample.php文件配置数据库,并将wp-config-sample.php重命名为wp-config.php

ftp连接失败在wp-config.php中配置以下几行

进入wordpress/wp-content目录创建upload目录并修改用户和组,没有这个目录用户上传文件会失败

nginx配置

在/etc/nginx/conf.d/目录中创建nginx配置文件

# https 证书需要申请,可以去阿里云申请免费证书
server {
        ssl on;
        listen  443;
        server_name     www.chenshiyang.com chenshiyang.com;
        root /cxldata/www/wordpress;
        index index.php index.html index.htm;

        ssl_certificate  /etc/nginx/cert/chenshiyang.pem;
        ssl_certificate_key /etc/nginx/cert/chenshiyang.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        access_log  /var/log/nginx/www.chenshiyang.com.log main;
        error_log /var/log/nginx/www.chenshiyang.com.log.err debug;
        rewrite_log on;
        charset      utf-8;

        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME /cxldata/www/wordpress$fastcgi_script_name;
                include fastcgi_params;
        }

        location /grafana {
                root   html;
                index  index.html index.htm;
                add_header 'Access-Control-Allow-Origin' '*';
                add_header Access-Control-Allow-Methods GET,POST,OPTIONS,DELETE;
                add_header 'Access-Control-Allow-Headers' 'userId,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
                proxy_pass http://127.0.0.1:3000;
                rewrite ^/grafana/(.*) /$1 break;
                proxy_set_header   Host $host;
        }

}

server {
    listen 80;
    server_name www.chenshiyang.com chenshiyang.com;
    rewrite ^(.*)$ https://$host$1 permanent;
}

nginx -t查看是否是否语法检查正常,如正常则nginx -s reload重载nginx,接下来看到wordpress页面成功打开了,就此大功告成!

安装插件、主题提示无法创建目录,请检查nginx.conf启动用户、php-fpm.d/www.conf user group,wordpress目录的用户和组是否完全一样


一名测试工作者,专注接口测试、自动化测试、性能测试、Python技术。