部署Blog到Ubuntu

部署Blog到Ubuntu
Jessica Gracewell部署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 |
随后修改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 // 停止 |