起因,原博客搭建毒瘤宝塔面板的Dockers内,一月份就已经准备在现服务器上重新搭建一遍网站,将博客迁移过来。
然后……拖延症晚期……
接着大概在三月份左右,图床自用的图床挂掉了,导致网站内部分图片也挂掉了,但是当时忘记网站图片使用的是图床上的图片,且一直咕咕咕,导致没有发现网站图片挂了。前两天在群里被群友提醒网站出事了才想起来。
然后就顺手把网站迁移了。

本次使用阿里云的轻量云服务器,Linux发行版为RockyLinux8.6。

部署LNMP(Linux、Nginx、MySQL/MariaDB、PHP)

Nginx

安装Nginx

sudo yum install epel-release -y
sudo yum install nginx -y

启动并启用Nginx

sudo systemctl start nginx
sudo systemctl enable nginx

检查Nginx状态

sudo systemctl status nginx

MariaDB

安装

sudo yum install mariadb-server mariadb -y

启动并启用Maria DB

sudo systemctl start mariadb
sudo systemctl enable mariadb

安全配置MariaDB

sudo mysql_secure_installation

按照提示设置root密码、删除匿名用户、禁止root远程登录等。

PHP

安装PHP及其Nginx模块

sudo yum install php php-fpm php-mysqlnd -y
sudo yum install php-mysqli php-mbstring php-gd php-json php-curl -y

编辑PHP-FPM配置文件,将用户和组更改为Nginx

sudo nano /etc/php-fpm.d/www.conf

找到以下行并修改:

user = nginx
group = nginx

启动并启用PHP-FPM

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

创建数据库

进入数据库操作

mysql -u root -p

进入数据库后,创建一个数据库,并设定用户名(your_username),密码(your_password),数据库名(your_database_name)

CREATE DATABASE your_database_name;
CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON your_database_name.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;
EXIT;

配置SSL证书

安装Certbot

sudo yum install certbot python3-certbot-nginx -y

获取并安装 SSL 证书
其中your_domain.com改为你的域名

sudo certbot --nginx -d your_domain.com

按照提示操作,Certbot 会自动修改 Nginx 配置文件以启用 HTTPS,并重启 Nginx 服务。

配置Nginx

创建网站文件夹,可自行更改为其他目录

mkdir /home/typecho

创建站点配置文件

sudo nano /etc/nginx/conf.d/typecho.conf

typecho.conf的内容

server {
    listen       80;
    server_name  andyarno.top;

    # 重定向 HTTP 请求到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen       443 ssl;
    server_name  andyarno.top;

    root   /home/typecho; #网站根目录
    index  index.php index.html index.htm;

    ssl_certificate /etc/letsencrypt/live/andyarno.top/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/andyarno.top/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

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

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /home/typecho;  #网站根目录
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 配置静态资源
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
        access_log off;
    }
    # 配置上传目录
    location /usr/uploads {
        alias /home/typecho/usr/uploads;
        autoindex off;
        sendfile on;
        sendfile_max_chunk 1m;
    }
}

重新加载nginx配置

sudo systemctl reload nginx

创建一个info.php检验是否配置成功
将命令中的/home/typecho替换成自己的网站目录

echo "<?php phpinfo(); ?>" | sudo tee /home/typecho/info.php

访问IP/info.php,若可以看到PHP信息页面,则配置成功。

安装typecho

cd /home/typecho
sudo wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip
unzip typecho.zip
rm -f typecho.zip
sudo chown -R nginx:nginx /home/typecho
sudo chmod -R 755 /home/typecho

访问网站,根据网站指引安装typecho