CentOS7搭建LNMP+WordPress一篇搞定

零、关于本文

本文首次完成于2019年5月12日,经历多次修改。本文所有的参考文献,均以超链接的形式给出。考虑到网上的部分教程不够完整,有的已经过时,我将我搭建环境的方法记录下来。

这篇文章适合:
1. 希望在CentOS7上搭建Nginx + MariaDB + PHP(简称LNMP)的用户,或在此基础上再搭建WordPress作为网站的用户。
2. 希望全部使用yum安装的和我一样懒得编译的用户。
3. 在CentOS7实体机或虚拟机或阿里云服务器上搭建环境的用户(没错,这些我都试过)。
4. 事无巨细的强迫症患者。

本人是一个高中生(啥也不懂的小白),这篇文章我将尽可能用朴实的语言叙述,但如有谬误,请不吝指教。希望这将成为你阅读的最后一篇安装文档,我也为这个目标努力。祝我们一路顺风!


一、安装操作系统

  1. 使用阿里云
    在购买服务器的时候,选择CentOS即可。这里,我选择的是CentOS7.3。等待一段时间后,便可以在控制台启动。其它云服务平台提供的其它操作系统软件,理论上来说只要是CentOS7,本文都适用。但请多多留意。

  2. 使用实体机

    1. 对于实体机,你需要在CentOS官网下载映像文件,然后使用烧录软件(可以使用软碟通,试用期内免费,网址:)烧录到U盘上。
    2. 插入U盘,进入BIOS,设置从U盘引导。保存重启,进入安装程序(与虚拟机无异)。安装好操作系统后,重新调整引导顺序,将从U盘引导改回从硬盘引导
      我遇到了一些问题。解决方案建议在安装前阅读。
    3. 引导成功后,在图形界面进行安装,与虚拟机的安装方法无异。请直接参考使用虚拟机的安装方法(从第2点开始),这里不多赘述。
  3. 使用虚拟机
    1. CentOS官网下载映像文件。
      下载虚拟机软件,使用虚拟机软件的虚拟光驱中,指向下载的操作系统映像文件,启动虚拟机即可。Windows下免费的虚拟机软件有Visual BoxVMVare WorkStation Player;收费的有VMVare WorkStation Pro,请支持正版(网上能找到序列号)。

    2. 选择语言——简体中文(英语也是可以的。如果你对自己的英语有自信的话,建议选择英语)。繁体中文可选中国台湾省中国香港特别行政区选择语言

    3. 进入安装界面。完成带有图标标记的内容才能进行下一步。

      1. 软件选择。
        我这里选的是基本网页服务器。如果你有GUI的需要的话,可以选择带GUI的服务器,或者GNOME桌面版。软件选择
      2. 时间和地点
        选择设置就好。地区似乎只能选上海。
      3. 网络和主机名。
        按提示设置一下就好。
      4. 安装位置
        可以自动让其选择分区()。如果你想手动配置,可以参考挂载点资料配置分区方法
        配置分区
    4. 开始安装。
      同时设置root和一般用户。为了演示方便,这里我选择只设置root账户,并将所有的密码设置为123456。如果后文的命令需要管理员权限,但我没有加上(我直接使用root用户),请在命令前面加上“sudo”。但我十分不建议你这么做
      我的建议是同时设置root用户和普通用户,并使用强密码。登录的时候使用普通用户登录。在需要权限的命令时使用sudo(需要更改/etc/sudoers文件)。
      设置账户


二、使用SSH远程连接服务器

对于云服务器,肯定是要远程连接的。对于实体机和虚拟机,我只想说我将使用ssh远程客户端。在这里,我是用的是XShell。
1. 下载XShell
XShell可以在其官网下载。如果不是用于商业用途,可以使用邮箱申请家庭和学生免费版
考虑到日后从本地传文件的需求,建议将XShell和Xftp一起下载,并安装。

  1. 连接
    在XShell中连接到服务器。如果不会配置,可以参见配置方法
    阿里云服务器的公网ip可以在控制台找到。如果你是虚拟机或者物理机,查看ip的方法是命令:
    bash
    ifconfig


    注意:阿里云的服务器默认使用root账户登录。如果对安全性要求较高的话,可以建立一个普通用户,还可以更改默认的22端口

