我的Hexo博客地址
有问题可以留言相互讨论,我的hexo博客地址,请勿频繁访问或者攻击,仅供学习和参考。
主要在腾讯云服务器Centos7.9版本,利用宝塔搭建Hexo博客站点,Windows本地上搭建Hexo博客项目,实现本地一键自动化部署到服务器上,拥有属于自己的博客网站
Centos 安装git并进行配置,利用宝塔配置站点
查看git 版本
git --version
安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker
卸载旧版本git
yum remove git
打开文件夹
用于存放下载的git包
cd /usr/local/src/
下载最新版git压缩包
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.32.0.tar.xz
解压
tar -xvf git-2.32.0.tar.xz
切换到解压后的文件目录
cd git-2.32.0
编译
make prefix=/usr/local/git all
会显示一堆.o类型的文件,表示正在从源码编译。
未显示错误直接跳到“安装”步骤
如果出现错误collect2: error: ld returned 1 exit status.
原因是gcc版本较低所致,与所需编译条件不匹配。
升级gcc版本(可选)
- 安装scl源
yum install centos-release-scl scl-utils-build -y
- 列出scl可用的列表
yum list all --enablerepo='centos-sclo-rh' | grep "devtoolset-"
- 安装8版本的gcc、gcc-c++、gdb工具链(toolchian)
yum install devtoolset-8-toolchain -y
- 启动gcc8
scl enable devtoolset-8 bash
报错:bash: __vsc_prompt_cmd_original: command not found
bash: __vsc_prompt_cmd_original: command not found
借用stackoverflow上的Solution
You can test the following method.
Using an editor such as nano or vim, Add the line unset PROMPT_COMMAND to your .bashrc file, and it will take effect on the next session.
To apply the change immediately for the life of the current shell session, type unset PROMPT_COMMAND in your terminal window.
vi ~/.bashrc
用于在行尾添加unset PROMPT_COMMAND
source ~/.bashrc
表示重新加载文件.bashrc
执行完毕后再次启动gcc8
scl enable devtoolset-8 bash
通过scl命令启动gcc,这个只是暂时的,当你的shell关闭后或者重启就会恢复原来的版本,要想一直使用升级后的版本可以使用如下命令:
echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile
再次执行编译命令发现又报错:
reftable/libreftable.a(block.o): In function `block_reader_init':
/usr/local/src/git-2.37.3/reftable/block.c:218: undefined reference to `uncompress2'
collect2: error: ld returned 1 exit status
make: *** [Makefile:3077: t/helper/test-tool] Error 1
暂时解决不了这个问题先搁置。
可能是由于git版本比较新,用到了一些新的函数。建议安装旧版本git
安装
make prefix=/usr/local/git install
配置环境变量
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile && source /etc/profile
也可以将该语句直接写入相应的文件中,再执行source命令使生效。
vim /etc/profile
将下面两行命令添加到profile文件末尾
PATH=$PATH:/usr/local/git/bin # git 的目录
export PATH
按i进入编辑模式,按esc退出,再按:wq保存编辑。
使写入语句生效:
source /etc/profile
查看安装的git版本
git --version
成功出现git version 2.32.0即表示安装成功。
配置Git
创建git用户
adduser git
设置用户密码(可选)
passwd git
分配权限
chmod 740 /etc/sudoers
vim /etc/sudoers
按 i 键进入文件的编辑模式,找到如下字段root ALL=(ALL) ALL
在其后面增加一句:
git ALL=(ALL) ALL
按 Esc 键退出编辑模式,输入:wq 保存退出。
退回权限:
chmod 400 /etc/sudoers
生成Windows本地密钥
这部分很简单,百度搜索git的ssh配置即可。
配置密钥
- 打开本地端,也就是自己Windows主机C盘目录下的用户文件夹下的用户名文件夹下的.ssh文件文件夹,打开id_isa.pub
复制里面的内容。
- 返回Linux服务器端,创建.ssh文件夹
su git mkdir ~/.ssh
- 创建.ssh/authorized_keys文件,打开authorized_keys文件并将刚才在本地机器复制的内容拷贝其中并保存
vim ~/.ssh/authorized_keys
按i进入编辑模式粘贴完按 Esc 键退出编辑模式,输入:wq 保存退出。
- 修改权限
chmod 755 ~ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
测试连接
yourIp为远程服务器的ip地址,腾讯云轻量云服务器一般是公网IP:12X.XXX.XXX.XX
ssh -v git@yourIp //yourIp为你的服务器ip
如果设置有密码,输入密码即可连接到远程终端。
创建远程博客目录
- 切换到远程Linux服务器端
- 切换到root用户,创建一个目录用于存储网站的根目录/home/hexo并赋给相应权限
su root mkdir /home/hexo chown git:git -R /home/hexo
Linux自动化部署设置
Linux服务器配置
所要达到的实际效果是本地创建博客后能一键部署到服务器上,后续再修改博客的时候可以一键同步到服务器上,这就是自动化部署。
首先要在远程服务器上配置相应文件。
- 获取root权限
su root
- 建立git仓库并初始化
cd /home/git git init --bare blog.git
- 修改blog.git的权限(-R 是递归,即文件夹下的所有文件夹或文件都会递归修改权限)
chown git:git -R blog.git
- 在 /home/git/blog.git 下,有一个自动生成的 hooks 文件夹,我们创建一个新的 git 钩子 post-receive,用于自动部署。
vim blog.git/hooks/post-receive
- 按 i 键进入文件的编辑模式,在该文件中添加两行代码(将下边的代码粘贴进去),指定 Git 的工作树(源代码)和 Git 目录。
#!/bin/bash git --work-tree=/home/hexo --git-dir=/home/git/blog.git checkout -f
按 Esc 键退出编辑模式,输入:wq 保存退出。
- 修改文件的执行权限
chmod +x /home/git/blog.git/hooks/post-receive
宝塔配置
这里采用宝塔的一键LAMP配置,然后就可以很方便的使用一些功能。
添加站点
- 在域名中添加自己购买的域名,并确保已经解析IP到自己腾讯云服务器上了,这个步骤网上有很多教程,自行完成域名相关问题,证书SSL申请等,如果域名有解析可以直接勾上。
- 证书的添加自行百度搜索,强制https开关打开,保证安全性。
- 可以看到这时站点的目录在/www/wwwroot/所填写的域名,与我们实际的Hexo博客的根目录位置/home/hexo不符。
- 一个可行的解决办法是将/home下的hexo文件夹移到/www/wwwroot/所填写的域名文件夹下,这样就可以通过域名加上/hexo的方式来访问到我们的博客即
www.domain.com/hexo
这里的www.domain.com要改成自己购买的域名,下同 - 修改方式如下:
- 在 /home/git 下,有一个自动生成的 hooks 文件夹,进入该文件目录下,我们创建一个新的 git 钩子 post-receive,用于自动部署。
cd /home/git vim blog.git/hooks/post-receive
- 按 i 键进入文件的编辑模式,在该文件中重写原有的两行代码,改变工作树目录为宝塔站点目录(将下边的代码粘贴进去),指定 Git 的工作树(源代码)和 Git 目录。
#!/bin/bash git --work-tree=/www/wwwroot/www.domain.com/hexo --git-dir=/home/git/blog.git checkout -f
- 按 Esc 键退出编辑模式,输入:wq 保存退出。
- 注意重新修改git用户对该目录的访问权限
chown git:git -R /www/wwwroot/www.domain.com/hexo
Windows搭建Hexo,配置自动化部署
Windows安装Git
windows:到git官网上下载,Download git,下载后会有一个Git Bash的命令行工具,以后就用这个工具来使用git。
可以更改Git的安装目录到其他磁盘,环境变量一般安装的时候会自动配置,命令行界面如果输入git --version
产生相应的git版本则表示成功安装。
Windows安装Node.js并初始化Hexo
-
下载node.js安装程序(windows.msi)(也可以安装在其他盘中) 同样,环境变量也会在安装程序的时候自动配置了。
-
命令行界面输入以下命令,安装Hexo
$ npm install -g hexo-cli
-
一般Windows的cmd界面都是在C盘,如果想在其他盘建立博客的目录,可以先跳转的其他路径。键入下面命令可以在当前目录创建文件夹名为Blog的目录
hexo init Blog
-
进入该文件夹并执行安装命令
cd Blog npm install
新建完成后,指定文件夹目录下有:
node_modules: 依赖包
public:存放生成的页面
scaffolds:生成文章的一些模板
source:用来存放你的文章
themes:主题
_config.yml: 博客的配置文件安装部署包
npm install hexo-deployer-git --save
-
本地启动Hexo服务
hexo g hexo server
在浏览器输入localhost:4000就可以看到生成的博客了。ctrl+c关掉服务
Windows本地端配置自动化部署
配置hexo
-
配置 _config.yml 文件
在Blog的文件夹下找到 _config.yml 文件并打开,找到文件末尾的deploy 做以下配置deploy: type: git repo: git@这里改为服务器公网IP:/home/git/blog.git branch: master
保存并退出。
到这里就要开始进行真正的部署环节了cd Blog hexo clean hexo generate hexo deploy
-
cmd进入命令行界面,先进入你的Blog文件夹下。
-
执行hexo clean命令
-
hexo generate 命令可以简写成hexo g 正如前面的 hexo server可以简写成hexo s
-
hexo deploy 命令可以简写成hexo d
-
正常情况下此时可以将本地的博客部署到远程服务器上,通过配置好的远程服务器的git用户登录来达到这一目的,但是可能会出现一些奇奇怪怪的错误,最主要的还是git用户对所要替换的远程目录权限上的问题,和一些配置文件的路径填写有问题。下面统一解决一些常见的错误。
常见问题
问题1
hexo自动化部署显示Permission denied或有权限问题
Solution 1:
通过在服务器端执行chmod命令,修改工作目录和git目录的文件权限
即类似
chown git:git -R /www/wwwroot/www.domain.com/hexo
最后一个参数为修改的文件夹目录,-R表示递归,即文件夹下所有的东西均修改权限。
Solution 2:
可以直接以root用户访问部署远程服务器,即在本地Blog文件夹下的_config.yaml中修改deploy的repo参数。
deploy:
type: git
repo: root@这里改为服务器公网IP:/home/git/blog.git
branch: master
问题2
服务器搭建好的页面没有图片,css等样式
Solution :
可以查看博客页面的源码,发现url引用的链接是什么example.com下的东西,很明显,这里需要改动一下,可以不直接改源码,改动本地博客的_config.yaml文件里的内容,再次部署上传即可。
找到配置文件下的url参数,将内容修改为http://公网ip/hexo或者https://www.domain.com即可,这其实是访问的刚才宝塔添加的站点(/www/wwwroot/域名)下的/hexo文件夹下的资源。
url: https://www.domain.com/hexo
重新执行部署的三条命令
hexo clean
hexo g
hexo d
这时格式和图片就能正常显示在服务器上了。
问题3
Apache虚拟目录配置
由于本人修改配置过于频繁,很难记清现在将Apache配置文件改动成什么样了,所以大家可能在宝塔的Apache配置上会出现一些问题。
但我记得在宝塔上安装Apache是已经写好了虚拟目录有关的配置文件
Solution :
在宝塔面板->软件商店,Apache设置里点击配置修改,Ctrl+F查找,输入follow,可以看到下图位置
将其修改成如图所示内容即可。
<Directory />
Options FollowSymLinks
AllowOverride none
Require all granted
</Directory>
其中Options FollowSymLinks换成Options Indexes FollowSymLinks也能达到同样的效果,不过此时访问者同样能访问到该虚拟目录下的文件资源,相当于直接暴露了部分源码,不太推荐修改成带Indexes的配置。
之后就可以通过https://域名/hexo的方式在本机访问到服务器上搭建的博客了。
问题4
防火墙问题
Solution :
一般本机防火墙不需要任何的设置,只可能是服务器防火墙出现问题。
一般要在宝塔面板或命令行界面打开这些端口
文章来源:https://www.toymoban.com/news/detail-455608.html
实在解决不了端口放行的问题就先暂时关闭防火墙进行网站的访问测试。文章来源地址https://www.toymoban.com/news/detail-455608.html
到了这里,关于Centos7.9宝塔搭建Hexo博客,实现本地一键自动化部署到服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!