配置云服务器以搭建hexo静态网站

Introduction

记录本地静态网页配置至云服务器;服务器的基本配置,以及一些注意事项

Getting Started

1. 基础环境搭建

1
2
3
4
5
## 由于是Ubuntu 22.04 的系统环境;故,可以通过其内置的包管理器 apt-get 来安装部分软件
$ sudo apt-get install git
$ sudo apt-get install nginx
$ sudo apt-get install nodejs npm ## 本地环境配置
$ npm install hexo ## 本地环境配置

git用于本地静态网页文件上传至云端的工具;方便快捷

nginx用于部署静态网页,轻便型

2. Git 环境配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## 创建 git 用户
$ adduser git
## 添加权限
$ chmod 740 /etc/sudoers
$ sudo vi /etc/sudoers
## 添加以下内容
## git ALL=(ALL) ALL
$ sudo chmod 400 /etc/sudoers
## 添加公钥,实现免密登录
$ su git
$ mkdir ~/.ssh && cd ~/.ssh
## 将本地生成的公钥copy至authorized_keys
$ cat id_rsa.pub > authorized_keys
## 本地尝试是否正常登录
$ ssh -v git@server

## 实现免密登录之后,需要创建一个新的仓库用于存放相关数据
$ git init --bare $blog_name ## 空仓库
$ echo "git --work-tree=$blog_path --git-dir=$git_path checkout -f" >> $git_path/hooks/post-receive ## 设置配置git推送后执行的脚本
$ chmod +x $git_path/hooks/post-receive ## 添加权限
$ chown -R git:git $git_path ## 改变blog.git目录的拥有者

$blog_name创建的repo name

$blog_path静态网页存放的路径

$git_path$代指创建的git仓库路径。

3. Nginx 配置

1
2
3
4
5
6
7
## 初始配置
$ vim /etc/nginx/sites-available/default

## 停止服务
$ sudo nginx -s stop
## 启用服务
$ sudo nginx

这里需要配置两个信息,静态网页的路径与域名;server下的root便表示静态网页的存放路径,以及location可以设置多个路由;如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
server {
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;
#server_name https://101.42.41.158;
#root /var/www/html;
root $blog_path;

# 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.html;
}

location /js {
root $blog_path;
}

location /css {
root $blog_path;
}
}

$blog_path静态网页存放的路径

server_name用于指定解析的域名,_表示默认为公网ip访问

3.1 报错信息

调试过程中总有各种各样的问题,了解如何从哪里获取相关的日志信息是很有必要的

1
2
3
## /etc/nginx/nginx.conf
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

其中 access_log 是访问日志;error_log 报错日志

4. 查看公网ip

1
$ ip addr

References

[1] https://www.jianshu.com/p/069b8ad1d1e8