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

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

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

f=f8) +5  
预览目录 NukcBH  
>&mNC \PA  
8^8fUN4<=  
配置服务 - %5O:n  
1.安装nginx bIR&e E  
2.安装node.js @Z fQ)q\  
3.安装git 7 B<  
本地配置 }K8W%h<3S  
因为己喜欢瞎拍一些东西,希望弄个博客记录记录,原以为就在eiblog的基础上添加相册栏目,自定义一些东西,但自己的前端知识几乎为0,行动起来,需要点时间。看到hexo上有很多适合的主题,决定用hexo搭建一个,通过git hooks就可线下推送,线上自动拉取部署。 +Ui @3Q  
.w .`1 g   
ZYi."^l  
其原理是:通过本地渲染静态文件,将文件推送到GitHub仓库,在服务器上再通过git-hooks同步网站根目录。这样就完成了线下一次操作,线上自动更新的步骤。 ,y'E#_cTgQ  
_(R1En1  
pel{ ;r  
废话不多说,看操作。 de&*#O5  
@`,~d{ziF  
&m8#^]*  
配置云服务 Tf|?j=f  
在配置云服务器前,你得首先本地搭建好你的hexo博客,并可以通过hexo d部署到GitHub。 FM80F_G^z  
gYtv`O  
49gm=XPm  
其步骤很多博客都有详细的描叙,不做累述。 Exy|^Dr0  
D>U b)i  
rQuozbBb  
1.安装nginx `~0^fSww  
在屈屈的博客中很多关于Nginx的按照,配置,你可以看看。 HVq02 Z  
;g:!WXd  
O>h,u[0  
安装完成后你可以在配置中单独指定一个配置,或直接修改原配置指向你准备存放静态文件的文件夹。我用的前者。在nginx.conf文件添加指定配置文件路径, sghQ!ux  
qir/Sa' [  
#jc+2F,+{  
include            /data/hexo/nginx/cong.d/*.conf; s5 P~feg  
在/data/hexo/nginx/cong.d/ 下添加配置文件razeencheng.com.conf 08+cNT  
!ULU#2'1  
npj_i /&g  
NGINX YM:;mX5B  
server { ,"@Tm01os  
    listen                       443; d,c8ks(  
E/OJ}3Rf  
>`3wEJ"<  
    server_name                  razeencheng.com; Dm")\"5\?  
    server_tokens                off; &J <km  
T[z}^"  
iK(G t6w  
    access_log                   /data/hexo/nginx/logdata/nginx.log; /F(wb_!  
s%{8$> 8V.  
`ZC{<eVJ}=  
    # ip 黑名单 n' XvPV|  
    include                      /data/hexo/nginx/ip.blacklist; 5 aT>8@$Z^  
}Sxuc/%:  
B5nzkJV<X  
    ssl_ct                       on; w`N|e0G@  
wa #$9p~Q  
'R{Xq HP  
    # 中间证书 + 根证书 gG 9e.++:  
    ssl_trusted_certificate      /data/hexo/nginx/ssl/razeencheng.com.pem; pZYcCc>6&  
XMR$I&;G8  
yX {CV7%O  
    ssl_certificate              /data/hexo/nginx/ssl/razeencheng.com.pem; FE0}V}\=h  
    ssl_certificate_key          /data/hexo/nginx/ssl/razeencheng.com.key; .[@TC@W  
    ssl_ct_static_scts           /data/hexo/nginx/ssl/scts/ecc/; &pL.hM^  
~_!lx  
3!&PI  
    ssl_dhparam                  /data/hexo/nginx/ssl/dhparams.pem; d~G, *  
'V*ixK8R0  
z vM=k-Ec  
    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; 86bRfW'  
    ssl_prefer_server_ciphers    on; 61XLL/=P  
    ssl_protocols                TLSv1 TLSv1.1 TLSv1.2; X\z `S##kj  
    ssl_session_cache            shared:SSL:50m; .tg2HKD_lW  
    ssl_session_timeout          1d; JTw< 4]  
    ssl_session_tickets          on; c]eDTbXd  
i42M.M6D$  
0ESxsba  
    # ssl stapling ZQ%4]=w  
    ssl_stapling                 on; P0Q]Ds|  
    ssl_stapling_verify          on; 5$<\  
    resolver                     114.114.114.114 8.8.8.8 valid=300s; k3pY3TA@w+  
    resolver_timeout             10s; :RxWHh3O  
YqJ `eLu  
)&nfV5@"  
    if ($request_method !~ ^(GET|HEAD|POST|OPTIONS)$ ) { p#]D-?CM)  
        return                   444; UdIl5P  
    } 3:S>MFRn.3  
'e/= !"T  
cl`!A2F1G#  
    location / { oHW:s96e  
        root /data/hexo/nginx/html; zZhAH('fG  
        index index.html; ||}k99y +  
    } rt _k }  
} | 4slG   
从配置文件也可看出,我将网站的根目录放在/data/hexo/nginx/html文件夹。 ^57G]$Q  
;$VQRXq  
\8KAK3i'  
2.安装node.js r?:zKj8/u  
$ yum install nodejs -y *ommU(r8  
3.安装git 3eg)O34  
$ yum install git -y S4salpz  
新建git用户,添加权限。 w;p: 4`  
$4*wK@xu  
oB$P6   
BASH &&Uc%vIN  
## 新建git用户 q JdC5z\[  
$ adduser git 6JCq?:#ab  
$ chmod 740 /etc/sudoers "1-gMob  
$ vim /etc/sudoers ~ ~"qT  
k|r+/gIV  
LE'8R~4.<  
## 添加下面一行设置git权限 LdPA`oI3j  
git   ALL=(ALL)     ALL " iz'x-wy  
\qo}}I>e  
'Avp16zg  
$ chmod 440 /etc/sudoers \i2S'AblYq  
之后我们初始化一个Git的裸仓库,它只是为共享而存在,不需要工作区。 =B/Ac0Y  
ri]"a?Rm  
L] syD n  
BASH >k)zd-  
$ su git <Rno ;  
$ cd /data/hexo W/\M9  
$ git init --bare hexo.git W`d\A3v  
如果你之前你有设置过ssh登陆,可以测试一下是否测试成功。  t=6[FK  
TA~FP#.  
d,"6s=4(q  
$ ssh git@ip(or domain) Z2t r?]  
如果能登录的话就设置OK了。 T 8. to  
< 9 vS  
,iy;L_N  
如果没有设置,可看ssh免密登陆,设置成功及OK。 zg[.Pws:E  
+Y9n@`  
)d^b\On  
为git用户添加ssh key h=7eOK]  
8euh]+  
'y? HF@NJ  
BASH pn._u`xMV  
$ su git A $GiO  
$ cd ~ x392uS$#  
$ mkdir .ssh \qA^3L~;5  
# 然后将你电脑上的公钥复制到authorized_keys,保存。 .>;}GsN&  
$ vim /home/git/.ssh/authorized_keys @8$3Q,fF(  
$ chmod 600 .ssh/authorized_keys AgU 7U/yk  
$ chmod 700 .ssh/ 8va&*J? 2  
赋予git对网站目录的所有权。 _ITA$ #  
'a6:3*  
Sd\+f6x  
$ chown git:git -R /data/hexo/nginx/html '-?t^@  
配置git hooks。 K]0K/~>8  
n#fc=L1U  
0D=7Mef  
$ cd ~/data/hexo/hexo.git/hooks efnj5|JSV  
编辑post-receive文件, 输入如下内容保存退出。 M9J^;3Lrh  
 M .J  
$(PWN6{\r^  
BASH sO;]l"{<  
# !/bin/bash 3L5o8?[  
rm -rf /tmp/hexo |TE\]  
git clone /data/hexo/hexo.git WER\04%D\m  
rm -rf /data/hexo/nginx/html ^;xO-;q  
cp -rf /tmp/hexo/* /data/hexo/nginx/html e|~s'{3  
然后赋予脚本执行权限。 xn`<g|"#  
d O'apey  
J@4,@+X  
$ chmod +x post-receive 8g!C'5  
之后重启nginx就可以了。 xSal=a;k  
H{4/~Z  
G1`H H&  
本地配置 F,l%SQCyj  
修改_config.yml的deploy内容,例如: }ippi6b:r  
|vLlEN/S  
3~uWrZ.u  
YAML K7 N)VG  
deploy: x.:k0;%Q  
  type: git Dqu][~oQ  
  repository: blogit:/data/hexo/hexo.git Jc74A=sT  
  branch: master SA'c}gP  
.ssh/config这么配置的。 g12mSbf=9  
::Nhs/B/  
z/IZ ;K_e  
SSH _);;@T  
Host blogit J BN_Upat  
    HostName 120.78.181.210 TiF2c#Q*y  
    User git -Jj"JN.  
    IdentityFile ~/.ssh/blog.pem _?IP}}jA:  
以后正常的hexo d既可以一键部署。 'r2VWavT  
UVIR P#  
5{@Hpj/B  
转载:RAZEEN 博客
本人不是云栖社区工作人员。
无论您在使用中遇到什么问题,不要出言不逊!谢谢合作!
发表主题 回复主题
« 返回列表上一主题下一主题

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