蛋皮のhome

从此唯行乐,闲愁奈我何。

Linux从零开始安装配置LNMP环境的WordPress

本文为教程贴,简单易用,这里首先感谢 https://lnmp.org/ 网站提供的LNMP环境(linux+nginx+mysql+php)的一键安装包,才使得整个安装过程变得更加简单。之前我也是深受苦恼,个人安装了很多次的环境总是因为各种原因没能成功,特此在此开一篇将一些小小的经验分享给各位。安装过程重复三五次都是有可能的。但也祝各位能够一次性安装成功。

首先,你要准备一个 Linux 系统,这里主要以CentOS系统为主进行介绍,绝大多数的 web 服务器都会选择 CentOS 作为服务器系统,一是轻巧,没有桌面占用资源,据说 CentOS 在无桌面的情况下系统在内存占用只有50Mb;二是广泛,网络上关于它的教程和资料随处可见,如果出现系统方面的问题也能容易搜到解决方法。

注意,此安装过程,前提是对 Linux 系统的基础指令有初步的了解,比如 cd cp vim sudo 等等。如果不了解,安装过程可能会有你不熟悉的方面。因为本文不是 Linux 讲解介绍文,遇到相关问题还请自行百度。

安装全程的参考文档:
https://lnmp.org/install.html
https://www.cnblogs.com/medsonk/p/8888558.html
https://blog.csdn.net/u013693952/article/details/90710956

主要参考文档见上方,也感谢上方文档的分享。

警告:本文编辑时间为2020年6月15日,考虑到软件是时时刻刻更新的,如果你当前看到这个文章的时间与本文编辑时间差别越大,那么本文的参考价值就越小。包括我在参考上方的网址的时候,也遇到了一些版本更新导致与教程文档介绍不一致的问题。所以,在参考前,请先对比日期和软件版本。你的安装过程也可能会有与我介绍的不一致的风险。

感谢你能耐心看到这里,我相信你最终一定能安装成功的,我也尽量介绍详细且简略一点。下面开始正式教程:


如果你的Linux系统是在本地,那么你只需要考虑防火墙的问题(可能还要考虑端口映射的问题,这里不对这个做详细说明)。输入以下指令可以直接关闭防火墙,更多防火墙的修改指令(比如只开放80端口)可以自行搜索。

# 暂时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙
systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld

如果你的Linux系统是在阿里云或者腾讯云等云平台上,除了本地防火墙的配置,还需要配置安全组规则,需要在入方向配置80和443端口,我的目前就是配在阿里云。这里我无法一一介绍,配置一般也挺简单,还请自行百度。

然后,请先安装几个安装包,有可能你已经安装过了。

sudo yum install -y screen wget vim

然后,新建一个文件夹,比如我在根目录下新建:

# 新建文件夹
mkdir /lnmp
# 进入文件夹
cd /lnmp

进入文件夹之后,通过screen新建窗口:

screen -S lnmp

(我也才发现screen是真的好用,具体的相关指令可以自行百度,大概就是新建一个窗口,在该窗口运行的进程不会受到你当前的连接窗口影响)

然后开始下载并安装LNMP的1.7版本的一键安装包:

wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh lnmp

该过程可以参考查阅官网版本:https://lnmp.org/install.html,因为我的安装过程也是参考官网版本的。官网全中文,无需担心英文看不懂。如果发现官网更新了版本,则建议尽量按照官网的来。

运行如上命令后,出现如下提示:

如果你的内存少于等于1G,请勿选择 MySQL 5.6 以及以上版本。
如果你的CentOS版本为5,请关闭此页面。(现在应该没有人还使用CentOS 5.x版本了吧?)
如果你的CentOS为8.0+,能且只能选择MySQL 8.0,其他版本无法选择MySQL 8.0

选择好之后继续进行下一步,我的系统是CentOS 7.8,选择了MyQSL 5.7。之前安装了CentOS 8.1版本,后续编译系统总是卡死,但CentOS 7.8发现没问题。

然后需要设置MySQL的root密码。如果输入错误,请按住Ctrl + Backspace进行删除。注意,后续的PHP密码也是这个,请妥善设置与保存!

然后,后续回车下一步:

这一步直接输入y并回车即可,然后下一步:

如果你的CentOS系统8.0+,请选择PHP 7.4,其他版本不支持。
如果你的内存小于等于1G,请勿再考虑 PHP 7 版本

这里我选的是PHP 7.3,wordpress推荐的PHP版本好像是 PHP7.3 以及以上版本。然后按回车进入下一项:

这个是选择内存优化,我直接回车跳过了。

然后出现提示:“Press any key to install…or Press Ctrl+c to cancel”之后,按回车键开始安装。安装过程几十分钟到几小时不等,受配置和网速等因素影响。

如果安装完成,则会出现以下内容:

然后按 Ctrl + C 退出即可。你也可以通过浏览器访问你的设备地址进行查看,如果出现lnmp安装成功的页面,也代表安装成功。安装成功后,便可以继续安装wordpress。

首先登陆mysql:

mysql -u root -p

输入你之前设置的MySQL密码,注意,输入的密码不可见。输入完成后按回车即可。