三、(可选)修改计算机名

阿里云的计算机名是长长的乱码,看上去很不美观(强迫症重度患者)。我们可以使用命令将计算机名改掉。在CentOS7上,你可以:

sudo hostnamectl set-hostname [新的计算机名]      # 将方括号及里面内的内容换成新的计算机名
sudo reboot                                     # 重启

重新连接XShell即可。如果是CentOS6,则需使用可能的解决方案(本人没试过)。


四、(可选)升级已有软件并安装常用源和常用开发环境

  1. 升级源(参考《CentOS7 常用yum源配置》)
    # 备份源
    cd /etc/yum.repos.d/
    mv CentOS-Base.repo CentOS-Base.repo_bak
    
    # 安装源
    # 网易源
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
    # 阿里源
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    # epel源
    yum -y install epel-release
    
    # 更新
    yum clean all
    yum makecache
    
  2. 升级已有软件
    bash
    sudo yum update

    如果怕确认的麻烦,可以使用-y参数(以下的命令同理,不再赘述),例如:
    bash
    sudo yum -y update

五、安装Nginx

Linux平台上,主流的Web服务器有Apache和Nginx。Apache体量大一点,但是据说功能全面一些;Nginx体量小,但是占用资源少。这里我采用的是yum安装Nginx。如果想使用Apache,可以参考《CentOS7安装Apache》。如果想从源码安装,可以参考:《编译安装Nginx》。在本文中,我使用的yum进行安装。
1. 安装Nginx
可以使用默认源直接安装
bash
sudo yum install nginx

但是,这样安装的Nginx是比较稳定,但是偏老旧的版本。例如我现在使用这样安装的Nginx是2017年10月发布的1.12.2版,而我写下博客时,已是2019年5月。如果你和我一样,对网站的稳定性要求不高,又对新特性充满兴趣(玩玩就好,重要的站点还是稳定一些好),而且不怕BUG,参考Nginx官方文档,可以采用这样的安装方法:
1. 安装依赖
bash
sudo yum install yum-utils

2. 设置yum存储库
创建nginx.repo文件:
bash
vim /etc/yum.repos.d/nginx.repo

添加以下内容:

