Hexo部署博客到云服务器ECS

cover

前言:

在新型肺炎盛极一时的寒假,只能呆在家里,所以可不能一直堕落下去,否则就浪费太多时间了。正好这会各个机构都尽其所能提供免费资源,还有免费6个月的阿里云服务器可以用(详见阿里云高校学生“在家实践计划”),还不赶紧趁这个机会好好冲冲电!

租了服务器可以用来运行一些网站,应用还有一些小工具,还可以做内网穿透,总之极大的方便了与其他同学的分享和交流,所以决定先把我本地的hexo部署到服务器上(原先部署在github上)。

本地环境

要有hexo,node.js,git,详情见第一次建网站

服务器端

需要一台服务器,这里用的是阿里云的ECS ubuntu 18.04.1,能够正常登陆实例

安装Git和Nginx

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

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

配置SSH

将本地公钥复制,一般在(C:\Users\Administrator\.ssh)下,如果没有的话,在git bash中用ssh-ken -t rsa生成ssh公钥

1581063553702

  • 在云服务器上创建一个git用户,用来运行git服务
adduser git #创建用户
passwd git #设置密码
  • 切换至git用户,添加SSH Key

在服务器端,切换至刚刚创建好的git用户下,创建.ssh文件authorized_keys文件

su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
  • 修改权限
cd ~
chmod 600 .ssh/authorzied_keys # 将文件设置为可读可写
chmod 700 .ssh #将该文件夹设置为可读可写可执行,注意文件夹的可执行是指能访问
  • 测试git连接

切换到本地机器上,在本地机器上测试是否能连接到你的远程git用户

ssh -v git@SERVER_IP   #你的服务器IP

测试成功(中间可能让输入密码,不要慌就是你的git user的密码或者试试远程)

1581064070477

创建Git仓库

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

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 #初始化仓库

配置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

修改文件中对应的项,vim操作见linux下使用vim编辑文件并保存

...

server {
listen 80 default_server;
listen [::]:80 default_server;

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

重启Nginx服务,使得改动生效

sudo service nginx restart

创建Git钩子

git钩子在此处命名为post-receive也就是该挂钩在git提交之后自动执行文件里的内容。

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

回到本地配置

在站点_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:

通过Git部署

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

git clone git@server_ip:/var/repo/hexo_static.git

注意在第一次进行这一步时会提示是否继续,选yes即可。git@server_ip这里的git不是固定的,而是你的服务器用户名(例如root/admin,我曾在这个错误上困扰了许久许久!!!),此外server_ip就是你的远程服务器IP地址。

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

deploy:
type: git
repo:
#同步部署到服务器和github
github: https://github.com/GithubName/GithubName.github.com
hexo: git@server_ip:/var/repo/hexo_static.git
branch: master

于是就可用hexo d命令来部署了到服务器了。

外部访问服务器网站

部署到服务器之后,需要开启80端口(与Nginx配置文件中同步),详情见https://www.aliyunfuwuqi.com/ecs/2254/开启了80端口并成功部署网站之后,就可以通过http://xx.xx.xx.xx来访问你的网站啦!

欢迎大家访问我的网站主页

参考

用Hexo部署博客到Ubuntu服务器:https://www.jianshu.com/p/16b89f4f7136

阿里云服务器远程连接:https://www.cnblogs.com/chenyablog/p/10281995.html

linux下使用vim编辑文件并保存:https://blog.csdn.net/wuyuefei3/article/details/81139343

linux下chmod +x的意思?https://blog.csdn.net/u012106306/article/details/80436911

Git钩子的使用https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git-%E9%92%A9%E5%AD%90

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2015-2024 YuleZhang's Blog
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信