Skip to main content

建站过程

记录个人网站的建站过程。

购买服务器

个人服务器 99 一年的完全够用了,阿里云99元服务器,以后会不会涨价不知道,每年有一次 99 续一年的机会。另外腾讯也有类似活动,腾讯云,视个人喜好购买。

网站发布

本节默认你已经准备好了自己要发布的网站内容,本网站使用 Docusaurus 构建,内容使用 Markdown 编写。

登录服务器

有多种方式可以登录服务器,详见 ECS远程连接方式概述

总结来说大概两种:

  1. 浏览器在线连接;需要先登录阿里云账号(登录后进入控制台,找到服务器实例,点击远程连接)
  2. 通过 SSH 连接;需要先设置服务器密码(可进入阿里云控制控制台,找到服务器实例,点击重置密码,详细教程),然后使用 SSH 客户端连接。

SSH 客户端多种多样,最简单的是用系统自带的,在 命令行 中输入 ssh root@123.123.123.123(换成自己服务器的公网 ip),然后输入密码,即可连接到服务器(首次登录可能需要输入 yes 信任服务器)。不想记 ip 地址可以把这行命令保存成 bat 文件,密码也不想敲的话可以使用其他客户端。

安装 nginx

Docusaurus 构建出的是静态页面,需要一个 web 服务器来支持访问,这里使用 nginx。

# 安装
yum install nginx

# 启动
systemctl start nginx

# 测试本地访问,以下命令能获取到html内容说明nginx启动成功
curl localhost

安全组配置

此时网站服务只能服务器本机访问,需要配置安全组,允许公网访问。

在阿里云控制台,找到服务器实例,点击 安全组,然后点击 配置规则,在 入方向 添加规则:

优先级协议端口范围授权对象
100自定义 TCP80源:所有IPv4(0.0.0.0/0)
100自定义 TCP443源:所有IPv4(0.0.0.0/0)

其中 443 端口是 https 的默认端口,80 端口是 http 的默认端口。

安全组配置

在浏览器中输入 http://123.123.123.123(换成自己服务器的公网 ip),如果能访问到 nginx 的 Welcome 页面,说明安全组配置成功。

上传代码

服务器上传和下载文件的方式有多种,详见 上传或下载文件

这里以 scp 命令为例,在本机的命令行中执行以下命令将编译好的代码上传到服务器的 /var/www/html 目录下:

# 上传
scp -r d:/path-to-your-website/build root@123.123.123.123:/var/www/html

-r 表示递归上传整个目录,root 是用户名,123.123.123.123 替换成自己的服务器公网 ip,/var/www/html 是服务器上网站根目录。

修改 nginx 配置

主要是将 nginx.conf 文件中的 root /usr/share/nginx/html; 修改为 root /var/www/html;

可以上服务器直接修改 nginx 配置:

vim /etc/nginx/nginx.conf

也可以先把配置文件下载到本地,修改后再上传到服务器。

# 下载
scp root@123.123.123.123:/etc/nginx/nginx.conf d:/

# 用记事本修改

# 上传
scp d:/nginx.conf root@123.123.123.123:/etc/nginx/nginx.conf

会发现 scp 每次上传或下载文件都要输入密码,不适合频繁操作,此时可以使用 sftp :

# 登录
sftp root@123.123.123.123

# 下载
get /etc/nginx/nginx.conf d:/

# 上传
put d:/nginx.conf /etc/nginx/

# 退出
exit

另外 sftp 可以借助一些可视化客户端工具操作更方便,比如 FileZilla

修改完成后,不要忘了进服务器重启 nginx :

systemctl restart nginx

在浏览器中输入 http://123.123.123.123(换成自己服务器的公网 ip),测试是否成功,可能会有缓存,可以 Ctrl + F5 强制刷新一下浏览器。

注册域名

此时网站只能通过 ip 地址访问,不方便记忆和传播,这时候可以购买一个域名,阿里云域名,不同后缀只是价格不同,使用上没区别,视自己经济情况购买。

ICP 备案

域名买完不能直接使用,首先需要 ICP 备案,阿里云 ICP 备案,详细教程请看 ICP备案流程

域名解析

ICP 备案完成后需要配置域名解析,将域名和服务器 ip 地址绑定,以阿里云为例,进 域名控制台 > 域名列表 > 操作 > 解析 ,然后点【添加记录】,每一项怎么填都会有提示。

域名列表 域名解析

公网备案

此时网站可以正常访问,但还需要进行公网备案,公网备案官网,在首页先下载《网站备案指引》,然后按照指引一步步来。阿里云上也有详细教程 公安联网备案快速入门

支持 https

nginx 开启 https 配置

安装证书

证书有收费的也有免费的,收费证书可以上 阿里云数字证书 购买,个人网站免费的就够用了。

以下是免费证书 Let's Encrypt 的安装命令,将域名改成自己的:

sudo yum install certbot
sudo yum install python3-certbot-nginx
sudo certbot --nginx -d huangyongcheng.top -d www.huangyongcheng.top

注意,nginx 的 server_name 配置要与上面命令中的域名一致,不然无法安装证书

server_name huangyongcheng.top www.huangyongcheng.top

成功后会输出证书保存路径:

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/huangyongcheng.top/fullchain.pem
Key is saved at: /etc/letsencrypt/live/huangyongcheng.top/privkey.pem

如果失败了修改 nginx 配置后再执行:

certbot install --cert-name huangyongcheng.top

总结

以上就是是自己搭建个人网站的过程,只需具备前端知识和一点点服务器知识,就可以搭建一个属于自己的网站了。

当然发布过程还是有点繁琐,有很多方式可以让发布更优雅:

  • github webhook 实现自动部署 (笔记待补充)
  • jenkins 部署 (笔记待补充)
  • docker 部署 (笔记待补充)