引子 前段时间发现自己的域名备案还是正常的,于是选择使用腾讯云服务器重新部署了博客,懒得折腾了,下面记录一下部署流程吧。
一、环境需求 1.1 本机 本机主要是安装hexo
,具体教程官网已经写的很详细了,可以参考Hexo
1.2 服务器 以ubuntu
为例,仅需要git
以及nginx
,如果没有可以通过以下指令安装
1 2 sudo apt install git sudo apt install nginx
git
用于版本管理与部署,nginx
用于静态博客托管。
二、创建git
环境 2.1 在云服务器上创建一个git
用户,用来运行git
服务
2.2 设置 ssh 密钥登陆 1 2 3 4 su git mkdir .ssh && chmod 700 .ssh touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys vim .ssh/authorized_keys
在authorized_keys
文件中添加密钥即可
2.3 创建git
仓库目录 创建一个名为blog
的git
仓库
1 2 3 mkdir /var/repo cd /var/repogit init --bare blog.git
2.4 配置 git hooks
1 vim /var/repo/blog.git/hooks/post-receive
添加如下内容
1 2 #!/bin/sh git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
保存退出后设置权限
1 chmod +x /var/repo/blog.git/hooks/post-receive
改变 blog.git
目录的拥有者为git
用户 1 chown -R git:git blog.git
2.6 创建静态文件目录并将 2.3 步骤生成的git
仓库链接到静态文件目录下 创建静态文件目录,链接git
仓库,配置权限,这样git
仓库更新便会自动同步到hexo
目录下
1 2 3 mkdir /var/www/hexo chown -R git:git /var/www/hexo chmod -R 755 /var/www/hexo
2.7、为了安全考虑,禁用git
用户的shell
登录权限配置 首先你必须确保git-shell
已存在于/etc/shells
文件中:
使用命令which git-shell
判断系统是否安装了git-shell
。如果已经安装,则返回git-shell
的安装目录,如:/usr/bin/git-shell
;如果未安装则需要安装git-shell
命令,安装命令:apt install git
。
判断shells
文件是否存在,判断命令:cat /etc/shells
如果文件不存在或没有/usr/bin/git-shell
,则需要使用 vim 增加这个路径:sudo vim /etc/shells
,在最后一行添加git-shell
路径:
1 2 3 4 5 6 7 8 9 10 /bin/sh /bin/bash /bin/rbash /bin/dash /usr/bin/tmux /usr/bin/screen /bin/zsh /usr/bin/zsh /usr/bin/git-shell
现在你可以使用chsh
命令修改任一系统用户的shell
权限了 现在我们修改第一步中创建的git
用户的登录权限,禁止git
用户使用shell
权限: 终端中输入sudo chsh git
然后在Login Shell [/bin/bash]
: 后输入git-shell
路径/usr/bin/git-shell
修改完成后验证:vim /etc/passwd
看看git
用户是否是以git-shell
结尾
1 git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell
2.8 上述步骤完成后进行测试 测试后类似如下结果即为成功
1 2 3 ➜ .ssh git clone git@42.192.118.210:/var/repo/blog.git Cloning into 'blog' ... warning: You appear to have cloned an empty repository.
2.9 可能遇到的问题 在腾讯云上最常见的问题即为ssh git@xxx
失败:
1 2 ➜ ssh git@xxx git@xxx: Permission denied (publickey).
这是由于腾讯云服务器ssh
默认关闭了自定义的publickey
登陆,可以通过vim /etc/ssh/sshd_config
进入ssh
设置文件进行修改:
1 2 3 PubkeyAuthentication yes PasswordAuthentication yes
然后重启ssh
服务
三、Hexo
配置 打开hexo
博客目录,编辑_config.yml
文件 修改repository
为:
1 2 3 4 deploy: type: git repository: git@ip或域名:/var/repo/blog.git branch: master
然后执行hexo g -d
将文件上传到你部署的服务器上
四、nginx
配置 修改nginx
配置文件,将root
指向博客所在目录:
1 vim /etc/nginx/sites-available/default
1 2 3 4 5 6 7 8 9 10 11 server { listen 80; listen [::]:80; root /var/www/hexo; # 修改的地方 server_name xxx.xxx # 如果需要改域名访问,修改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; } }
总结 大概内容如上,本博客便是通过如上步骤部署的,有其他疑问可以联系我。