文章目录

  • 前言
    • 修改Apache端口号
    • 思路
  • 正文
    • 1. 服务器创建git用户
    • 2. 服务器打开RSA认证
      • 2.1 开启认证配置
      • 2.2 建立ssh信任关系
    • 3.创建blog.git空仓库
    • 4. hexo配置
    • 5. nginx配置
    • 6. Tips
      • (1) nginx常用的命令
      • (2)云网站

前言

之前用Gitee的Pages对博客进行部署,怎么用也不习惯,今天续费阿里云服务器了,开造~

前期准备:

  • 本地hexo构建可运行发布
  • 阿里云服务器能访问
  • 有一个域名(非必须项,可以公网ip查看嘛~)

服务器环境:

  • Ubantu16.04(我也想换centos,但我的数据库也需要移植,qaq)
  • mysql5端口号3306 + myphpadmin (hexo是静态页面,用不到的啦;如果是WordPress就需要)
  • apache2端口号80 (之前的页面)
    因为我的服务器上正在跑着我的个人网站,要再加一个网站的话需要做反向代理,于是需要安装nginx,避免80端口冲突,这里先把apache80端口修改为82,这样nginx就可以作为主页面显示。

修改Apache端口号

  1. 修改服务器Apache端口配置文件:

    cd /etc/apache2
    vi ports.conf
    


    Listen 80改为82

  2. 在阿里云控制台添加安全组规则:添加82端口

  3. 重启Apache

    sudo /etc/init.d/apache2 restart
    

思路

回顾一下Hexo发布到gitee(Pages)的流程:

  • 本地计算机用Hexo构建静态文件public
  • 关键一步就是git上传github或gitee
  • 发布Pages将仓库目录https://gitee.com/cungudafa/cungudafa/index.html拉取到https://cungudafa.gitee.io/index.html

    当然我们需要上传的是public文件夹;每次xftp手动上传肯定是不现实且麻烦的,所以我们接下来要在服务器安装git。

正文

1. 服务器创建git用户

  1. 创建一个git用户,用来运行git服务。(root不安全)

    sudo useradd git -m
    

    注意:Ubantu下必须加上-m,才会自动新建用户目录/home/git/(后面配置和博客文件都放在这里)
    在/home/git/非常重要,如果出错,可以删除sudo userdel -r git用户,重新之前的步骤。

  2. 设置密码

    sudo passwd git
    


    密码是git用户的密码,简单为上啦。

  3. 增加git用户执行sudo的权限

    chmod 740 /etc/sudoers
    vim /etc/sudoers
    

    找到以下内容:root ALL=(ALL) ALL在下面添加一行

    git     ALL=(ALL)       ALL
    

    保存退出后改回权限:

    chmod 400 /etc/sudoers
    

2. 服务器打开RSA认证

RSA用公钥加密,私钥解密,成为加密通信。
用私钥加密,公钥解密,就是认证。(这样就能证明消息是你发出的。)
因为:公钥大家都有,私钥就只有一个,在你自己手里。

2.1 开启认证配置

服务器端:

vim /etc/ssh/sshd_config


在sshd_config中开启以下几项:(前两项yes,后一项修改为如下)

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

重启sshd

systemctl stop sshd.service
systemctl start sshd.service

2.2 建立ssh信任关系

本地电脑生成秘钥对-》发送公钥到服务器-》本地可免密连接服务器

  1. 在本地电脑: 生成密钥对

    ssh-keygen -t rsa -C "邮箱"
    


    成功后,会在c盘用户下新建秘钥对:

  2. 在服务器: 切换至git用户,创建 ~/.ssh 文件夹

    su git
    mkdir ~/.ssh
    

    或者root用户直接创建:

    cd /home/git/
    mkdir .ssh
    
  3. 在本地电脑: 发送公钥 id_rsa.pub/home/git/.ssh/authorzied_keys

    ssh-copy-id -i C:/Users/CUNGU/.ssh/id_rsa.pub git@47.93.50.90 //把公钥发送给服务器
    ssh git@47.93.50.90 // 测试能否登录
    

    本地登录效果:(authorzied_keys是一行一行添加的,显示成功添加一行)
    通过ssh能够直接登录操作shell,当然后面要关掉git的这个shell权限的,不然小心异地登录,危险危险。
    服务器文件夹也有了公钥:

  4. 文件夹权限调整:authorzied_keys权限为600时才生效
    git用户:

    su git
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorzied_keys
    

    第二步没有成功,说我没有权限(Permission denied);emmm,root设置好了
    root设置第二步:(注意在.ssh目录下)

    exit // 退出到 root 登录
    sudo chmod 600 authorized_keys
    


    现在就搭建好git桥梁,为后面实现hexo d部署时,可以自动上传啦!

