LEMP环境安装WordPress

  • by

服务器到期了,没有钱的我准备换个更便宜的,只能用Nginx重新搭建了。

这次把原来的www.sec.kim改成了sec.kim,不知道搜索引擎会不会删掉老的收录。

LEMP环境安装WordPress

简介

WordPress是一款能让您建立出色网站、博客或应用的开源软件。美观设计、强大功能与自由建立任何您所想的。WordPress同时兼具免费与无价。

LEMP(通常称作LNMP),是一组能够运行PHP动态网站和Web应用程序的环境,由(L)Linux系统、(E)Nginx中间件、(M)MySQL数据库、(P)PHP语言组成。

接下来开始安装。

创建sudo用户

0x01 登录root用户

# ssh root@ip

0x02 创建新用户

# adduser wordpress

0x03 设置sudo权限

# usermod -aG sudo wordpress

安装LEMP环境

以下所有操作均在刚刚创建的用户wordpress下操作

0x01 安装Nginx中间件

$ sudo apt update && sudo apt install nginx

此时用浏览器访问服务器IP即可看到Nginx欢迎页面

0x02 安装MySQL、配置数据库

$ sudo apt install mysql-server

使用MySQL自带的安全配置工具进行配置,根据需求自行配置

$ sudo mysql_secure_installation
Would you like to setup VALIDATE PASSWORD plugin? [Y/N] N
Remove anonymous users? [Y/N] Y
Disallow root login remotely? [Y/N] Y
Remove test database and access to it? [Y/N] Y
Reload privilege tables now? [Y/N] Y

添加数据库和数据库用户,配置数据库用户权限

这里将创建一个名为wpdb的数据库,和一个用户名密码都是wpauth的数据库用户

$ sudo mysql -u root -p
mysql> CRETAE DATABASE wpdb;
mysql> CREATE USER 'wpauth'@'localhost' IDENTIFIED BY 'wpauth';
mysql> GRANT ALL PRIVILEGES ON wpdb.* TO 'wpauth'@'localhost';
mysql> FLUSH PRIVILEGES;

0x03 安装PHP并配置Nginx

$ sudo apt install php-fpm php-mysql

配置Nginx指向目录/var/www/wordpress,接下来wordpress程序将安装在此处

$ sudo nano /etc/nginx/sites-available/wordpress

server {
        listen 80;
        root /var/www/wordpress;
        index index.php index.html index.htm index.nginx-debian.html;
        location / {
                try_files $uri $uri/ =404;
        }
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }
        location ~ /\.ht {
                deny all;
        }
}

链接刚刚创建的配置文件到sites-enabled目录。在Nginx中,sites-available存放配置文件,而sites-enabled中的文件才是被启用的配置。

$ sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/

取消Nginx默认站点的配置文件链接

$ sudo unlink /etc/nginx/sites-enabled/default

测试Nginx配置是否成功后重新加载配置

$ sudo nginx -t && sudo systemctl reload nginx

0x04 测试PHP文件是否解析

创建一个phpinfo文件到wordpress目录测试php文件是否能够被Nginx解析

$ sudo mkdir /var/www/wordpress && echo '<?php phpinfo();' >> /var/www/wordpress/index.php

使用浏览器访问服务器IP,如果成功展示phpinfo页面,则表示配置成功

部署WordPress

直到现在,已经完成了用户添加、数据库配置、服务器运行环境配置,接下来开始正式部署WordPress

0x01 下载WordPress

$ sudo wget https://cn.wordpress.org/latest-zh_CN.tar.gz

解压到/var/www/目录下,在解压前先删除前面测试创建的目录

$ sudo rm -r /var/www/wordpress

$ sudo tar zxvf latest-zh_CN.tar.gz -C /var/www/

0x03 安装WordPress

配置目录www-data权限

$ sudo chown -R www-data:www-data /var/www/wordpress

使用浏览器访问IP,根据提示输入数据库名、数据库账户密码、登录使用的账户密码

其中需要手动创建wp-config.php,按照提示将文件粘贴到/var/www/wordpress/wp-config.php文件中即可

0x04 配置目录权限

如果没有意外,现在已经可以登录后台了,但是安装插件、主题等功能需要配置FTP

可以通过配置目录权限解决这个问题,之后再也不需要FTP来安装主题和插件了

$ sudo find /var/www/wordpress/ -type d -exec chmod 750 {} \;
$ sudo find /var/www/wordpress/ -type f -exec chmod 640 {} \;

配置HTTPS证书

0x01 设置WordPress

在配置之前,需要登录后台修改“WordPress地址(URL)”和“站点地址(URL)”为你想要的域名

比如https://sec.kim

0x02 下载证书

Nginx证书文件有两个,分别是

*.key 和 *.pem

将文件上传到Nginx目录下的cert目录中

这里使用SSH工具自带的文件管理工具上传的,可以自行下载SFTP工具进行上传

$ mkdir /etc/nginx/cert

0x03 配置Nginx

还是对/etc/nginx/sites-available/wordpress文件进行修改

$ nano /etc/nginx/sites-available/wordpress

现在开始对下面的配置文件进行解析,一共3个server,分别解析80、443、443端口

通常两个server就够了,配置3个是为了让域名变成sec.kim而不是www.sec.kim(按照SEO中的规则,sec.kim为顶级域,而www为二级域)

第一个server,解析80端口,将sec.kim和www.sec.kim都重定向到https://sec.kim下

第二个server,解析443端口,将https://www.sec.kim重定向到https://sec.kim下

第三个server,解析443端口,完成的解析https://sec.kim下的所有请求

server {
    listen 80;
    listen [::]:80;
    server_name sec.kim www.sec.kim;
    rewrite ^(.*) https://sec.kim$1 permanent;
}
server {
    listen 443;
    server_name www.sec.kim;
    ssl on;
    ssl_certificate /etc/nginx/cert/3078936_www.sec.kim.pem;
    ssl_certificate_key /etc/nginx/cert/3078936_www.sec.kim.key;
    rewrite ^(.*) https://sec.kim$1 permanent;
}
server {
    listen 443;
    index index.php index.html index.htm;
    server_name sec.kim;
    root /var/www/wordpress;
    ssl on;
    ssl_certificate /etc/nginx/cert/3078936_www.sec.kim.pem;
    ssl_certificate_key /etc/nginx/cert/3078936_www.sec.kim.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
                try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }
    location ~ /\.ht {
                deny all;
    }
}

配置完重新加载配置即可

$ sudo systemctl reload nginx.service

0x04 解析域名

将域名解析到服务器IP就好

发表评论

电子邮件地址不会被公开。 必填项已用*标注