如何在Ubuntu上手动部署适合WordPress的LNMP环境,并安装SSL证书?

平时自己部署LNMP环境的时候都是一遍弄一遍查资料,非常麻烦。于是我就想把我平时的工作做一个总结,这样以后自己在部署的时候不用再到处找资料。

1.更新系统

apt update
apt upgrade

2.添加非root用户并设置sudo

#新建用户
adduser your_user
#给新建用户添加sudo权限
adduser your_user sudo 

3.设置SSH证书登陆,并禁止密码和root用户登陆

#上传公匙
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]_ip
#编辑SSH设置文件
sudo vi /etc/ssh/sshd_config
PermitRootLogin no                       #禁止root登陆
PasswordAuthentication no                #禁止使用密码登陆
#重启SSH服务
sudo service ssh restart

在重启前记得测试一下是否可以用证书正常登录,再重启SSH服务。如果你还是不太明白可以看《Ubuntu服务器需要做哪些安全设置》

4.安装Nginx并优化

#安装Nginx
sudo apt install nginx
#编辑Nginx配置文件
sudo vi /etc/nginx/nginx.conf
#修改或添加以下内容
#开启gzip
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_disable "MSIE [1-6]\.";
#开启Nginx缓存
location ~* ^.+\.(eot|ttf|otf|woff|svg)$ {
    access_log   off;
    expires max;
}
location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
    access_log   off;
    expires      30d;
}                  
location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
    access_log   off;
    expires      2d;
}                
location ~* ^.+\.(html|htm)$ {
    expires      1h;
}
#保存退出
#重启Nginx服务
sudo service nginx restart

5.安装MySQL并优化

sudo apt install mysql-server-5.7
sudo mysql_secure_installation
sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password’;   #password 改成你的强密码
#这里为你的网站添加一个数据库
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
#设置数据库的用户名和密码
GRANT ALL ON wordpress.* TO 'yourusername'@'localhost' IDENTIFIED BY 'yourpassword';
FLUSH PRIVILEGES;
exit;         #退出MySQL

这里主要是安装并设置MySQL,修改root密码

6.安装PHP和必备插件

#安装PHP以及wordpress必需的插件
sudo apt install php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip
#编辑php.ini
sudo vi /etc/php/7.2/fpm/php.ini
#找到cgi.fix_pathinfo并修改为cgi.fix_pathinfo=0
#编辑Opcache配置文件
sudo vi /etc/php.d/opcache.ini
#修改以下内容
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
#保存退出
#安装redis
sudo apt install redis
#启动redis
systemctl start redis.service
#重启PHP
sudo service php7.2-fpm restart    
#重启Nginx
sudo service nginx restart

7.设置虚拟主机并测试工作

sudo vi /etc/nginx/sites-available/yourdomain   #新建虚拟主机配置文件
#添加一下内容:
server
{
listen 80;
listen [::]:80; ## listen for ipv6
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name fxdiary.com www.fxdiary.com;

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;
}

}
#保存退出
sudo nginx -t     #检查配置文件有何错误
sudo ln -s /etc/nginx/sites-available/fxdiary.com /etc/nginx/sites-enabled/
sudo systemctl reload nginx
sudo vi /var/www/html/info.php      #在网站目录添加一个php文件
#添加一下内容
<?php
phpinfo();
#保存退出
#访问这个文件看是否能够正常运行,如果可以正常运行
sudo rm -f /var/www/html/info.php      #切记删除它

8.安装Let’sEncrypt

sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-nginx
sudo certbot --nginx -d yourdomain -d www.yourdomian
#一路同意yes就行
sudo vi /etc/nginx/sites-available/yourdomain  #修改虚拟主机配置
#修改为以下内容
server {
listen 80;
listen [::]:80; ## listen for ipv6
server_name yourdomain www.yourdomain;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2; # managed by Certbot
server_name yourdomain www.yourdomain;

root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; allow all; }
location ~* \.(css|gif|ico|jpeg|jpg|js|png|woff)$ {
expires max;
log_not_found off;
}

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}

location ~ /\.ht {
deny all;
}

ssl_certificate /etc/letsencrypt/live/yourdomain/fullchain.pem; # managed $
ssl_certificate_key /etc/letsencrypt/live/yourdomain/privkey.pem; # manage$
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
#保存退出
sudo nginx -t     #检查配置
sudo service nginx restart     #重启nginx服务
#这里检验以下SSL有没有起效
#letsencrypt一般90天就得过期,这里设置自动更新
sudo crontab -e
18 18 * * 1 certbot renew --post-hook "systemctl reload nginx

9.设置防火墙

sudo ufw allow 22
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo ufw status

10.安装Wordpress并优化

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
sudo cp -a /tmp/wordpress/. /var/www/html
sudo chown -R www-data:www-data /var/www/html
#访问你的域名完成安装
#安装Redis Object Cache插件,拷贝object-cache.php到wp-content目录
cp wordpress/wp-content/plugins/redis-cache/includes/object-cache.php wordpress/wp-content/object-cache.php
#刷新网站然后测试缓存工作没有
redis-cli -h 127.0.0.1 -p 6379

WordPress的安装已经完成了,下面就是Wordpress的优化,大家可以访问《我用的WordPress 速度优化方法》了解详细信息。

11.总结

其实完全自己动手部署适合Wordpress的LNMP环境根本就没有必要了。如果是想自己多学习点东西,可以试试。如果是平时的工作中还不如用军哥的LNMP一键安装包,非常方便,安全和稳定性也不错。

发表评论

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