如何利用阿里云ECS创建一个Typecho博客
建站缘起
其实老早就有想要自己折腾一个网站的想法了,主要核心的想法是希望可以通过建站把自己所学的知识简单串一串。同时方便写一点有的没的,在面试的过程中也好说说自己个人的业余兴趣。同时在摸索过程中也可以激发自己的一些想法,毕竟如果继续过着低欲望生活,似乎也没有啥额外做各种折腾的必要。
在去年的时候,恰逢看见阿里云ECS打折,所以就购入了一台99元廉价服务器,指望着能够撑住一段时间的,做一个简单的博客系统。当时折腾比较多的就是各种NAS系统。但是随着对NAS的不断深入和了解,感觉其实普通用户对于NAS的用法和想法会随着技术深入而不断丧失兴趣。但好歹也是一个网站选题的方向,因此就暂时用NAS日志作为网站的名字进行了一次ICP备案。于是就诞生了这个网站名,随着后续的主题不断拓展,也许会变成别的网站名称,但终究会继续成为我自己的一家之言,并不会引入太多别的内容。
建站的历程
坦率来说,我对于Linux也是一知半解的,毕竟熟练使用Linux是一个非常陡峭的技术曲线,大多数人也都是了解一些基本的Linux皮毛。然后根据自己负责的模块不断挖掘深入。既然说起来需要建站,所以就离不开对于Linux的相关认知和理解。所以,如果是纯粹的小白,其实蛮适合通过这个项目进行上手演练的。毕竟学习枯燥的Linux图书,建站来的串讲知识点还是更加方便一点。当然最后还是需要补齐这方面的知识,恰逢最近看了网上有一些不错的教程《Linux 101》,可以留着后续研究。
选择合适的Linux 版本
绝大多数的网上教程,必然推荐使用CentOS系列的系统,或者是RHEL版本衍生系统(例如阿里云版本的Linux),本质上还是希望可以用平价的方案白嫖到稳定的红帽企业Linux版本。但是呢,随着RHEL收紧了相关授权,这一结果就导致大家较难获取到相关的稳定衍生版本。就我个人感觉而言,其实选择非RHEL的Linux版本似乎也没有什么不稳定的地方。因此我就选择了Debian 12 作为我的服务器系统版本。
配置SSH
这里简单说一下我的SSH是如何配置的,我使用的是密钥对的方案。然后下载了Putty作为SSH远程连接的方案,如果是纯新手玩家其实可以使用阿里云开发的工具,作为远程访问服务器的SSH工具。
进入正题,配置环境
简单来说,整个服务器配置其实就是分为以下几个部分:
基座:Debian 12
对外服务开放访问:Nginx
文本存放数据库:MariaDB
博客服务端组件:Typecho安装程序+程序组件PHP相关模块
第一步:安装Nginx
sudo apt update
sudo apt install nginx
安装完成后,启动 Nginx 服务,并设置为开机启动:
sudo systemctl start nginx
sudo systemctl enable nginx
第二步:安装数据库MariaDB
这里有个小插曲,其实开始我是计划使用MySQL的,但是在键入了安装命令后,发现Debian 12 自动给我下载使用了MariaDB。简单查询了一下原因,主要是MySQL已经被甲骨文收入囊中,而Debian更希望与长期控制在社区手中的开源项目合作,因此就会帮助用户选择使用MariaDB。同时由于是开源社区维护,所以也不用特别去添加甲骨文的软件源,这对于Linux小白来说更加友好,所以下面这段命令会让你在服务端上安装好MariaDB,而不是MySQL。
sudo apt install mariadb-server
在安装完成后,可以使用如下命令开启MariaDB
sudo systemctl start mariadb
sudo systemctl enable mariadb
安全配置 MariaDB
sudo mysql_secure_installation
注意,这里的最后一个命令会让你进入MariaDB的设置,中间会包含有管理员密码的设置,其余的设置均有相关的英文提示,认真仔细阅读英文提示,安装完毕即可。
第三步:安装PHP模块
尽管在Debian 12中自带有PHP 8.2,但是仍然需要相关PHP模块来调用每个部件。
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip php-intl
安装完毕后,我们的准备工作就完成了,接下来就是完成相关配置的过程了。
第四步:安装SSL证书
SSL证书是让网站从http协议切换至https的重要保证,这里有一家慈善公司提供的SSL证书可以完美满足个人开发者诉求,这里需要进行相关配置工具的配置:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx
运行 Certbot 命令后,选择您的域名并允许它修改 Nginx 配置以自动处理 SSL 证书。
测试证书自动续期:
sudo certbot renew --dry-run
配置Nginx
其实对于大部分普通小白用户而言,Nginx一直都是一个很神奇的存在。毕竟在使用正常电脑的过程中,谁会接触这个神奇的组件呢?但是当开始运维各种服务器的时候,就需要处处和这个神奇的组件打交道。
为typecho创建Ngin配置文件
sudo nano /etc/nginx/sites-available/typecho
这里有个神奇的工具叫作nano,可以理解为是Linux的记事本(参考Windows记事本)。参考配置文档如下:
server {
listen 80;
server_name your_domain.com www.your_domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name your_domain.com www.your_domain.com;
root /path/to/your/typecho;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.x-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
最后创建一个链接进行关联:
sudo ln -s /etc/nginx/sites-available/your_site /etc/nginx/sites-enabled/
再简单测试一下
sudo nginx -t
sudo systemctl reload nginx
安装 Typecho
cd /path/to/your/webroot
sudo git clone https://github.com/typecho/typecho.git
sudo chown -R www-data:www-data typecho
访问 https://your_domain.com 来开始安装和配置 Typecho。