[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

[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

3. (可选)默认情况下,使用稳定nginx包。如果你想使用主线nginx包,可以运行以下命令:
    ```bash
    sudo yum-config-manager --enable nginx-mainline
    ```
4. 安装Nginx,运行:
    ```bash
    sudo yum install nginx
    ```
  1. 开启防火墙
    设置防火墙,放行http协议使用的端口。大陆服务器在公网上搭建网站是要向国家报备的哟!
    Nginx默认的端口是80。接下来,我们使用命令开启你选择的端口:

    sudo systemctl start firewalld                                            # 如果没有打开防火墙,可以使用这个命令打开
    
    sudo firewall-cmd --zone=public --add-port=[你选择的端口]/tcp --permanent  # 开启80端口
    # 例如:sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    sudo firewall-cmd --reload                                                # 重新载入防火墙
    

    更多关于防火墙的知识,可以参考:《CentOS7使用firewalld打开和关闭防火墙端口》。
    如果使用云服务器,须在其管理界面上放行对应端口。以阿里云为例,需要在云服务器的控制台的网络与安全组配置中添加安全组的入方向的安全组配置,放行对应端口:
    云服务器放行端口

  2. 修改Nginx配置文件

    1. 主配置文件
      使用vim打开主配置文件:
      bash
      vim /etc/nginx/nginx.conf

      如果你想对其进行详细修改,请参阅主配置文件的介绍
      我并没有对其进行大的修改,只是将倒数第二行的include注释掉,换成我自己的配置文件,使其不适用默认的配置文件。当然,不这么做,之后直接在默认的配置文件上修改也是可以的。即:
      #include /etc/nginx/conf.d/*.conf;
      include /etc/nginx/conf.d/myNginx.conf;
    2. 修改default配置文件
      cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/myNginx.conf    # 如果上一步没有修改include的话,可以不必复制,直接用vim打开default.conf即可。
      vim /etc/nginx/conf.d/myNginx.conf                                  # 打开配置文件
      

      打开后,你会看到:

      server {
          listen       80;
          server_name  localhost;
      
          #charset koi8-r;
          #access_log  /var/log/nginx/host.access.log  main;
      
          location / {
              root   /usr/share/nginx/html;
              index  index.html index.htm;
          }
      
          #error_page  404              /404.html;
      
          # redirect server error pages to the static page /50x.html
          #
          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
              root   /usr/share/nginx/html;
          }
      
          # proxy the PHP scripts to Apache listening on 127.0.0.1:80
          #
          #location ~ \.php{
          #    proxy_pass   http://127.0.0.1;
          #}
      
          # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
          #
          #location ~ \.php {
          #    root           html;
          #    fastcgi_pass   127.0.0.1:9000;
          #    fastcgi_index  index.php;
          #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
          #    include        fastcgi_params;
          #}
      
          # deny access to .htaccess files, if Apache's document root
          # concurs with nginx's one
          #
          #location ~ /\.ht {
          #    deny  all;
          #}
      }
      

      配置文件的含义,可以参考default.conf配置文件含义。第2行是网页端口(默认80),第9、19行后面是网页文件的位置,你可以修改为自己想放的位置。在这里,我使用默认的位置,不作修改。以下的修改很重要:

      1. 将第30-36行(含36行)前面表示注释的“#”号去掉(除非你不想使用PHP)。
      2. 将31行的html换成网页文件的位置(默认是/usr/share/nginx/html,需与第9行一致)。
      3. 在第10行前加入index.php
      4. (可选)第二行可以控制Nginx服务使用的端口。
      5. (可选)将第9行修改为网页文件的位置(否则使用默认/usr/share/nginx/html)。
      6. (可选)第3行改为网站的域名。
        修改后的文件如下所示:
      server {
          listen       80;
          server_name  localhost;
      
          #charset koi8-r;
          #access_log  /var/log/nginx/host.access.log  main;
      
          location / {
              root   /usr/share/nginx/html;
              index  index.php index.html index.htm;
          }
      
          #error_page  404              /404.html;
      
          # redirect server error pages to the static page /50x.html
          #
          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
              root   /usr/share/nginx/html;
          }
      
          # proxy the PHP scripts to Apache listening on 127.0.0.1:80
          #
          #location ~ \.php{
          #    proxy_pass   http://127.0.0.1;
          #}
      
          # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
      
          location ~ \.php {
              root           /usr/share/nginx/html;
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              #fastcgi_param  SCRIPT_FILENAME  /scriptsfastcgi_script_name;
              fastcgi_param  SCRIPT_FILENAMEdocument_root$fastcgi_script_name;
              include        fastcgi_params;
          }
      
          # deny access to .htaccess files, if Apache's document root
          # concurs with nginx's one
          #
          #location ~ /\.ht {
          #    deny  all;
          #}
      }
      
  3. 检验安装情况
    sudo systemctl enable nginx     # 将Nginx设置为开机自启
    sudo systemctl start nginx      # 启动Nginx
    systemctl status nginx          # 查看Nginx状态
    

    如果出现绿色的active(running),就说明Nginx安装完成,并成功运行。成功启动
    如果出现红色的failed,可能是配置文件出了问题(例如忘加分号),需要仔细检查。

  4. 访问测试
    在浏览器中,输入服务器的IP地址(如果非默认端口,需要在ip后面加上冒号再加端口号。例如你设置了1234端口,IP是123.123.123.123,你可以这么访问:123.123.123.123:1234),观察网页。如果看到了以下图片,说明Nginx配置完全成功。祝贺你!


