警告:本文是一篇纯新手向的博客建站教程,大神请回避!
缘起
建立一个个人博客的想法已经很久了,作为一个 03 年开始上网的网民来说有这个想法一点都不奇怪吧。但直到去年双十一看到腾讯云服务器打折才开始入坑,域名 + 轻量应用服务器大概 100 左右。
刚开始是使用 Gridea 做静态博客,当时还没有很好地科学上网途径,所以使用的是 coding page。后来因为对思源笔记的喜爱,爱屋及乌似的就想尝试使用 SOLO 博客。但是 SOLO 的建站花费了我大概十几个小时仍然不成功,原因主要是我网络知识的匮乏,一个 Nginx 反向代理就花费了我 5~6 个小时左右的时间,实际上我也是主要在处理域名与证书的问题。后来无奈转向了官方教程更丰富的Halo博客。
在经过了无数次的 debug 之后,我终于建成了我自己的博客啦!官方和网上的教程虽然已经很详细了,但是还是有很多坑是小白难以避免的,有些坑真的只有自己趟过才知道深浅。明明是一个很简单的问题,但对于小白来说往往要花费巨量的时间和精力才能解决。
出于对这几天艰辛建站历程的不舍,也出于一个老网民始终认为分享才是互联网唯一真理的认知,在此以一个小白的身份写下这篇面向小白的教程。
欢迎讨论和学习,如果你使用本教程成功建站,请在下面留下你的博客友情链接,方便PY😜。
本教程的代码均来自官方文档和其他博主教程,均已注明出处。
名词解释:
小白:非计算机科学、网络工程等 IT 专业背景,不会自己写代码,从未接触过网站建立等工作。以本人背景为例:毕业于核工程与核技术专业,从事环保行业,唯一熟悉一点的编程语言是汇编和 python。
安装简述
前期准备工作
请各位小白仔细阅读下述文字,确保自己完成前期准备工作。
- 知道使用⌈Ctrl⌋+⌈C⌋。
- 了解 Linux 操作系统的一点基础知识:知道 Linux 系统应当使用命令行操作,知道 Linux 有 root 账户和一般账户之分,掌握在 Linux 系统中粘贴方法:点击鼠标右键即可,不要使用⌈Ctrl⌋+⌈V⌋。
- 熟悉 IP 和域名的概念,了解其区别和关系。
- 请自行在腾讯云或阿里云购买域名和服务器,购买及后续步骤请自行百度(这个一定可以百度到)。购买域名后请及时安装 SSL 证书,购买服务器后请及时将服务器 IP 解析到域名。查看解析是否正确可以通过⌈win⌋+⌈R⌋呼出运行面板,使用
cmd启动 powershell,在 powershell 面板中使用 ping+IP 地址、ping+ 域名的方式检验连接情况。 - 具备一定的互联网检索能力,对代码没有畏惧心理,确保自己在有注释的情况下可以读完超过 3 行的代码块,以便可以复制报错代码进行搜索。
- 安装 WinSCP 和 putty 客户端,自行搜索掌握使用方法。Mac和Linux远程登录更加简单。
- 掌握远程登陆服务器的方法,知道设置服务器账户密码,知道一键重装服务器系统。
- 请确保自己有足够的耐心。有耐心是身为小白最大的美德,请抱有⌈一定不会一次成功⌋的想法进行后续操作。
安装 docker
无论是 Solo 还是 Halo,我都推荐使用 docker 安装(下文均以 CentOS 为例,Ubuntu 等其他版本 Linux 自行查找命令即可)。原因在于安装与后续管理都比较方便,这里贴一下我安装 docker 找到的比较好的代码:
来源:陈小C的博客
配置yum源
sudo yum install -y yum-utils sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io启动
systemctl enable docker --now配置加速
这里额外添加了docker的生产环境核心配置cgroup
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker测试:
输入 docker version 看到如下显示就安装成功了

