记录Hexo部署到阿里云服务器全过程

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 最近打算搭建一个教程网站,专门放我写的一些教程一类的文章,但是整天CRUD实在是太烦了,还是找点简单粗暴的办法为好。考虑到这个网站的更新频率会非常非常慢,所以打算用Hexo这个博客框架。毕竟纯静态的比较安全,Hexo也属于开箱即用的,比较适合这个网站。

最近打算搭建一个教程网站,专门放我写的一些教程一类的文章,但是整天CRUD实在是太烦了,还是找点简单粗暴的办法为好。


考虑到这个网站的更新频率会非常非常慢,所以打算用Hexo这个博客框架。毕竟纯静态的比较安全,Hexo也属于开箱即用的,比较适合这个网站。


前期准备


前期没什么要准备的,主要就是安装nodegit这两个工具。


这两个工具安装很简单,不同的平台也有不同的安装方法,这里就不再赘述了,大家自行安装就可以,网上也有很多教程。


本地部分


安装hexo-cli


要使用Hexo,需要使用npm安装一个叫hexo-cli的工具。安装非常简单,有点类似于vue-cli的安装(毕竟都是node写的嘛)。在终端中执行:


sudo npm install hexo-cli -g

安装完毕后使用hexo命令检查是否安装成功:


出现上图的输出,就表示安装成功了。


建立本地文件夹


有了hexo-cli之后,就可以建立一个文件夹作为本地文件的路径了。


选一个自己喜欢的路径,cd过去,然后执行以下命令来初始化一个Hexo项目:


hexo init wendev_tutorial
cd wendev_tutorial
sudo npm install

这样本地文件夹就建立好了,可以在本地文件夹进行编辑与预览了。


主题安装与配置


考虑到这个站点是一个教程网站,所以我选择了我认为最合适的主题:3-hexo。理由是这个主题可以清晰地列出所有分类的所有文章,而且阅读体验还挺不错的。给作者点个赞。


主题的安装:


git clone https://github.com/yelog/hexo-theme-3-hexo.git themes/3-hexo

_config.yml中配置(大概在第96行):


theme: 3-hexo

然后就可以启动了:


hexo clean && hexo g && hexo s

效果(主题已经过本人略微修改):


接下来把我以前写好的一些文章放进来:



这样就可以部署上线了。


服务端部分


环境准备


如果服务器没有安装git的话,需要安装git。


此外,因为我的服务器上正在跑着我的个人网站,它已经占用了80端口,要再加一个网站的话需要做反向代理,于是需要安装nginx


首先把我的个人网站的端口改成10000备用,把80端口空出来,然后安装Nginx:


sudo yum -y install nginx
nginx # 启动nginx试一下

建立Git仓库


Hexo可以使用Git来部署,这样每次写完之后就都可以使用git来一键部署了,比较方便。


注意:如果本地没有配置ssh,先配一个ssh。这里因为我已经有了,就不再配置了。


开始前先切到root用户,然后执行:


useradd git # 添加一个新用户
passwd git # 设置git用户密码
su git # 切换用户进行后续操作
cd /home/git/
mkdir -p projects/blog # 把项目目录建立起来
mkdir repos && cd repos
git init --bare blog.git # 创建仓库
cd blog.git/hooks
vim post-receive # 创建一个钩子

post-receive文件的内容如下:


#!/bin/sh
git --work-tree=/home/git/projects/blog --git-dir=/home/git/repos/blog.git checkout -f

之后退出vim,继续进行用户相关的操作:


chmod +x post-receive # 添加可执行权限
exit # 返回到root用户
chown -R git:git /home/git/repos/blog.git # 给git用户添加权限

这样Git仓库就配好了。在本地试一下能不能把空仓库拉下来:


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

如果能拉下来,就说明配置成功了。


本地建立SSH信任关系


目前每次对git仓库进行操作都需要输入密码,不太方便。但是我们已经配置了SSH,就可以通过建立SSH信任关系来免去输入密码的步骤:


ssh-copy-id -i ~/.ssh/id_rsa.pub git@server_ip # 建立信任关系
ssh git@server_ip # 试一下能不能登录

如果不能登录或者还是要输入密码,就说明前面的操作有误,再检查一下吧。


更改git用户默认的shell


为了安全起见,这个部署用的git用户最好只能用git clone等操作,所以需要更改它默认的shell:


cat /etc/shells # 查看 git-shell 是否在登录方式里面
which git-shell # 找到git-shell的路径,记下来
vim /etc/shells

然后把刚才记下来的路径添加进去,保存,然后vim /etc/passwd,把git:x:1000:1000::/home/git:/bin/bash修改为git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell


这样本地再用ssh应该就没法登录了,只能进行git操作。


部署上线


有了git仓库,就可以部署hexo文件上去了。


首先改一下_config.yml


deploy:
type: git
repo: git@your_ip:/home/git/repos/blog.git
branch: master

