hexo部署到云服务器


title: hexo部署到云服务器

  • 云服务器部署

1.查看本文章的前提是已经在本地搭建好了hexo框架的博客
2.服务器系统centOS7.6(华为云)

服务器环境搭建

使用yum安装nginx作为我们的服务器

1.安装执行命令如下

yum -y install nginx

2.配置服务器路由

systemctl start nginx #启动nginx
systemctl enable nginx #设置开机启动

此时用公网ip访问即可看到一个欢迎页面,欢迎页面可能是“Welcome to nginx”也可能是“Welcome to centos”,欢迎页面的字样取决于nginx版本和下载方式的不同,只要能正常显示一个欢迎页面就好

配置服务器的路由

为了让我们的nginx服务器指向我们的博客而不是指向默认的欢迎页面
那么就需要我们更改nginx的配置。
关于nginx的配置文件共两种情况:
1.首先是位于etc/nginx/conf.d/下的dafault.conf
2.其次是有些云服务器比如我的华为云配置文件是etc/nginx/ 下的 nginx.conf 。
3.我们也可用nginx -t命令查看我的配置文件所在
配置过程如下:

1.打开/etc/nginx/nginx.conf文件

vi /etc/nginx/nginx.conf
按照注释修改
 	include /etc/nginx/conf.d/*.conf;
    server {
        listen       80;
        listen       [::]:80;
        server_name  _;#暂时没有域名就填云服务器的公网ip,以后有了更改
        root         /home/www/website;#这里填博客目录存放的地址

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

:wq保存
2.在刚才我们自己写的nginx.conf配置文件中root的路径相应路径建立博客的目录:

cd /home
mkdir www
cd /www
mkdir website

这样我们就可以得到 /home/www/website 作为博客的根路径,就和配置文件中的路径对应上了。

3.在root用户下设置www的权限

chmod -R 777 ./www 

为了让nginx能够访问我的作为博客目录的www文件夹需要在root设置权限并且添加递归参数R

安装Git 以及Node.js

安装Node.js

Node.js众多安装方式的一种

curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install -y nodejs

安装完成后执行 node -v 和 npm -v 如果打印版本号则安装成功

[root@hecs-66615 ~] node -v
v10.24.1
[root@hecs-66615 ~] npm -v
6.14.12

安装Git及配置仓库

此部分的主要目的是让我们的个人电脑可以通过ssh的方式连接到云服务器,然后通过命令将博客部署到服务器上。
1.安装git:

yum install git

2.配置git用户;

adduser git

3.修改用户权限:

chmod 740 /etc/sudoers
vi /etc/sudoers

4.在root ALL=(ALL) ALL下添加

git	ALL=(ALL)	AL

5.保存退出后 将sudoers文件权限改回原样

chmod 400 /etc/sudoers

6.设置git用户的密码

sudo passwd git

7.切换到git用户,然后在~根目录下创建.ssh文件夹

su git
cd ~
mkdir .ssh
cd .ssh

8.生成公钥密钥文件

ssh-keygen

此时在目录下就会有两个文件,分别是:id_rsa 和 id_rsa.pub
其中 id_rsa.pub 就是公钥文件 我们复制一份
cp id_rsa.pub authorized_keys
这样目录下就会有一个authorized_keys文件,它和id_rsa.pub一模一样。

9.修改authorized_keys文件权限

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

10.然后_我们在自己的电脑上_打开终端,使用ssh方式连接我们的云服务器。

ssh -v 用户名@服务器公网ip 在本例中为:ssh -v git@服务器公网ip

输入用户git的密码后,最后提示Welcome to XXX Compute Service ! 即为登陆成功!!!!

11.现在我们要创建一个git的仓库(创建仓库的过程要在git用户下进行),并且新建一个post-receive文件,操作如下:

cd ~
git init --bare blog.git
vi ~/blog.git/hooks/post-receive

12.输入以下内容:

git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f

13.保存退出并授予该文件可执行权限
在root用户下cd /home/git/执行

chmod +x /home/git/blog.git/hooks/post-receive

解释一下12的目的:我们在本地博客的根目录下通过hexo generate -deploy完成对本地博客文件的解析,并且部署到云服务器的/home/git/blog.git目录下,最后然后通过git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f将本地上传上来的文章解析到我们的博客目录/home/www/website。

本地配置_config.yml完成部署

hexo的目录下(博客的根目录),找到_config.yml,打开它。
找到deploy 做如下配置:

deploy:
	type: git
	repo: git@这里改为服务器公网IP:/home/git/blog.git       
	branch: master            

在服务器上重新运行nginx服务器:

nginx -s reload

本地终端执行:

hexo clean && hexo g && hexo d

最后打开公网ip或者域名!!!

踩坑补充

1.部署git厂库整个过程一定要git用户下实现。
2.如果在本地 hexo d指令能执行成功,/home/www/wesite 没有文件,可以直接执行
git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f
命令,看看/home/www/wesite会不会生成文件
3.如果hexo d和ssh -v 用户名@公网IP,无法连接首先排查密钥是否复制并且赋予权限,其次可能是服务器系统重新安装过,并且之前在本地使用ssh -v 用户名@公网IP成功连接过,导致本地缓存的是服务器系统重装之前的密钥,可以通过在本地终端输入:“ssh-keygen -R "你的远程服务器ip地址”,清除本地关于服务器公网ip的缓存。


版权声明:本文为weixin_46415168原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。