将hexo部署在服务器上

将hexo部署在服务器上

环境

云服务器配置

centos 7.6 (开放80端口)

连接到云服务器,我使用的是Xshell。

安装和配置git

安装git

git --version // 如无,则安装
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
yum install -y git

生成密钥和公钥

git config --global user.name "yourname"
git config --global user.email youremail@example.com
ssh-keygen -t rsa -C "youremail@example.com"
git config --global core.autocrlf false  // 禁用自动转换
#上述命名完成后得到ssh认证在C:\users\yourname\.ssh中,这个后面将其复制到服务器上.ssh/authorized_keys

在云服务器上创建一个专门运行git的用户

useradd git #添加用户git,名字随意修改,我这里为了好记。
passwd git  #设置密码

创建git仓库目录

su root

cd/home/git

git init --bare blog.git #创建一个裸露的仓库

配置git hooks

vim /home/git/blog.git/hooks/post-receive

添加

#!/bin/sh
git --work-tree=/var/www/hexo --git-dir=/home/git/blog.git checkout -f

实际就是从blog.git仓库覆盖/var/www/hexo目录,这样达到更新的目的。(这里还没有创建/var/www/hexo/

设置权限:

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

chown git:git -R blog.git#将文件夹blog.git的权限修改,用户组和拥有者设置为git

创建静态文件目录以及修改其权限,同时将git仓库连接到静态文件目录下

  • 创建静态文件目录:mkdir -p /var/www/hexo/

  • 赋予用户权限:chown -R git:git /var/www/hexo

  • 配置文件权限:chmod -R 755 /var/www/hexo

    这样仓库更新就会同步到hexo目录下

禁止git用户的shell登录权限配置

  • 首先确认git-shell 已存在于/etc/shells文件中

    • 通过which git-shell判断是否安装了git-shell。一般都安装了,因为上述我们使用了yum install -y git,安装了会显示安装目录:/usr/bin/git-shell;如果没有则使用命令yum install -y git安装。

    • 判断shells文件是否存在,使用命令cat /etc/shells,如果没有/usr/bin/git-shell,则使用vim添加,在最后一行添加git-shell路径。

      这样我显示的内容如下:

      /bin/sh
      /bin/bash
      /usr/bin/sh
      /usr/bin/bash
      /bin/tcsh
      /bin/csh
      /usr/bin/git-shell # 这个是你需要添加的git-shell
      

      修改/etc/passwd的用户git的权限

      将原来的git:x:1002:1002::/home/git:/bin/bash修改为git:x:1002:1002::/home/git:/bin/bash

      普通用户都是1000以后,所以你的可能是别的数字,不要紧。

测试git是否部署成功

在你的git客户端执行git clone git@服务器ip:/home/git/blog.git,如果clone成功就部署成功。(注这个git是你上述添加的用户,如果不是git,请修改,后面的路径是你的仓库地址

结果如图:

安装和配置nginx

安装nginx

yum install -y nginx

检查是是否安装成功

nginx -v

启动nginx

nginx

配置nginx

vim /etc/nginx/nginx.conf#不同版本的nginx或系统配置文件不同

修改域名或ip 以及主目录的路径

如图:

通过命令nginx -t来检查一下配置文件是否修改正确。结果如图:

最后重启服务,让配置修改生效

systemctl restart nginx

配置本地环境

  • 安装nodejs,直接在官网下载,直接下一步即可。
  • 安装git,直接下一步。(注:记得把目录改成其他盘)

本地配置hexo

  • 创建一个目录(你存放博客的markdown文件)

  • 打开git bash

  • 运行以下命令

    npm install hexo-cli -g
    hexo init blog #blog是博客文件夹,你可以自己指定
    cd blog
    npm install 补全依赖环境
    npm install hexo-deployer-git --save #安装插件
    hexo server
    

    在云服务器上创建证书

    • 切换用户的目录:cd /home/git
    • 创建.shh目录:mkdir .ssh && chmod 700 .ssh
    • 然后在云服务创建authorized_keys公钥保存文件:touch .ssh/authorized_keys && chmod 600
    • 将.ssh目录以及文件的所属组和所有者给git:chown -R git:git .ssh
    • 将密钥复制到.ssh/authorized_keys(注:一行添加一个)

    配置_config.yml

    在目录下找到_config.yml,编辑deploy属性:

    使用hexo

    hexo new "test" # 创建test.md文件

    用支持markdown的软件书写test.md文件

    使用命令上传到服务器:

    hexo clean##清除缓存 ,网页正常情况下可以忽略此条命令,执行该指令后,会删掉站点根目录下的public文件夹
    hexo g #生成静态网页 (执行 $ hexo g后会在站点根目录下生成public文件夹, hexo会将"/blog/source/" 下面的.md后缀的文件编译为.html后缀的文件,存放在"/blog/public/ " 路径下)
    hexo d# #将本地数据部署到远端服务器
    

为了安全起见

  • 禁止root远程登录

     vim /etc/ssh/sshd_config
    在文件中找到下面一行文字:
    #PermitRootLogin yes
    去掉该行前面的#号,使其成为下面这样:
    PermitRootLogin no
    接下来,在shell中输入以下命令来重启ssh服务
    # systemctl restart sshd
    
  • 添加你想要远程登录的用户

    打开文件/etc/ssh/sshd_config,然后在文件的末尾加上这样一行文字,其中user1、user2即为允许通过ssh登录的用户。

    AllowUsers user1 user2

  • 赋予一个用户能够使用sudo

    /etc/sudoers中找到 root ALL=(ALL) ALL
    在下面添加一行:新用户名 ALL=(ALL) ALL

    (如果你只需要一个用户,就不要操作第二步)


安装ssl证书

  • 申请证书

    tencent.com下载ssl证书,用的是nginx,则下载的是cloud.tencent.com_nginx,其中包括:

    • cloud.tencent.com_bundle.crt 证书文件

    • cloud.tencent.com_bundle.pem 证书文件(可忽略该文件)

    • cloud.tencent.com.key 私钥文件

    • cloud.tencent.com.csr CSR 文件

    注:CSR 文件是申请证书时由您上传或系统在线生成的,提供给 CA 机构。安装时可忽略该文件。

  • 安装证书(通过winscp或其他软件)

    将已获取到的 cloud.tencent.com_bundle.crt 证书文件和 cloud.tencent.com.key 私钥文件从本地目录拷贝到 Nginx 服务器的 /etc/nginx/ssl 目录(此处为 Nginx 默认安装目录,请根据实际情况操作,ssl是我自己创建的,你可以随意,只要知道它的具体位置就行)下。

  • 编辑Nginx根目录下的nginx.conf文件

    server {
         #SSL 默认访问端口号为 443
         listen 443 ssl; 
         #请填写绑定证书的域名
         server_name cloud.tencent.com; 
         #请填写证书文件的相对路径或绝对路径
         ssl_certificate cloud.tencent.com_bundle.crt; 
         #请填写私钥文件的相对路径或绝对路径
         ssl_certificate_key cloud.tencent.com.key; 
         ssl_session_timeout 5m;
         #请按照以下协议配置
         ssl_protocols TLSv1.2 TLSv1.3; 
         #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
         ssl_prefer_server_ciphers on;
         location / {
             #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
             #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
             root html; 
             index  index.html index.htm;
         }
     }
    

    如果需要http自动跳转https

    nginx.conf编辑为:

    server {
        listen 80;
        #填写证书绑定的域名
        server_name <yourdomain>;
        #将所有HTTP请求通过rewrite指令重定向到HTTPS。
        rewrite ^(.*)$ https://$host$1;
        location / {
            index index.html index.htm;
        }
    }
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值