六、安装PHP

PHP可以选择两个版本,PHP5和PHP7。据说PHP如果使用yum安装,可能会装不上一些拓展(但我没遇到过)。如果你有能力,欢迎编译安装。但是即便不编译,也是能用的。PHP5通过自带的源可以直接安装。一个命令可以搞定PHP5和PHP5的常见拓展(看需求装就好。如果你跟我一样懒,都装上也可以):

yum install php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt libmcrypt-devel php-fpm

但是,PHP7发布已经有好几年了,而且据说PHP7比PHP5的性能好很多,也将成为未来的主流。因此,对稳定性要求不高的我选择用yum安装PHP7.3
1. 添加源
bash
sudo yum install epel-release
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

2. 安装PHP及其拓展
bash
sudo yum --enablerepo=remi-php73 install php php-bcmath php-cli php-common php-devel php-embedded php-fpm php-gd php-imagick php-json php-mbstring php-mysqlnd php-opcache php-pdo php-pecl-mcrypt php-pecl-zip php-soap php-xml php-xmlrpc

“–enablerepo=remi-php73”可以控制PHP版本。例如安装PHP7.2,可以使用“–enablerepo=remi-php72”。
安装完PHP后,需要配置PHP-fpm(参考资料
1. 修改配置文件(如果使用Apache似乎可以跳过这一步)
打开配置文件
bash
vim /etc/php-fpm.d/www.conf

修改配置文件,将第24行的“user = apache”和第26行的“group = apache”分别修改为“user = nginx”和“group = nginx”。
2. 启动PHP-FPM
bash
sudo systemctl enable php-fpm # 设为开机启动
sudo systemctl start php-fpm # 启动
systemctl status php-fpm # 查看服务状态

3. 测试
bash
cd [网页路径] # 之前在myNginx.conf设置路径。若没修改该,则使用默认路径/usr/share/nginx/html。
vim test.php # 使用vim创建test.php文件

在test.php中输入:
php
<?php
phpinfo();
?>

然后在浏览器中输入:[主机ip][:端口]/test.php(使用默认端口,可省略“:端口”的内容。若出现类似下图的界面,说明安装成功。


七、安装MariaDB

  1. 安装MariaDB
    和PHP一样,MariaDB有两个主版本,5和10。yum默认安装的是MariaDB5。我选择的是MariaDB10。

    1. 安装MariaDB5(与MariaDB10二选一)
      bash
      sudo yum install mariadb-server mariadb

      然后就可以直接进入设置阶段了。
    2. 安装MariaDB10(与MariaDB5二选一)
      如果服务器器在国内,建议使用国内源。亲测国内源快很多。

      1. 使用国内源(与国外源二选一)
        在这里,参考yum配置安装MariaDB数据库,我们使用中科大的源。在中科大的镜像站,找到MariaDB的源。在其中,选择想要安装的版本。将源超链接添加到我给出的文本中:

        # MariaDB [可以写版本号,当然也可以不写。反正在注释里,就是给人看的] CentOS repository list
        [mariadb]
        name = MariaDB
        baseurl = [你选择的超链接]
        gpgkey = https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
        gpgcheck=1
        

        例如我想安装MariaDB10.3在CentOS7 64位上,我可以这么配置:

        # MariaDB 10.3 CentOS repository list
        [mariadb]
        name = MariaDB
        baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/
        gpgkey = https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
        gpgcheck=1
        

        可以采用命令将写好的配置文件添加到源,即将配置文件复制并粘贴到/etc/yum.repos.d/下的文件中(建议命名文件MariaDB.repo或类似的东西),可以采用命令:

        vim /etc/yum.repos.d/MariaDB.repo
        

        然后安装MariaDB:

        sudo yum install MariaDB-server MariaDB-client
        
      2. 使用官方源(与国内源二选一)
        进入MariaDB官网,点击下方某个版本的ReadMore,点击MariaDB APT and YUM Repositories Generator(直接点我的超链接也是可以的),依次选择Linux发行版(Choose a Distro)-发行版版本(Choose a Release)-MariaDB版本(Choose a Version)。在这里,我选择的是MariaDB10.3的版本。然后按照下面的英文提示,将一个类似:

        # MariaDB 10.3 CentOS repository list
        # http://downloads.mariadb.org/mariadb/repositories/
        [mariadb]
        name = MariaDB
        baseurl = http://yum.mariadb.org/10.3/centos7-amd64
        gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
        gpgcheck=1
        

        的文件将其复制并粘贴到/etc/yum.repos.d/下的文件中(建议命名文件MariaDB.repo或类似的东西)。可以采用命令:

        vim /etc/yum.repos.d/MariaDB.repo
        

        然后安装MariaDB:

        sudo yum install MariaDB-server MariaDB-client
        

        如果安装速度过慢,可以添加国内源。

  2. 设置MariaDB
    首先启动MariaDB:

    sudo systemctl enable mariadb         # 将MariaDB设为开机自启
    sudo systemctl start mariadb          # 启动MariaDB
    systemctl status mariadb              # 检查MariaDB状态
    

    启动MariaDB的一个安全脚本:

    sudo mysql_secure_installation
    

    脚本内容及翻译和选择如下:

    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
    SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

    注意:建议对所有生产中使用的服务器的MariaDB运行此脚本的所有部分。请仔细阅读每一步!(吓唬一下你)
    依次回答几个问题(Y表示是,n表示否):

    In order to log into MariaDB to secure it, we’ll need the current password for the root user. If you’ve just installed MariaDB, and you haven’t set the root password yet, the password will be blank, so you should just press enter here.

    Enter current password for root (enter for none):

    为了登录到MariaDB以保护它,我们需要当前的管理员密码。如果您刚刚安装了MariaDB,但尚未设置管理员密码,则密码将为空,因此您只需在此处按回车键(Enter)。
    输入当前管理员密码(输入回车表示无):

    Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation.
    Set root password? [Y/n]

    设置管理员密码以确保没有人能在没有授权的情况下能够登录MariaDB管理员账户。
    是否设置管理员密码?[Y/n]
    我建议设置Root密码,即回答Y并设置密码。

    By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment.
    Remove anonymous users? [Y/n]

    默认情况下,Mariadb安装有一个匿名用户,允许任何人登录MariaDB,而无需为其创建用户帐户。这仅用于测试,并使安装更加顺利。在进入生产环境之前,您应该删除它们。
    删除匿名用户?[Y/n]
    提示说得很清楚,看情况选择。这里我选择Y。

    Normally, root should only be allowed to connect from ‘localhost’. This ensures that someone cannot guess at the root password from the network.
    Disallow root login remotely? [Y/n]

    通常,只允许管理员从“localhost”连接。这样可以确保有人无法猜测网络中的管理员密码。
    不允许远程登录管理员用户?[Y/n]
    看情况选择。这里我选择Y。

    By default, MariaDB comes with a database named ‘test’ that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment.
    Remove test database and access to it? [Y/n]

    默认情况下,Mariadb附带一个名为“test”(测试)的数据库,任何人都可以访问该数据库。这也仅用于测试,在进入生产环境之前应将其移除。
    删除“test”数据库并访问它?[Y/n]
    看情况选择。这里我选择Y。

    Reloading the privilege tables will ensure that all changes made so far will take effect immediately.
    Reload privilege tables now? [Y/n]

    重新加载权限表将确保到目前为止所做的所有更改都将立即生效。
    现在重新加载权限表?[y/n]
    选择Y即可。

    MariaDB已经安装并设置完成。如果需要更改设置,可以重新运行这个安全脚本。

    至此,LNMP环境搭建完成。如果不想安装WordPress的话,到这里就可以了。

  3. 创建WordPress数据库,参考《CentOS7安装WordPress
    首先登录数据库:

    mysql -u root -p
    

    有的教程会直接使用root用户登录WordPress,余以为不然。这么做虽然很方便,但是终归还是不安全。在WordPress中,数据库的密码是以明文存放在其配置文件中,倘若服务器被攻破,数据库的密码等同于直接呈现给攻击者。因此,我们除了创建数据库外,还应创建一个只能访问WordPress的用户。
    输入密码,依次执行以下SQL命令:

    CREATE DATABASE [WordPress数据库名];     # 创建数据库
    
    # 创建访问WordPress数据库的用户和密码
    CREATE USER [访问WordPress用户名]@localhost IDENTIFIED BY '[WordPress数据库的密码,用单引号引起来]';
    
    # 设置选择的用户名访问WordPress数据库权限
    GRANT ALL PRIVILEGES ON [数据库名].* TO [访问WordPress用户名]@localhost IDENTIFIED BY '[WordPress数据库的密码]';
    
    FLUSH PRIVILEGES;                       # 刷新数据库设置
    EXIT;                                   # 退出数据库
    

    例如:

    CREATE DATABASE wordpress;                                                       # 创建一个名为wordpress的密码
    CREATE USER wpUser@localhost IDENTIFIED BY '123456';                             # 创建用户名为wpUser,密码为123456的用户
    GRANT ALL PRIVILEGES ON wordpress.* TO wpUser@localhost IDENTIFIED BY '123456';  # 赋予wpUser访问wordpress数据库的权限
    FLUSH PRIVILEGES;                                                                # 刷新数据库设置
    EXIT;                                                                            # 退出数据库
    

八、(可选)安装PHP MyAdmin

PHPMyAdmin是一个数据库管理软件,可以使你通过浏览器管理数据库。因为我没有这个需求,所以不打算安装PHPMyAdmin。如果你有安装PHPMyAdmin的需求,可以查阅《CentOS7安装PHPMyAdmin》。


九、下载WordPress

  1. 下载安装
    进入Nginx配置的网页路径的上一级文件夹。
    bash
    cd [WordPress的上一级文件夹]

    例如我的网页路径是/usr/share/nginx/html,我可以:
    bash
    cd /usr/share/nginx/

    然后,将路径的最后一级文件夹删掉(为接下来使用WordPress替代)
    bash
    sudo rm -rf [最后一级文件夹]
    # 例如:
    sudo rm -rf ./html

    下载并解压WordPress,然后重命名为网页最后一级目录。
    bash
    wget https://wordpress.org/latest.tar.gz # 从官网下载
    tar -zxvf latest.tar.gz # 解压tar.gz包
    mv wordpress [网页目录最后一级文件夹] # 例如mv wordpress html
    mv ./latest.tar.gz ./WordPressBackUp.tar.gz # 备份
  2. 设置权限
    这篇文章应该是全网唯一一篇搭WordPress讲Selinux配置的文章了。Selinux的权限问题居然困扰了我一个多月,而我一直把锅摔倒chmod上。主要是太菜了。。。

    1. 设置文件夹权限
      bash
      cd [网页路径的上一级文件夹] # 如果紧跟着上面做的话,你已经在WordPress路径的上一级文件夹了
      sudo chown -R nginx:nginx [WordPress最后一级文件夹] # 递归地将WordPress文件夹地权限赋给Nginx
      sudo chmod 0755 [WordPress最后一级文件夹] # 如果在后面出现了无法写入wp-config.php的问题,可以尝试暂时设置为0777,但是在安装完成后须重新设置为0755,并检查php-fpm是否配置正确。

      设置权限例如:
      bash
      cd /usr/share/nginx/
      sudo chown -R nginx:nginx html
      sudo chmod 0755 html
    2. 设置Selinux
      网上很多文章根本就不提Selinux或者是直接关掉Selinux,以免去权限控制的麻烦。其实,Selinux是非常有益于系统安全的一个工具,尤其是对于公网服务器。你当然可以关掉CentOS,但你将承担他人攻击的风险。
      bash
      sudo chcon -R system_u:object_r:httpd_sys_content_t:s0 [网页目录] # 赋予Nginx整个目录的读权限
      cd [网页目录]
      sudo chcon -R system_u:object_r:httpd_sys_rw_content_t:s0 wp-content # 赋予Nginx在wp-content目录下的读写权限
      sudo chcon system_u:object_r:httpd_sys_rw_content_t:s0 wp-config.php # 赋予Nginx对WordPress配置文件的读写权限
    3. 验证
      然后在浏览器中输入:[主机ip][:端口](使用默认端口,可省略“:端口”的内容)。如能看到WordPress的安装界面,或者是选择语言的界面,说明配置成功。

十、安装WordPress

  1. 进入WordPress!WordPress5.2正常情况下应该直接出现选择语言的界面。选择语言后等待一会,待其安装语言包。但是我在虚拟机上的WordPress出了一点问题,似乎直接进入了英文的开始界面。而我在阿里云上的服务器却没有问题。将其使用Chrome翻译如下:
  2. 输入数据库信息
  3. 运行安装
  4. 输入网站信息
  5. 成功!

如果遇到这种情况,就说明WordPress没有访问其目录的权限。

检查PHP-FRM的设置,如果没问题,就重做上一步设置权限的部分

理论上来说,这个似乎能解决一大部分问题。安装完成后,再用这么命令将WordPress目录修改权限为0755。
如果这么做依旧不行,那么只能在手动将这个文件写到WordPress目录中。

vim [WordPress路径]/wp-config.php

将内容复制进去,如果复制的内容最后缺少“?>”,需要在文件的最后加上“?>”后,运行安装(Run the installation)即可。


十一、手动安装中文语言包

正常情况下,在安装WordPress5.2时,就可以选择WordPress的语言。但是如果你和我一样运气太差,可以手动添加中文语言包。
在wp-config.php中,添加下面一行(官方教程说要找到: define(‘WPLANG’, ”); 一行,在第二个参数处填入zh_CN。但是我没找到。直接添加应该也是没问题的):

define(‘WPLANG’, 'zh_CN');

过一段时间,在WordPress的更新界面可以看到语言包的更新。更新即可。
如果你等不及,也可以去下载一个WordPress中文版。然后将[WordPress目录]/wp-content/languages文件夹复制到你的WordPress目录中对应的位置去。
什么?你问为什么不直接用WordPress中文版?WordPress中文版的更新速度稍慢,版本稍稍落后一点(毕竟要开发中文语言包)。而且,我之前能在中文官网能下载到中文版,但直到我发博客的这天,中文官网已经把路径换成英文版的路径。这就很神奇了……可能是WordPress安装时可以直接选择语言的缘故把?据说直接安装WordPress中文版会有一些问题(吃不到葡萄说葡萄酸)。


十二、完成

恭喜你,完成了LNMP和WordPress的安装!我也完成了这篇全文七千多词的博客(好气呀,写了好几天才写完,查了不少资料,还重新拿MarkDown重写一遍)。如有谬误,请不吝指教!希望这篇博客对你有帮助!

最后一次修改于2019年7月20日,转载请注明出处。

By 方笛

《CentOS7搭建LNMP+WordPress——本站环境搭建》有2条评论
  1. VMware Workstation感觉觉经常会出现一些莫名其妙的bug,在网上查了查错误代码也没有很好的解决方法,不知道是我的问题还是软件的问题。

    1. VMware的话,在我的实验中,似乎没有什么毛病,不知道你遇到的问题是什么呢?与我的博客中的操作有关吗?
      当你发现一个问题后,你需要确定问题的原因。你当然可以怀疑VM,但是对于如此成熟的软件,大多数时候是用户的操作不当。如果有这方面的怀疑,我建议你首先检查其相关的配置,例如虚拟网卡、虚拟机硬件配置(内存、CPU)是否够用等。
      当然,你也可以使用Visual Box,一个非常优秀的开源虚拟机软件。欢迎你与我交流你遇到的具体的问题。

发表评论