拉取 Halo 官方镜像(同官方文档)
像我一样的小白推荐按下述代码一路复制即可,不要自行改动任何代码!
mkdir ~/.halo && cd ~/.halo
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
vim application.yaml
docker pull halohub/halo:latest创建容器
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo不清楚端口是什么概念的,请不要改动 8090:8090!
Tips:
对于身为小白的我们而言,需要去服务器的防火墙中添加「8090」端口,路径如下(以腾讯云为例):
- 登录腾讯云
- 点击右上角的控制台
- 选择轻量应用服务器或云服务器(你购买的服务器类型)
- 点击你的服务器,进入服务器详情页面,点击防火墙

5. 进入防火墙页面后,点击添加规则,按图中内容配置。

详细教程可以参考这篇:腾讯云轻量服务器开放端口方法教程 - 知乎
测试:
添加完之后稍等几分钟(3~5 分钟),访问 http://ip:8090 即可进入 Halo 的安装引导页面,为了避免未知的麻烦,请不要在这一步初始化 Halo,成功打开引导页面后就可以关闭了。
搭建 Nginx 反向代理和配置 SSL 证书
这一步的作业是为了实现以 https://域名 的形式访问博客,也就是让你的博客实现正常化访问。
申请 SSL 证书
- 在云服务商页面搜索「SSL 证书」,然后按照网页提示操作即可。
- 在 SSL 证书页面选择下载证书,下载时类型请选择 Nginx 一栏。
- 请记住证书下载后保存的路径,后续我们需要使用 WinSCP 将证书上传。

安装 Nginx
不要自行改动任何代码!
sudo yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-develyum install -y pcre pcre-develsudo yum install yum-utilscd /etc/yum.repos.d/vi nginx.repo # 创建nginx.repo文件
[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true[nginx-mainline]name=nginx mainline repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true
yum install nginxnginx -v # 查看版本
cd /etc/nginx
Tips:
使用 WinSCP 将存在本地的数据上传到服务器中:
- 使用 WinSCP 登录你自己的服务器,注意用户名与密码要匹配
- 进入服务器根目录,也就是路径中只有一个「/」
- 找到 etc 文件夹,进入后再找到 nginx 文件夹,确保路径为 /etc/nginx
- 在 WinSCP 中进入本地文件夹,找到你下载的 ssl 证书文件,全部选定(Ctrl+A)
- 点击上传,在弹出的对话框中按「确定」
下面是关键步骤:
修改 conf 文件:将域名改成自己的域名,SSL 证书文件也记得要使用你自己下载的 SSL 证书文件名。
vi nginx.conf按「i」键,进入 insert 模式,按如下代码修改,记得将域名和证书文件名替换成你自己的。
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name catchersun.cn www.catchersun.cn;
return 301 https://$host$request_uri;
}
server{
listen 443 ssl;
server_name catchersun.cn www.catchersun.cn;
ssl_certificate "/etc/nginx/catchersun.cn.pem";
ssl_certificate_key "/etc/nginx/catchersun.cn.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8090;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
}
}将 server_name 后的内容换成你自己的域名,将 ssl_certificate、ssl_certificate_key 换成你自己的证书文件。比如我的 ssl_certificate 证书文件是 weiblog.fun_bungle.crt,请根据你下载的证书种类来修改。
3.修改完后按「Esc」,退出 insert 模式,检查一下填写的信息是否正确。请一定要确认信息!

4.输入「:wq」,保存并退出。
重启 Nginx 服务
nginx -c /etc/nginx/nginx.conf # 如果重启不成功报错端口绑定失败,可以先查找占用端口的进程并强制杀死,之后重新启动。如下:# netstat -tunlp | grep 80 # kill -9 $pid启动成功之后可以进入服务器提供商的⌈SSL 证书⌋-⌈监控状态⌋页面进行查询。在没有绑定之前,监控状态时异常,如果绑定成功之后,监控状态会变为⌈正常⌋。如下图所示:

完成 Halo 博客的初始化
Halo 博客至此就完成了建站的全部工作,输入你自己的域名后就可以开始使用 Halo 博客了 😘
如果这篇文章对你的博客建站有帮助,请在下方评论留下你的站名。
如果建站过程中还是有不顺利的地方,也请在下方评论反馈。
也欢迎来我的博客逛逛。
祝顺!
