云服务器配置

前言

完成了个人博客的搭建后,由于国内访问 github 的速度实在是感人,所以更好的做法是绑定自己的博客到国内的云服务器上。

1. 前期准备

1.1 购买云服务器

我也没做过什么测评,没有对各家产品进行对比,大家可以自己上网对比各个厂家的服务器如何。

本人使用的是腾讯云服务器轻量应用服务器,配置是:CPU 2核,内存 2G,系统盘 50G,第一年的费用大概是 100-200。时不时有什么活动,可以关注一下。

Figure 1.1

我当时买的是学生认证的轻量云,一年 112 左右。

购买完以后一些配置选择,系统选择 Linux 系统,我比较喜欢 Ubuntu,因为平时自己用的也是 Ubuntu,其他的按自己需要选择。

1.2 购买域名

域名是互联网上用于寻找网站或电子邮件服务器的人类可读名称。它由“域名名称”和“域名后缀”两个部分组成,用点分隔。域名可以代替IP地址,方便用户记忆和访问网站。

一开始部署在 github 上的网站有统一的域名: XXX.githun.io ,我们可以自己购买一个个性化域名,DNS 解析到自己的服务器上,这样就可以通过访问个性化域名来访问自己的博客。

比如我的博客域名为:linermao.top,若没有购买域名则需要访问 111.229.185.182 来访问我的博客。

购买域名的厂家也有很多,我还是在腾讯云上购买的,一些比较少见的域名后缀会便宜一些,比如我的 .top, 一年的收费是 ¥9。

大家可以货比三家,建议是服务器买哪家的域名就买哪家,这样到时候备案会方便许多。

2. 配置云服务器

服务器的一些账号密码设置,还有一些软件包的更新和下载源换源,这些操作在服务器的帮助手册里应该都有,大家参照着完成就行。

2.1 连接云服务器

连接服务器的方法有很多种:

  • 腾讯云自带一个网页端可以连接云服务器
  • 可以使用 vscode 的 Remote-SSH 插件连接云服务器
  • 可以使用 Finall Shell 连接云服务器

自己选择顺手的就可以,本人使用的是 vscode + 插件。

*2.1.1 配置 ssh

ssh 连接不是必须的,但是配置好以后会方便许多。

若客户端还没有生成过 ssh 密钥,先在自己的电脑上打开终端,输入:

# 生成密钥
ssh-keygen -t rsa -C "邮箱"
# 查看密钥
cat ~/.ssh/id_rsa.pub

将输出的密钥复制,在腾讯云中登陆云服务器控制台,找到 SSH密钥,添加 SSH公钥,绑定到自己的服务器。

也可以继续在本地终端中输入

# 若服务器先前没有添加过公钥
cat ~/.ssh/id_rsa.pub | ssh your_server_name@your_server_ip "cat >> ~/.ssh/authorized_keys"
# 若添加过公钥
cat ~/.ssh/id_rsa.pub | ssh your_server_name@your_server_ip "tee -a ~/.ssh/authorized_keys"

使用以下代码测试是否成功:

ssh -i ~/.ssh/id_rsa your_server_name@your_server_ip

能进入服务器系统就成功,然后在 vscode 拓展中选择 ssh 连接,这样就可以免密连接。

2.2 域名备案

由于国内的法律要求,使用自己的个人域名时需要向公安部备案,一般来说,各个厂商都有自己的备案页面,需要本人身份证和一些相关信息,还有网站用途。在国内网站用途是不可以说个人博客的(我当时是这样的),大家可以选择知识分享类。

其中如果有问题的话服务器厂商会联系你,让你修改内容。一般需要 2-3个工作周才能备案通过。

通过后需要在网站下方添加备案信息:

以 Hexo Butterfly 主题为例:

按照路径打开 Hexo Butterfly footer.pug:

Blog/node_modules/hexo-theme-butterfly/layout/includes/footer.pug
or
Blog/themes/butterfly/layout/includes/footer.pug

找到这一行:

if theme.footer.copyright
.framework-info

添加以下内容:

<a href="https://beian.miit.gov.cn/" target="_blank">浙ICP备xxxxxxx号-1</a>
<br>
<img src = '/img/gongan.png'>
<a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=33030302001279" target="_blank">浙公网安备 xxxxxxxx号</a>

图片自己上网找一个就可以,重新发布以后底部是这样就可以了:

Figure 2.1

3. 博客挂载云服务器

3.1 安装 nginx

NGINX is open source software for web serving, reverse proxying, caching, load balancing, media streaming, and more. It started out as a web server designed for maximum performance and stability.

简单来说,nginx 是一个高性能的反向代理服务器,位于服务器端,可以发布网站代码和静态资源。这里不再过多介绍。

在云服务器上安装 nginx:

apt-get update
# 安装 nginx 有则忽略
apt-get install nginx

一些常见的 nginx 命令:

# 启动
nginx -s start;
# 重新启动,热启动,修改配置重启不影响线上
nginx -s reload;
# 关闭
nginx -s stop;
# 修改配置后,可以通过下面的命令测试是否有语法错误
nginx -t;

提示权限问题则在代码前加上 sudo。

nginx的主要配置文件是 /etc/nginx/nginx.conf,但一般来说,你应该避免直接修改这个文件。相反,nginx的配置通常分散在 /etc/nginx/sites-available/ 目录中的不同文件中。

我们主要修改的是 server 模块,server 块的主要用途是:

  • 配置网络监听
  • 基于名称的虚拟主机配置
  • 基于IP的虚拟主机配置

本人的目录是在 sites-available 的 default 文件中,内容及含义参考如下:

server {
# TCP 监听端口,监听 HTTP 连接,使用时确保此端口在服务器上已经开放
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

# 定义网站根目录,目录可以是相对路径也可以是绝对路径。
root ;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# 定义站点的默认页
index index.html;
}

# pass PHP scripts to FastCGI server
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

重点的几个配置就是:

  • listen:TCP 监听端口,监听 HTTP 连接,使用时确保此端口在服务器上已经开放
  • root:网站根目录,目录可以是相对路径也可以是绝对路径
  • index:站点的默认页

此时可以输入 “公网IP + 端口号” 的方式来访问 nginx 的欢迎界面:

Figure 3.1

403 是正常的,404 或者其他提示需要自己动手解决。

如果提示端口冲突,可以把监听的端口换成其他端口,记得在服务器的安全组中放开端口权限。

3.2 git hook