然后安装hexo-deployer-git,否则没法使用git部署:


sudo npm install --save hexo-deployer-git

编辑package.json文件,添加部署脚本:


"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo clean && hexo g -d",
"server": "hexo server"

},


然后执行npm run deploy就可以把文件部署上去了,出现类似于下面的提示,就说明部署成功。


配置Nginx反向代理


首先需要配置一下域名解析记录,把tutorial.wendev.site也绑定到现在的ip上,以便进行下一步操作。


前面配置完仓库,也把文件部署上去了,我们把Nginx反向代理也来配置一下。


cd /etc/nginx
cp nginx.conf nginx_backup.conf # 备份配置文件
vim nginx.conf

主要是开头的


user root;

和服务器部分的


    server {
    listen       80;
    server_name  www.wendev.site;

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

    location / {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:10000;
    }
}

server {
listen      80;
server_name wendev.site;

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

    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:10000;
    }
}

server {
listen 80;
server_name tutorial.wendev.site;

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

    location / {
        root /home/git/projects/blog;
    index index.html index.htm;
    }

error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root html;
}
}


这样就可以把两个不同的域名 www.wendev.sitetutorial.wendev.site 分别绑定到10000端口(已有的个人网站)和新的hexo网站了。


然后重新加载一下配置:


nginx -s reload

访问tutorial.wendev.sitewendev.sitewww.wendev.site,发现三个网站都正常,大功告成!


云服务器ECS地址:阿里云·云小站

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
域名解析 网络协议 安全
服务器部署访问出错的原因和解决办法
部署到服务器后无法访问可能是由于配置错误、权限问题或网络设置不当。解决办法包括检查服务器配置文件、确保文件路径正确、调整权限设置以及检查防火墙和端口设置。
13 4
|
8天前
|
Java 应用服务中间件 Linux
在阿里云服务器上部署Tomcat详细图文详解
本文介绍了在阿里云服务器上安装和配置JDK和Tomcat的步骤。首先,需要注册阿里云账号并进行实名认证,然后购买并设置服务器。接着,通过File Zilla连接服务器,创建Java和Tomcat的安装目录,并将JDK和Tomcat的tar.gz文件上传到服务器,解压并重命名。之后,配置JDK的环境变量,将catalina.sh复制到/etc/init.d/目录下,并修改相关配置。最后,启动Tomcat并配置安全组规则,确保可以通过公网访问。
|
8天前
|
弹性计算 Java Linux
阿里云服务器搭建部署宝塔详细流程
该内容是一个阿里云服务器和域名的配置指南。首先,需注册阿里云账号并进行企业实名认证。接着,选购服务器如2核2G1兆的Linux系统,并购买域名。完成域名备案后,进行域名解析和ICP备案。然后,通过远程连接登录服务器,重置密码,安装宝塔面板。在安全组中开启宝塔面板随机生成的端口。最后,登录宝塔面板安装LNMP环境,配置数据库如MySQL和Redis,部署JDK、Tomcat,上传前端和后端项目以实现上线。
|
9天前
|
弹性计算 JavaScript Java
阿里云服务器搭建部署宝塔详细流程
以下是内容的摘要: 本文主要介绍了在阿里云上创建和配置服务器环境的步骤,包括注册阿里云账号、实名认证、购买和设置服务器、域名的获取与备案、以及使用宝塔面板安装和配置环境。首先,用户需要注册阿里云账号并进行实名认证,选择合适的服务器配置。接着,购买服务器后,要准备并备案域名,以便通过友好的网址访问网站。在服务器上安装宝塔面板,可以方便地管理和配置LAMP/LNMP/Tomcat/Node.js等应用环境。完成这些步骤后,用户还需要在宝塔面板中安装MySQL、Redis等数据库,部署Java或Vue项目,并配置相关端口。最后,将前端项目打包上传至服务器,并设置站点,即可实现网站的上线。
|
9天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
11天前
|
NoSQL 关系型数据库 MySQL
阿里云服务器部署项目流程
本文主要讲解阿里云服务器的部署,如何选择配置等
|
14天前
|
Java 应用服务中间件 Linux
阿里云服务器部署多个tomcat
阿里云服务器部署多个tomcat
|
1月前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
1月前
|
存储 弹性计算 数据可视化
要将ECS中的文件直接传输到阿里云网盘与相册(
【2月更文挑战第31天】要将ECS中的文件直接传输到阿里云网盘与相册(
420 4
|
1月前
|
SQL 弹性计算 安全
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程
当我们通过阿里云的活动购买完云服务器之后,并不是立马就能使用了,还需要我们设置云服务器密码,配置安全组等基本操作之后才能使用,有的用户还需要购买并挂载数据盘到云服务器上,很多新手用户由于是初次使用阿里云服务器,因此并不知道这些设置的操作流程,下面给大家介绍下这些设置的具体操作流程。
购买阿里云活动内云服务器之后设置密码、安全组、增加带宽、挂载云盘教程