前言
从本篇文章开始,我们就要正式开始搭建自己的博客了,激动吧!在开始前,请参考《从0到1: 一个博客的诞生(二) | “破费”篇》做好DNS解析,将你打算使用的域名解析到服务器的公网ip上。下面我们将根据LNMP架构(Linux+Nginx+Mariadb+PHP) ,一步步安装和配置相应的软件,搭建好博客。PS: 所有图片在大屏幕设备可以点击放大
Linux: GNU/Linux操作系统
Nginx: web服务器(一个软件)
Mariadb: mysql数据库闭源后,由社区接手并继续开发的开源替代品
PHP: wordpress程序的运行环境(运行时)
演示环境:
系统: Debian11(bullseye)
域名: thesky.love (请一律替换为你自己的域名哦 )
现在请打开Tabby终端软件,SSH远程连接自己的服务器,我们更新一下软件源并安装一些软件
代码: 全选
apt update && apt install curl wget libmagickcore-dev unzip
安装和配置Nginx
安装Nginx很简单,通过包管理工具apt
就是一条命令的事
代码: 全选
apt install nginx
我们可以输入如下命令看是否成功安装(按q键退出)
代码: 全选
systemctl status nginx
安装好Nginx后,我们需要编辑配置,将我们的网站用web服务器(Nginx)暴露出去,此处不理解没关系,先往下走。
申请ssl证书
你在浏览器访问网站时,一般会看到一个绿色的锁,这是因为该网站使用了https协议,这也是目前互联网可信体系的安全基石之一。我们搭建的博客最好配置一下,因为我认为很重要。下面我们通过
acme.sh
这个脚本申请SSL证书,以及配置证书的自动更新功能。在终端输入如下命令安装
acme.sh
脚本
代码: 全选
# curl https://get.acme.sh | sh -s email={你的邮件}
# 将下面的bobmaster@quanquan.space换成你的邮箱地址
curl https://get.acme.sh | sh -s email=bobmaster@quanquan.space
安装好后,我们需要重新SSH远程连接一次,这是为了使
acme.sh
的环境变量生效。重连之后,我们使用下面的命令申请SSL证书,这里我们通过DNS验证的方式来验证。
根据acme.sh的文档,对于权威DNS在阿里云的域名,我们需要使用
Aliyun domain API
操作。浏览器访问: https://ram.console.aliyun.com/users
点击创建用户按钮
填写登录名称(自己随便取名),访问方式选择
OpenAPI
确定后可能会出现安全验证,选择短信验证即可。
之后为刚创建的用户添加管理DNS解析的权限
添加步骤如图,确定后点完成即可。
最后将AccessKey ID和AccessKey Secret记录下来
返回Tabby终端软件,在终端中分别输入如下命令
代码: 全选
# 请将AccessKey ID和AccessKey Secret替换成你自己的
# Ali_Key是AccessKey ID
export Ali_Key="LTAI5tN9xxxxxxxxxxxxxxxx"
# Ali_Secret是AccessKey Secret
export Ali_Secret="7WVuCH1e6HIhxxxxxxxxx"
# 请将 thesky.love 换成你的域名
acme.sh --issue --dns dns_ali -k ec-384 -d thesky.love
PS: 后续如果需要为其它域名申请SSL证书,可以省略
export Ali_Key
和 export Ali_Secret
这两行命令,直接运行最后一行(把域名改为你需要申请SSL证书的域名即可)接下来配置证书的自动更新功能,一般SSL证书的有效期从90天~1年不等,配置自动更新是为了防止证书到期后我们忘记更新而导致浏览器访问网站报证书错误无法访问的问题。
我们使用如下指令
代码: 全选
# 我喜欢将证书存在 /etc/nginx/ssl 目录下,默认该目录是不存在的,我们先创建它
mkdir /etc/nginx/ssl
# 为我们的域名激活自动更新功能,注意这里的换行符(反斜杠)
# 把 thesky.love 换成你的域名
acme.sh --ecc --install-cert -d thesky.love \
--key-file /etc/nginx/ssl/thesky.love.key.pem \
--fullchain-file /etc/nginx/ssl/thesky.love.cert.pem \
--reloadcmd "nginx -s reload"
acme.sh
那一长串命令时,编辑器可能会提示是否粘贴多行,选择粘贴选项即可运行起来长这样
添加网站的配置文件
使用vim
编辑 /etc/nginx/conf.d/thesky.love.conf
文件
代码: 全选
vim /etc/nginx/conf.d/thesky.love.conf
然后粘贴如下内容(使用Ctrl+Shift+V或Shift+Insert粘贴),请将
thesky.love
换成你的域名,你可以先把下面的内容复制到一个文本编辑器中如notepad或者vscode,然后用查找替换的方式批量替换成你的域名,或者看下面介绍的vim
指令。
代码: 全选
server {
listen 80;
server_name thesky.love;
return 301 https://thesky.love$request_uri;
}
server {
listen 443 ssl http2;
root /var/www/wordpress;
server_name thesky.love;
ssl_certificate /etc/nginx/ssl/thesky.love.cert.pem;
ssl_certificate_key /etc/nginx/ssl/thesky.love.key.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:secp384r1;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/thesky.love.cert.pem;
ssl_dhparam /etc/nginx/dhparam;
resolver 127.0.0.1 1.1.1.1;
access_log /var/log/nginx/wordpress_access.log;
error_log /var/log/nginx/wordpress_error.log;
index index.php;
client_max_body_size 100M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_intercept_errors on;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "memory_limit=1G;\n post_max_size=100M;\n upload_max_filesize=100M;";
}
}
在vim中使用指令进行替换
按ESC键进入命令行模式,然后输入:%s/thesky.love/example.com/g
,之后回车就会将文本中的所有thesky.love
替换成example.com
,当然你使用的话就把example.com
改成你的域名输入指令
回车运行指令后
:wq
后按回车保存并退出。接下来在终端使用如下指令校验我们的配置是否有问题
代码: 全选
nginx -t
/etc/nginx/dhparam
这个文件不存在现在我们下载该文件
代码: 全选
curl https://ssl-config.mozilla.org/ffdhe2048.txt > /etc/nginx/dhparam
下载好后再次进行测试
代码: 全选
nginx -t
补充: 用命令行生成dhparam
代码: 全选
openssl dhparam -out /etc/nginx/dhparam 4096
代码: 全选
nginx -s reload
然后用浏览器访问 https://thesky.love (将
thesky.love
替换成你的域名)是不是很惊喜,当然目前啥都没有,博客程序也没有安装,所以这个网站是无法正常工作的,下面让我们继续后续的步骤。
安装和配置Mariadb数据库
根据wordpress的安装需求, Mariadb需要使用v10.4及其以上的版本。首先使用如下脚本配置Mariadb软件包仓库,具体参数解析请看: https://mariadb.com/kb/en/mariadb-packa ... e/#options
代码: 全选
curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version="mariadb-11.1" --skip-maxscale
接下来安装数据库
代码: 全选
apt install mariadb-server
安装好后,我们进行数据库的初始化
代码: 全选
mariadb-secure-installation
Switch to unix_socket authentication [Y/n] 输入n,然后回车
Change the root password? [Y/n] 输入y,然后回车
New password: 输入你打算设置的密码(注意密码不会显示出来,输入完成后,直接回车)
Re-enter new password: 再次输入你前面设置的密码,输入完成后,直接回车
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,然后回车
创建数据库
输入如下命令进入到数据库的shell终端环境代码: 全选
mariadb -u root -p
创建一个名字和密码都为wordpress的用户
代码: 全选
create user wordpress@localhost identified by 'wordpress';
创建一个名为wordpress的数据库
代码: 全选
create database wordpress
character set = 'utf8mb4'
collate = 'utf8mb4_unicode_520_ci';
把数据库wordpress的权限授权给用户wordpress
代码: 全选
grant all privileges on wordpress.* to wordpress@localhost;
刷新权限表使权限更改立即生效
代码: 全选
flush privileges;
到这里wordpress的数据库我们创建好了。
输入
\q
退出数据库shell环境安装php
wordpress后端采用php编写,因此我们需要安装php以及相关拓展使用下面的指令添加由sury项目维护的php软件包
代码: 全选
sh -c "$(curl -fsSL https://packages.sury.org/php/README.txt)"
因为web服务器我们用的是Nginx,所以我们需要安装php-fpm,再安装wordpress程序需要的一些php拓展
代码: 全选
apt install php8.2-fpm php8.2-{curl,intl,imagick,mysql,xml,zip}
安装好后输入如下命令检查php-fpm是否正常启动(按q键退出)
代码: 全选
systemctl status php8.2-fpm
安装wordpress博客程序
首先将工作目录切换到/var/www
代码: 全选
cd /var/www
下载wordpress博客程序
代码: 全选
wget https://wordpress.org/latest.zip
解压博客程序
代码: 全选
unzip latest.zip
将wordpress目录及其内所有文件的所有者修改为www-data(因为php-fpm的子进程是以www-data用户组运行的),我们使用下面的命令更改所有权
代码: 全选
chown www-data:www-data -R wordpress
可以看到wordpress文件夹的路径和Nginx配置中的
root /var/www/wordpress;
一致,接下来访问我们的网站,进行博客程序的安装浏览器访问: https://thesky.love (换成你的实际域名)
语言这里看个人喜好,这里演示的话我就选择简体中文吧,然后点继续按钮
接着填写数据库相关的信息,数据库名/用户名/密码都填wordpress,其它默认即可,然后点提交按钮
接着点击运行安装程序按钮
最后就是配置一些信息了,这里看个人喜好,反正后面还可以改的。
这里的用户名和密码就是以后你登录管理后台的凭证了,请记住哈
最后点安装WordPress就大功告成了!
接着点登录或者直接访问 https://thesky.love/wp-admin (换成你的域名哦)进入后台管理页面。
WordPress博客的玩法就看大家自行摸索了,很有趣的,比如各种主题和插件,当然万变不离其中的还是内容。
BONUS TIME 拉上感兴趣的朋友一起写博文?
有的时候自己写博客会不会有点枯燥呢?能不能拉上自己的小伙伴,大家一起写东西呢?当然,我们只需要添加新用户即可。
此处用户名只能是字母以及一些符号,不支持中文的哈,但是我们可以在创建用户后由用户手动在个人资料里修改显示的名称(如下图所示)。
登录链接: https://thesky.love/wp-login.php (换成你的域名)
总结
博客搭建好了,可以用手机或各种设备访问看看,高兴的同时也要保持警惕,因为数据是无价的,下一篇也是本系列的最后一篇文章,教大家如何备份博客。有任何问题可以加入我们的聊天室或直接回帖。
聊天室注册链接: https://chat.quanquan.space/signup_user ... msetg4xb9a
本系列文章均采用 CC BY-NC-SA 3.0 许可协议,转载请注明出处。