Git+Nginx搭建远程Web服务器

Git+Nginx搭建远程Web服务器

一、服务器端配置

1. 创建git文件夹用于存放网站文件

1
2
3
4
$ cd
$ mkdir .myblog
$ cd .myblog/
$ git init --bare

2. 在服务器选择一个放置网站的目录,假设这个目录为/var/www/myblog

1
2
3
$ mkdir -p /var/www/myblog
$ cd /var/www/
$ git clone ~/.myblog myblog

3. 自动部署

git 有个功能叫做hook,也就是说在我们提交代码的时候会触发一些操作,这就是hook Git的挂钩(Hook)主要包含:

applypatch-msg post-update pre-rebase commit-msg pre-applypatch update post-commit pre-commit post-receive prepare-commit-msg

我们要用到的是post-update这个hook 进入到我们的git服务器的文件夹~/.myblog/hooks 进入到hook文件夹 使用ls命令可以看到许多hook脚本的sample

1
2
$ cd ~/.myblog/hooks
$ vim post-update


新建一个post-update脚本 输入以下命令

1
2
3
#!/bin/sh
cd /var/www/myblog
env -i git pull

给新建的post-update赋予权限

1
$ chmod +x post-update

4…配置nginx

编辑nginx的配置文件/etc/nginx/sites-available

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
$ sudo vim /etc/nginx/sites-available/default

###### 编辑以下内容:
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

root /var/www/myblog;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}


这里主要修改server_name为你的域名 修改root目录为hexo静态文件的目录,以上面目录举例/var/www/myblog要注意nginx需要有该目录的文件读取权限

1
$ sudo chown -R pi:pi /var/www


重启nginx:

1
$ sudo nginx -s reload

服务端配置完成!!!

二、客户端配置

1. 通过ssh秘钥和树莓派建立连接

SSH秘钥连接到服务器

2. 配置public推送

由于树莓派性能不强劲,所以采用在本机用hexo生成public文件夹。用git提交生成好的public文件夹到树莓派。具体提交方法采用hexo的hexo-deployer-git插件。

1
2
$ cd myblog
$ vim _config.yml

将deploy配置下的repo参数改为刚刚在树莓派上新建的.myblog路径。
每次维护完项目后输入: hexo d 即可完成推送。

大功告成!!!

最后附上成果图:

-------------本文结束感谢您的阅读-------------