然后创建用于WordPress的数据库(注意后续的数据库操作指令最后都有一个英文分号,请勿遗漏):

CREATE DATABASE wordpress_db;

创建用于wordpress的MySQL用户:

CREATE USER wordpress_user@localhost;

设置新建用户的密码:

SET PASSWORD FOR wordpress_user@localhost=PASSWORD("password");

配置用户权限:

GRANT ALL PRIVILEGES ON wordpress_db.* TO wordpress_user@localhost IDENTIFIED BY 'password';

刷新一下权限:

FLUSH PRIVILEGES;

然后输入 exit 退出即可。创建过程中,请自行保存新建的用户名和密码信息,后续会用到。

然后下载WordPress,网址为https://cn.wordpress.org,可以手动下载然后通过Xftp传到CentOS上也可以按照下面的教程下载。

这里我们在根目录下创建down文件夹并进入文件夹。

mkdir /down
cd /down

然后下载WordPress的最新版本的压缩包并解压:

wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar -zxvf wordpress-5.4.2-zh_CN.tar.gz

解压好之后,复制文件到/home/www路径下:

cp -r wordpress /home/www

进入/home/www/wordpress路径下并将config的模板文件复制出来准备配置:

cd /home/www/wordpress
cp wp-config-sample.php wp-config.php

修改权限分配给www用户

chown -R www:www /home/www/wordpress

然后进入非常重要的环节:修改配置文件,这里用过vim编辑器修改:

vim wp-config.php

按照以下格式修改,注意你之前新建与设置的MySQL的用户和密码并将其填入:

// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress_db');

/** MySQL数据库用户名 */
define('DB_USER', 'wordpress_user');

/** MySQL数据库密码 */
define('DB_PASSWORD', 'password');

/** MySQL主机 */
define('DB_HOST', 'localhost');

然后开始配置Nginx,Nginx的配置文件在路径 /usr/local/nginx/conf/nginx.conf 中

vim /usr/local/nginx/conf/nginx.conf

然后按照如下方式修改:

server
{
    listen 80 default_server reuseport;  # 默认端口为80
    server_name example.cn;  # 这里修改成你的IP地址或者域名
    index index.html index.htm index.php;
    root  /home/www/wordpress;   # wordpress的所在路径

    ... # 此处在中间省略若干已生成的代码

    # 下面的代码在server中的最后加上,用于修改WordPress内的固定链接,并且请不要添加中文注释,中文注释可能会带来其他问题
    location / {
        root /home/www/wordpress;
        index index.php index.html index.htm;

        if (-f $request_filename/index.html) {
            rewrite (.*) $1/index.html break;
        }
        if (-f $request_filename/index.php) {
            rewrite (.*) $1/index.php;
        }
        if (!-f $request_filename) {
            rewrite (.*) /index.php;
        }
    }
}

配置完成后,按下Esc键并输入 :wq 保存并退出。然后重启nginx:

service nginx restart

完成后便可以通过 ip/wp-admin 来访问你的 WordPress 初始化界面。

至此,WordPress已经完全可以运行。做到这一步的朋友们,终于可以松口气了。WordPress也完成了配置和安装,后续根据提示进行操作即可。

如果想要升级为SSL证书的,就是可以访问为https这种协议的,可以使用acme协议从 letsencrypt 生成免费证书。

主要参考官网为:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

请在参考以下教程时,以官网教程为主!

首先,获取acme脚本:

curl  https://get.acme.sh | sh

然后,进入到 ~/.acme.sh/ 路径下:

~/.acme.sh/

创建一个bash的alias,方便后续调用:

alias acme.sh=~/.acme.sh/acme.sh

等号左边为快捷调用名,等号右边为具体路径。这样就可以在任何路径下都可以调用执行此文件。

然后开始准备生成证书:

acme.sh --issue -d example.com -d www.example.com --webroot  /home/www/wordpress/

注意,里面需要增加网址的就加上 -d example.com 即可,最后为网站的路径。

完成后会显示你上面的每个域名都会有的两个证书文件。这个时候准备开始复制证书,这里不建议直接将该证书路径复制到nginx的配置文件里,也不建议手动用cp的方式复制,建议用acme的方式来复制证书,具体操作如下:

首先创建用于存放证书的路径:

mkdir /usr/local/nginx/conf/ssl

然后执行以下操作:

acme.sh --install-cert -d example.com \
--key-file       /usr/local/nginx/conf/example.com.key \
--fullchain-file /usr/local/nginx/conf/example.com.cer \
--reloadcmd     "service nginx force-reload"

这样就完成了证书的签发,但还需要注意,还要在nginx的配置文件里启用ssl。

在server里面添加(注意路径和域名地址):

listen 443 ssl;
ssl_certificate /usr/local/nginx/conf/ssl/example.com.cer;
ssl_certificate_key /usr/local/nginx/conf/ssl/example.com.key;

然后重启一下nginx:

systemctl restart nginx

启动正常后,即可正常通过ssl访问网站了。

发表评论

Your email address will not be published. Required fields are marked *.

*
*
You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>