信息
请先参考
上一篇文章学习创建git用户并赋予root权限,设置免密登录以及在服务器上创建仓库。
在/etc/sudoers
添加git
用户权限
1
2
|
sudo chmod +w /etc/sudoers
sudo vim /etc/sudoers
|
在root ALL=(ALL:ALL) ALL
下面添加git ALL=(ALL:ALL) ALL
,保存退出
取消/etc/sudoers
写权限
1
|
sudo chmod -w /etc/sudoers
|
1
2
3
4
5
6
|
su git # 切换到git用户
cd
mkdir project/blog
cd project/blog
git init --bare blog.git
chomd -R 777 blog.git
|
1
2
3
|
mkdir -p /var/www
cd /var/www
mkdir blog
|
1
2
|
chown -R git:git /var/www/blog/
sudo chmod -R 777 /tmp
|
切换为 git 用户和文件夹,新建 post-receive
脚本文件
1
2
3
|
su git
cd /home/git/project/blog/blog.git/hooks
vim post-receive
|
post-receive
文件内容如下:
1
2
3
4
5
6
7
8
9
|
#!/bin/bash
GIT_REPO=/home/git/project/blog/blog.git
TMP_DIR_CLONE=/tmp/blog
PUBLIC_WWW=/var/www/blog
rm -rf ${TMP_DIR_CLONE}
git clone $GIT_REPO $TMP_DIR_CLONE
rm -rf $PUBLIC_WWW/*
cp -rf $TMP_DIR_CLONE/* $PUBLIC_WWW
|
添加可执行权限
进入hugo
生成的public
文件夹,初始化仓库,配置仓库信息,提交一次
1
2
3
4
5
6
|
cd public
git init
git config user.name your_git_name
git config user.email your_git_email
git add -A
git commit -m 'first commit'
|
绑定远程仓库后再push
1
2
3
4
5
6
7
8
9
10
11
|
git remote add origin git@your_VPS_IP:/home/git/project/blog/blog.git
# 或者使用上一篇教程设置的别名
git remote add origin git_server:/home/git/project/blog/blog.git
git remote set-url origin ssh://git@your_VPS_IP:SSH_Port/home/git/project/blog/blog.git
# 或者使用别名
git remote set-url origin ssh://git_server:SSH_Port/home/git/project/blog/blog.git
git push -u origin master
|
通过上述操作,在本地push
后,public
文件夹的文件经过钩子脚本处理后会克隆一份到/var/www/blog
中,后面就可以使用nginx
配合域名来实现网站上线了。
建议使用宝塔面板
进行配置,最关键就是修改静态文件所在位置:root /var/www/blog;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
server
{
...
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
# location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
# {
# expires 30d;
# error_log /dev/null;
# access_log /dev/null;
# }
# location ~ .*\.(js|css)?$
# {
# expires 12h;
# error_log /dev/null;
# access_log /dev/null;
# }
location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
root /var/www/blog;
access_log off;
expires 1d;
}
location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
root /var/www/blog;
access_log off;
expires 10m;
}
location / {
root /var/www/blog;
if (-f $request_filename) {
rewrite ^/(.*)$ /$1 break;
}
}
location /nginx_status {
stub_status on;
access_log off;
}
...
}
|