3.创建blog.git空仓库

  1. 切换到git用户,接下来都是在git用户权限下进行操作:

    su git                //切换git用户
    cd /home/git/
    mkdir -p projects/blog  //创建你的博客目录
    mkdir repos && cd repos
    git init --bare blog.git  //创建一个空仓库
    cd blog.git/hooks
    vi post-receive  //创建hook钩子函数,输入以下内容
    git --work-tree=/home/git/projects/blog --git-dir=/home/git/repos/blog.git checkout -f
    chmod +x post-receive  // 修改钩子函数权限
    

  2. 改变 hexo.git 目录的拥有者为git用户:

    sudo chown -R git:git blog.git
    

  3. 添加备份目录

    cd /home/git/projects/
    mkdir -p tmp/blog
    

    修改钩子的内容:(重点是git clone 克隆到主目录home/git/projects/blog主目录要配置到nginx中去的)

    #!/bin/bash
    GIT_REPO=/home/git/repos/blog.git    # git仓库
    TMP_GIT_CLONE=/home/git/projects/tmp/blog
    PUBLIC_WWW=/home/git/projects/blog  # 网站目录
    rm -rf ${TMP_GIT_CLONE}
    git clone $GIT_REPO $TMP_GIT_CLONE
    rm -rf ${PUBLIC_WWW}/*
    cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
    chmod +x post-receive          # 赋予脚本的执行权限
    


    git用户赋权:

    su git
    chmod +x post-receive
    exit // 退出到 root 登录
    chown -R git:git /home/git/repos/blog.git // 添加权限
    sudo chown git:git -R /home/git/projects/
    


    蓝色为更新后的上传机制:

  4. 为了安全起见,我们需要关闭git账号登录shell的权限!!(一开始疏忽了 一个晚上服务器被异常登陆五次!!)建议这一步放在全文步骤配置好,最后最后来做

    vim /etc/passwd
    

    找到git账号(一般在最后面)添加:/usr/bin/git-shell

    加上git就只能git clone,如需shell操作,撤销/usr/bin/git-shell即可。

  5. 在本地任意一空目录,测试git仓库是否可用(测试步骤,稍后可清除)

    git clone git@47.93.50.90:/home/git/repos/blog.git
    

    实际拉下来的是你的/home/git/projects/blog,哈哈哈还是空的~

4. hexo配置

修改博客根目录配置_config.yml,部署部分,增添repo:(以git用户的身份操作)

deploy:type: gitmessage: updategitee: https://gitee.com/cungudafa/cungudafa.gitrepo: git@47.93.50.90:/home/git/repos/blog.gitbranch: master

接下来,在用hexo clean && hexo g -d时,就会自动上传啦!

只有在ssh秘钥配置成功,才能成功上传。如果需要修改公钥,要打开git操作shell的权限哦!vim /etc/passwd最后一句。及时开,及时关,做到万无一失。

现在public生成的静态文件已经完好推送到阿里云服务器了!
现在需要Pages工作:即将静态页面显示在网站上。

5. nginx配置

nginx显示blog的index.html:

我直接使用sudo apt install nginx安装是有问题的,看了n多教程之后,还是选择了源码安装

Hexo自动部署到阿里云(Ubantu16.04)【超详细踩坑记录】相关推荐

  1. Web项目(Vue)部署到阿里云服务器【超详细】

    超详细Vue项目部署篇!!! 小白的部署之路 前段时间白嫖了一年的阿里云服务器,想着手上有个项目,那就部署上去吧.找了很多教程,没有一篇是完整细致的,对于小白的我来说太难了,然后就进行了一天的踩坑之路 ...

  2. hexo使用jenkins自动部署到阿里云

    hexo使用jenkins自动部署到阿里云 本地安装hexo npm install hexo-cli -g hexo init blog cd blog npm install hexo serve ...

  3. 【STM32+机智云】机智云手机APP点灯实验踩坑记录

    [STM32+机智云]机智云手机APP点灯实验踩坑记录 一.实验背景 因为项目开发需要用到云平台,所以开始学习机智云平台,听说机智云比较容易入门,还有手机APP.因此开始了踩坑之旅,一切的一切开始于一 ...

  4. 暗影骑士擎Pro 之 安装Ubuntu18.04 双系统 踩坑记录(一)

    ​ 最近新买了个笔记本,即文章名字:Acer的暗影骑士擎Pro.考虑到学校附近也有几家宏基的官方售后店,万一出问题售后也好解决,然后就买了.因为我研究生阶段主要都用Ubuntu,所以必然得给他装个双系 ...

  5. github仓库项目自动部署到阿里云

    原文链接 前言 我的博客之前一直是手动更新的,需要自己打包,然后上传到网站.但是项目已经托管在github了,所以何不搞个自动部署呢? 想象一下,网站有修改之后,git push之后等几分钟,网站就自 ...

  6. Android 阿里云 视频直播安全下载踩坑实录

    最近项目里面集成了阿里云直播的内容,其中需要相应的下载视频的功能,遇到了一些问题,在这里贴出来跟大家分享一下, 我在项目中使用的是基于阿里云高级播放器3.4.8的sdk,具体怎么导入sdk ,请移步官 ...

  7. 华硕G60 VW6700安装win10 ubuntu 16.04双系统踩坑记录

    首先题主的笔电是华硕 G60 VW6700, 具体配置[这里可查],网上找了好多的教程,最后发现有篇文章说咱大华硕的笔电跟其他的笔电不一样.经过一次次的强制重启电脑后(听到硬盘咔嚓那种声音心里那个痛, ...

  8. 将hexo博客部署到阿里云服务器

    将hexo博客部署到阿里云服务器 一.本地的准备 为了使本地可以跟远程的github建立联系,需要在本地配置 SSH 密钥,这样我们就可以在本地直接提交代码到 GitHub 上或者远端 git 仓库. ...

  9. Hexo部署到阿里云

    Hexo部署到阿里云 参考文章 赋予权限 设置密码 测试使用ssh git 登录服务器 如果之前配过,则把本地的know_hosts删掉即可. 安装宝塔部署 然后安装Nginx 然后去阿里云搞个免费S ...

最新文章

  1. Linux系统时间和时序,什么是时序竞态 Linux系统时序竞态问题分析
  2. 【BZOJ】1692: [Usaco2007 Dec]队列变换
  3. 企业生产经营相关英文及缩写之(9)--称号/部门/公司
  4. 修改oracle用户密码永不过期
  5. Android系统(187)---最易懂的Activity启动模式详解
  6. Linux-Ubuntu下设置ufw防火墙
  7. melt函数_熊猫的melt()和使用pivot()函数取消融化
  8. 阿里云服务器价格表,阿里云服务器最新收费标准大全
  9. 格林威治时间转北京时间
  10. vue+element 下载or批量下载.mp3文件
  11. leach协议c++代码_leach协议matlab仿真代码
  12. Tabs | jQuery UI
  13. 宏宇社:国外lead入门教程(八)申请联盟时常见的词汇与问题答案
  14. Excel按不同的字体颜色对数据区域分类汇总求和
  15. qt vs tools
  16. 超好用的在线PDF转Word网站,真后悔没早发现
  17. TextView和EditText的gettext()方法
  18. vue h5手机网站支付宝支付 - 前端
  19. fedora23 桌面工具栏fedy, 桌面美化 allow: 2'lau不是2'l2u
  20. Ubuntu/macos下安装stlink-v2驱动

热门文章

  1. 联想x3650服务器安装硬盘,IBM x3650 M2服务器系统安装攻略(组图)
  2. 如何入门python爬虫?
  3. [Raspberry Pi Pico] SPI
  4. Nginx最新教程通俗易懂
  5. 2022字节跳动【数据仓库工程师】日常实习面经-----一面
  6. 等保分保关保密评|四道防线守护网络信息安全
  7. Matlab 非线性回归
  8. 占豪--2010年的市场机会在哪里(兼谈股指期货与楼市)
  9. linux下git和github搭建使用教程
  10. 最新国内云计算服务商市场占有率排名,阿里云腾讯云华为云谁排名高