hexo博客部署到云服务器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37286282/article/details/89496946

title: hexo博客部署到云服务器
date: 2019-4-19 23:13:00
tags: [云服务器,web部署]
categories: 搭建博客

最近买了一个搬瓦工的云服务器,想着国内访问github或者加载github资源稍慢,想着自己把博客搬到服务器上。中间遇到挺多坑,想着记录一下搭建的过程。

环境部署

本地环境:windows10(64位),hexo+git+Nodejs

服务器环境:Ubuntu14.04,nginx+git

本地环境搭建

  • 安装Git
  • 安装Hexo
  • 生成ssh公钥(这一步百度到处都有,生成过了就不用了)
    • 命令行或者gitbash输入:ssh-keygen -t rsa -C "[email protected]"
    • 生成的文件在~/.ssh目录中id_rsa.pub,这个之后要写入服务器中

服务器环境搭建

  • 安装git

    • 因为Ubuntu自带git,我的已经是最新版本了,所以无需下载,如果安装的话,如果是最新版本也会提醒无需安装。
    • 如果不是ubuntu可以yum install git
  • 创建git账户

    adduser git
    chmod 740 /etc/sudoers
    vim /etc/sudoers
    

    这里也很重要,因为创建git账户,后面很多命令必须在git下执行,否则会没有权限。

    • 打开文件后找到root ALL=(ALL) ALL

    • 在后面添加git ALL=(ALL) ALL

    • 保存并退出,修改权限

      • chmod 400 /etc/sudoers
    • 设置git账户密码

      • sudo passwd git
    • 切换至git用户,创建~/.ssh文件和~/.ssh/authorized_keys文件,并赋予相应的权限:

      su git
      mkdir ~/.ssh
      vim ~/.ssh/authorized_keys
      #这里把本地主机的id_rsa.pub中的内容粘贴到authorized_keys中
      chmod 600 ~/.ssh/authorized_keys
      chmod 700 ~/.ssh
      

      Tip:这一步在git用户下进行很重要,因为后面部署到云服务器上的时候可能会permission denied。

    • 在本地终端中测试是否能免密登陆git

      ssh -v git@server_ip

    • 创建目录

      #repo作为git仓库目录
      mkdir -R /var/repo
      #Hexo作为网站根目录
      mkdir -R /var/www/hexo
      

      Tip:这一步若是没有权限,可以在root下创建,之后修改权限(后面会说到)

    • 配置nginx

      apt-get install nginx

      然后vi /etc/nginx/sites-available(不同Linux发行版会略微有差别,比如centos好像就是nginx.conf文件):

         server {
              listen       80;
              # server_name 填写自己的域名
              server_name  www.xxx.com;
              # 这里root填写自己的网站根目录
              root         /var/www/hexo;
              index index.html index.php index.htm;
              #/usr/local/tomcat/webapps/Forum
      
              # Load configuration files for the default server block.
              include /etc/nginx/default.d/*.conf;
               location / {
              }
              location ~ .php$ {
              }
      
              error_page 404 /404.html;
                  location = /40x.html {
              }
      
              error_page 500 502 503 504 /50x.html;
                  location = /50x.html {
              }
      }
      

      如果本地已经写过博客了的话,只是搬移到服务器,可以在/etc/www/下把代码clone下来,并改为hexo文件夹,现在你访问服务器ip就已经能够看到之前的博客界面啦~下面要做的就是用git自动化部署博客。

    使用Git自动化部署博客

    现在服务器上已经有了一个nginx的web环境,也有了静态页面的目录,但是要实现本地发布博客需要利用git,但是用git每次pull,clone又会很麻烦,这里用到了git-hooks同步实现自动化部署。

    • 服务器建立裸库,这里要用git用户登录,确保git拥有仓库所有权。

      su git
      cd /var/repo/
      git init --bare blog.git
      
    • 使用git-hooks同步网站根目录

      在这里我们使用post-receive这个脚本实现自动部署:

      vim /var/repo/blog.git/hooks/post-receive
      #写入
      
      #!/bin/sh
      git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
      

      保存,接着chmod +x post-receive

    • 在本地的博客主目录下,配置_config.yml:

      找到deploy:

      deploy:
        type: git
        repo: git@server_ip:/var/repo/blog.git
        branch: master
      

      现在就完成啦~测试部署:

      hexo generate && hexo deploy
      

      Connection denied

      在部署过程中,执行 hexo d发现部署出错,什么权限不允许之类的,这里我们需要检查我们在上述的git操作部署是否使用了git用户操作,若是没有,需要给相应的目录更改用户组
      使用chown -R git:git /var/repo/这条命令递归的将repo目录及其子目录用户组设置为git,同时chown -R git:git /var/www/hexo,这样即可解决此类问题。

      域名注册解析

      我用的是搬瓦工服务器,$49.99一年,用优惠码大概$46左右,配置也很不错,最重要的是无需备案~太爽了!还可以搭梯子(谨慎,容易被封IP)

      avatar

但是用这个服务器的时候他为了安全,ssh端口号是随机的,因此最好自己改回22,然后重启reboot,因为自动部署默认22端口,否则会造成一直连不上服务器的情况。

然后,我在namesilo上注册了一个.com域名,一年只要$8.99,配上优惠码还能再省$1,可以说很划算了,我的博客,接着配置域名解析,教程很多,附上我参考的解析教程–>域名解析

参考博客

大功告成!!!这样博客就成功部署到云服务器上啦速度比GitHub快了很多

猜你喜欢

转载自blog.csdn.net/m0_37286282/article/details/89496946