有问题可以留言相互讨论,我的hexo博客地址,请勿频繁访问或者攻击,仅供学习和参考。
git --version
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker
yum remove git
用于存放下载的git包
cd /usr/local/src/
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版本较低所致,与所需编译条件不匹配。
yum install centos-release-scl scl-utils-build -y
yum list all --enablerepo='centos-sclo-rh' | grep "devtoolset-"
yum install devtoolset-8-toolchain -y
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 --version
成功出现git version 2.32.0即表示安装成功。
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
这部分很简单,百度搜索git的ssh配置即可。
复制里面的内容。
su git
mkdir ~/.ssh
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
如果设置有密码,输入密码即可连接到远程终端。
su root
mkdir /home/hexo
chown git:git -R /home/hexo
所要达到的实际效果是本地创建博客后能一键部署到服务器上,后续再修改博客的时候可以一键同步到服务器上,这就是自动化部署。
首先要在远程服务器上配置相应文件。
su root
cd /home/git
git init --bare blog.git
chown git:git -R blog.git
vim blog.git/hooks/post-receive
#!/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配置,然后就可以很方便的使用一些功能。
www.domain.com/hexo
cd /home/git
vim blog.git/hooks/post-receive
#!/bin/bash
git --work-tree=/www/wwwroot/www.domain.com/hexo --git-dir=/home/git/blog.git checkout -f
chown git:git -R /www/wwwroot/www.domain.com/hexo
windows:到git官网上下载,Download git,下载后会有一个Git Bash的命令行工具,以后就用这个工具来使用git。
可以更改Git的安装目录到其他磁盘,环境变量一般安装的时候会自动配置,命令行界面如果输入git --version
产生相应的git版本则表示成功安装。
下载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关掉服务
配置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用户对所要替换的远程目录权限上的问题,和一些配置文件的路径填写有问题。下面统一解决一些常见的错误。
通过在服务器端执行chmod命令,修改工作目录和git目录的文件权限
即类似
chown git:git -R /www/wwwroot/www.domain.com/hexo
最后一个参数为修改的文件夹目录,-R表示递归,即文件夹下所有的东西均修改权限。
可以直接以root用户访问部署远程服务器,即在本地Blog文件夹下的_config.yaml中修改deploy的repo参数。
deploy:
type: git
repo: root@这里改为服务器公网IP:/home/git/blog.git
branch: master
可以查看博客页面的源码,发现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
这时格式和图片就能正常显示在服务器上了。
由于本人修改配置过于频繁,很难记清现在将Apache配置文件改动成什么样了,所以大家可能在宝塔的Apache配置上会出现一些问题。
但我记得在宝塔上安装Apache是已经写好了虚拟目录有关的配置文件
在宝塔面板->软件商店,Apache设置里点击配置修改,Ctrl+F查找,输入follow,可以看到下图位置
将其修改成如图所示内容即可。
<Directory />
Options FollowSymLinks
AllowOverride none
Require all granted
</Directory>
其中Options FollowSymLinks换成Options Indexes FollowSymLinks也能达到同样的效果,不过此时访问者同样能访问到该虚拟目录下的文件资源,相当于直接暴露了部分源码,不太推荐修改成带Indexes的配置。
之后就可以通过https://域名/hexo的方式在本机访问到服务器上搭建的博客了。
一般本机防火墙不需要任何的设置,只可能是服务器防火墙出现问题。
一般要在宝塔面板或命令行界面打开这些端口
实在解决不了端口放行的问题就先暂时关闭防火墙进行网站的访问测试。