阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 744阅读
  • 0回复

[环境部署]云服务器搭建hexo博客,git hooks自动更新

级别: 论坛版主
发帖
371
云币
447

vq1u !SY  
预览目录 4K$_d,4`U  
>+Y@rj2  
.`^wRpa2M  
配置服务 vgN%vw pL  
1.安装nginx _^p\ u  
2.安装node.js ( c +M"s  
3.安装git P"r7m  
本地配置 _.5AB E  
因为己喜欢瞎拍一些东西,希望弄个博客记录记录,原以为就在eiblog的基础上添加相册栏目,自定义一些东西,但自己的前端知识几乎为0,行动起来,需要点时间。看到hexo上有很多适合的主题,决定用hexo搭建一个,通过git hooks就可线下推送,线上自动拉取部署。 ,j%feC3  
nQd~i0`vB  
LuWY}ste  
其原理是:通过本地渲染静态文件,将文件推送到GitHub仓库,在服务器上再通过git-hooks同步网站根目录。这样就完成了线下一次操作,线上自动更新的步骤。 S{UEV7d:n0  
#4F0o@Z  
U\6Ee-1#_  
废话不多说,看操作。 d>Ky(wS  
`}#n#C)  
9%DLdc\z;  
配置云服务 y>& s;  
在配置云服务器前,你得首先本地搭建好你的hexo博客,并可以通过hexo d部署到GitHub。 EB8<!c ?  
f&? 8fB8{  
[ip}f4K  
其步骤很多博客都有详细的描叙,不做累述。 Y"E*#1/  
-o YJ&r  
9.Yn]O  
1.安装nginx IaGF{O3.  
在屈屈的博客中很多关于Nginx的按照,配置,你可以看看。 kjj?X|Un  
qKNHhXi  
]GXE2A_i;  
安装完成后你可以在配置中单独指定一个配置,或直接修改原配置指向你准备存放静态文件的文件夹。我用的前者。在nginx.conf文件添加指定配置文件路径, z/|tsVK  
#fxdZm,  
DhT8Kh{  
include            /data/hexo/nginx/cong.d/*.conf; hc]5f3Z  
在/data/hexo/nginx/cong.d/ 下添加配置文件razeencheng.com.conf  S=X_7V  
1_z~<d @?;  
yS@xyW /  
NGINX % r0AhWv  
server { #w;%{C[D  
    listen                       443; wZ/ b;%I!  
L%I8no-Q  
/y- 8dgv0a  
    server_name                  razeencheng.com; ;D}E/' =  
    server_tokens                off; 7?2<W-n  
PRN%4G  
g>-u9%aa  
    access_log                   /data/hexo/nginx/logdata/nginx.log; 47^7S=  
>0I\w$L  
3| 0OW Jk  
    # ip 黑名单 77;|PKE /  
    include                      /data/hexo/nginx/ip.blacklist; VP:9&?>G  
:tX,`G  
}?[a>.]u  
    ssl_ct                       on; R9InUX"k  
YT)@&HaF  
Ia-nA|LBxI  
    # 中间证书 + 根证书 %Sw hNn  
    ssl_trusted_certificate      /data/hexo/nginx/ssl/razeencheng.com.pem; `<* tp@  
vS G vv43G  
nH|7XY9"  
    ssl_certificate              /data/hexo/nginx/ssl/razeencheng.com.pem; K7]QgfpSZ  
    ssl_certificate_key          /data/hexo/nginx/ssl/razeencheng.com.key; "SU O2-Gj  
    ssl_ct_static_scts           /data/hexo/nginx/ssl/scts/ecc/; Z1oUAzpj4  
8J8@0  
U$j?2|v-x  
    ssl_dhparam                  /data/hexo/nginx/ssl/dhparams.pem; |:5[`  
P#qQde/y  
r $&WwH2^  
    ssl_ciphers                  EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5; N m@UM*D  
    ssl_prefer_server_ciphers    on; IeGVLC  
    ssl_protocols                TLSv1 TLSv1.1 TLSv1.2; B^"1V{M  
    ssl_session_cache            shared:SSL:50m; "%K[kA6  
    ssl_session_timeout          1d; 2Z*^)ZQB  
    ssl_session_tickets          on; zl@hg<n  
EGK7)O'W  
| gP%8nh'C  
    # ssl stapling p=] z`t  
    ssl_stapling                 on; M]A!jWtE  
    ssl_stapling_verify          on; ;<nQl,2N  
    resolver                     114.114.114.114 8.8.8.8 valid=300s; Y]H,rO  
    resolver_timeout             10s; ,=`iQl3(y/  
nBGcf(BE.$  
'Sjt*2blq  
    if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) { Q ;$NDYV1  
        return                   444; 3V@!}@y,F6  
    } x^/453Lk  
?eri6D,86w  
'*n2<y  
    location / { +X!QH/ 8  
        root /data/hexo/nginx/html; T:!Re*=JJ  
        index index.html; lIgAc!q(  
    } HHg[6aw  
} oE'Flc.  
从配置文件也可看出,我将网站的根目录放在/data/hexo/nginx/html文件夹。 4pZ=CB+j  
= K3NKPUI  
&T\,kq >)  
2.安装node.js d^^EfWU  
$ yum install nodejs -y X"O^4MnvI  
3.安装git 3Tz~DdB  
$ yum install git -y +<w\K*  
新建git用户,添加权限。 do=s=&T  
s.XLC43Rs  
y rmi:=N(  
BASH _X]S`e1F  
## 新建git用户 Pm!/#PtX  
$ adduser git OmAa$L,'w  
$ chmod 740 /etc/sudoers S)vNWBO  
$ vim /etc/sudoers 1$1P9x@H  
Kld#C51X f  
fm&pxQjg  
## 添加下面一行设置git权限 H:_R[u4r  
git   ALL=(ALL)     ALL N_| '`]D  
JFh_3r'  
9y(491"o  
$ chmod 440 /etc/sudoers #Hi$squJ  
之后我们初始化一个Git的裸仓库,它只是为共享而存在,不需要工作区。 /'Q2TLy=  
,'>O#kD  
&@/25Y2  
BASH q-TDg0  
$ su git z 3N'Xk  
$ cd /data/hexo %3mh'Z -[f  
$ git init --bare hexo.git *PF=dx<8  
如果你之前你有设置过ssh登陆,可以测试一下是否测试成功。 klSAY  
J3,m{%EtNM  
,8Q&X~$rY  
$ ssh git@ip(or domain) 22FHD4  
如果能登录的话就设置OK了。 i;mA|  
raCgctYVq  
H/N4t Wk"  
如果没有设置,可看ssh免密登陆,设置成功及OK。 Q+a"Z^Z|  
SCo;Ek  
t(:w):zE  
为git用户添加ssh key >S'IrnH'!  
B`wrr8"Rz  
IHcR/\mz  
BASH yrQf PR  
$ su git eq,`T;  
$ cd ~ *m*sg64Zw  
$ mkdir .ssh qUKSo9  
# 然后将你电脑上的公钥复制到authorized_keys,保存。 olca Z  
$ vim /home/git/.ssh/authorized_keys E8"$vl&c]  
$ chmod 600 .ssh/authorized_keys ,WtJ&S7?  
$ chmod 700 .ssh/ +~f=L- >  
赋予git对网站目录的所有权。 g[$4a4X  
W$Sc@!M3{  
J/B`c(  
$ chown git:git -R /data/hexo/nginx/html Q?/qQ}nNw  
配置git hooks。 R(p3* t&n  
M<'He.n  
"?ON0u9  
$ cd ~/data/hexo/hexo.git/hooks i6)HC  
编辑post-receive文件, 输入如下内容保存退出。 3 @%XR8ss  
x4-_K%  
y7| 3]>Z  
BASH '; ;X{a  
# !/bin/bash 20cEE>  
rm -rf /tmp/hexo e\r%"~v  
git clone /data/hexo/hexo.git do:IkjU~  
rm -rf /data/hexo/nginx/html RAj>{/E#W  
cp -rf /tmp/hexo/* /data/hexo/nginx/html R'Uf#.  
然后赋予脚本执行权限。 AL;4-(KH  
u7lO2 C7  
Eo>EK>  
$ chmod +x post-receive D|$Fw5!^k6  
之后重启nginx就可以了。 0sI7UK`m  
M< /  
_ o.j({S  
本地配置 B}0!b7!  
修改_config.yml的deploy内容,例如: Ui.S)\B  
2]=`^rC*  
~3Y4_b5E  
YAML H{hzw&dZ<P  
deploy: iF Zqoz  
  type: git tE,& G-jU  
  repository: blogit:/data/hexo/hexo.git -tfUkGdx;l  
  branch: master 8p]9A,Uq&  
.ssh/config这么配置的。 xJ9aFpTC  
|enb5b78  
Lg{M<Q)4  
SSH -\n%K  
Host blogit yM Xf&$C  
    HostName 120.78.181.210 H*Tzw,f~ v  
    User git Q89fXi0Ivb  
    IdentityFile ~/.ssh/blog.pem ty'/i!/\  
以后正常的hexo d既可以一键部署。 }$i/4?dYsQ  
LVT:oIQ  
nJ h)iQu  
转载:RAZEEN 博客
本人不是云栖社区工作人员。
无论您在使用中遇到什么问题,不要出言不逊!谢谢合作!
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)