头图.webp

建站缘起

其实老早就有想要自己折腾一个网站的想法了,主要核心的想法是希望可以通过建站把自己所学的知识简单串一串。同时方便写一点有的没的,在面试的过程中也好说说自己个人的业余兴趣。同时在摸索过程中也可以激发自己的一些想法,毕竟如果继续过着低欲望生活,似乎也没有啥额外做各种折腾的必要。
在去年的时候,恰逢看见阿里云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。