部署Blog到Ubuntu

部署Blog到Ubuntu服务器并启用HTTPS (没用root用户)

一、本地安装Git后注意事项

【git】报错unsafe repository xxx is owned by someone else解决方法

可以通过加通配符为*,忽略所有文件夹。需要注意,该处理方法一般适用于只有本人一个用户使用的电脑,确保无其它用户,否则存在安全问题。见下方详述。

git config --global --add safe.directory "*"

二、服务器端操作

参考链接:https://www.jianshu.com/p/16b89f4f7136

1. 安装Git和Nginx

Git 用于版本管理和部署,Nginx 用于静态博客托管。

sudo apt-get update
sudo apt-get install git nginx -y

2. 创建Git仓库

/var/repo/下创建名为hexo_static的裸仓库。使用如下命令:

sudo mkdir /var/repo/
sudo chown -R $USER:$USER /var/repo/
sudo chmod -R 755 /var/repo/

cd /var/repo/
git init --bare hexo_static.git

3. 配置Nginx托管文件目录

创建/var/www/hexo目录,用于Nginx托管,修改目录所有权和权限。

sudo mkdir -p /var/www/hexo

sudo chown -R $USER:$USER /var/www/hexo
sudo chmod -R 755 /var/www/hexo

随后修改Nginx的default设置,使root指向hexo目录.

sudo vim /etc/nginx/sites-available/default

注意一定要加sudo,否则会提醒default是只读文件.
修改文件中对应的项

...

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

root /var/www/hexo; # 需要修改的部分
index index.html index.htm;
...

Vim的操作方法比较特殊,可以在网上查查
重启Nginx服务,使得改动生效

sudo service nginx restart

4. 创建Git钩子

不清楚钩子是什么
在自动生成的 hooks 目录下创建一个新的钩子文件:

vim /var/repo/hexo_static.git/hooks/post-receive

在该文件中添加两行代码,指定 Git 的工作树(源代码)和 Git 目录(配置文件等)。

#!/bin/bash

git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f

保存并退出文件,并让该文件变为可执行文件。

chmod +x /var/repo/hexo_static.git/hooks/post-receive 

5. 修改Hexo的默认配置

在站点config.yml中修改博客的地址url

# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'

url: http://server-ip # 没有绑定域名时填写服务器的实际 IP 地址。
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:

6. 通过Git部署

先在任意位置处打开powershell, 从服务器上把hexo_static仓库克隆下来, 以此来将服务器地址添加到受信任的站点中。

git clone  ubuntu@X.X.X.X:/var/repo/hexo_static.git

再编辑Hexo的config.yml文件,找到Deployment,修改为

deploy:
type: git
repo: ubuntu@server_ip:/var/repo/hexo_static.git
branch: master

最后记得安装Hexo部署到Git仓库的包.

npm install hexo-deployer-git --save

于是就可用hexo d命令来部署了。大功告成。

三:开启https

参考链接:https://developer.aliyun.com/article/761236

备注:配置目录在 /etc/nginx/sites-enabled

1.配置SSL证书

我这里用的是有限期一年的ssl证书 腾讯云nginx根据域名下载两个文件 1.pem 1.key

2.配置ca证书 :

2.1配置文件上传

进入nginx的安装目录/etc/nginx/,增加cert/文件夹,把刚刚下载的两个文件上传到cert/文件夹中。

2.2 配置nginx文件

/etc/nginx/sites-enabled/下,增加jessicagracewell.top文件。内容如下:

说明:下面的配置是对443端口和80端口进行监听,443端口要启用ssl。监听443端口的server配置可以仿照上面ca认证页面的nginx配置示例进行配置。

server {
listen 443 ssl;
server_name jessicagracewell.top www.jessicagracewell.top;

root /var/www/hexo;
index index.html index.htm;

ssl_certificate cert/1.pem;
ssl_certificate_key cert/1.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
ssl_prefer_server_ciphers on;

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

location / {
index index.html index.htm;
}
}

server {
listen 80;
server_name jessicagracewell.top www.jessicagracewell.top;
return 301 https://$host$request_uri;
}

2.3 检查并启用nginx配置

配置完成后,检查一下nginx配置文件是否可用,有successful表示可用。

nginx -t // 检查nginx配置文件

配置正确后,重新加载配置文件使配置生效:

nginx -s reload // 使配置生效

至此,nginx的https访问就完成了,并且通过rewrite方式把所有http请求也转成了https请求,更加安全。

如需重启nginx,用以下命令:

service nginx stop // 停止
service nginx start // 启动
service nginx restart // 重启