设立多location的nginx映射
原来自己的Nginx已经搭建了自己的网站,所以需要配置多个location,用第二个location来展示自己的图片,因此location如果要一个特定的url(不是/
的时候)要使用别名,不能用root,alias指定的目录是准确的,直接指向目标文件的物理地址
主要是要注意自己的第二个location下面一定要有对应的目录,然后要启动图片浏览,文件下载,就必须使用autoindex on;
需要添加的location格式如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 原来的网站的节点
location / {
root /var/www/blog;
index index.html index.htm;
}
# 为了搞自己的图床,2020年3月4日13:56:42 再来折腾
# 一定要在www建立img目录--这是你去访问才能看到绿锁,然后加入index.html才能看到内容
location /img {
#img /var/www/img;
# 好像只能使用alias,不然连nginx -t都过不了
alias /var/www/img;
# index index.html index.htm;
autoindex on;
}
|
搭建git服务器并添加git-hooks
看完注意点再操作
添加githooks可以看这个 这里要仿造这个链接的教程再在别的目录里面进行git图片仓库的操作,然后自己之后就可以每次像给github提交一样给自己的服务器提交了(看下面我的代码)
linux版本
1
2
3
4
5
6
7
8
|
# 这个只要做一次
git remote add pic@huaweiyun git@xxxx.32.xxx.17:/home/git/img.git
git push pic@huaweiyun master
# 之后每次的提交
git pull pic@huaweiyun master
git add --all
git commit -m "`date '+%Y-%m-%d %H:%M:%S'`"
git push pic@huaweiyun master
|
windows版本
1
2
3
4
5
6
7
8
|
# 这个只要做一次
git remote add pic@huaweiyun git@xxxx.32.xxx.17:/home/git/img.git
git push pic@huaweiyun master
# 之后每次的提交
git pull pic@huaweiyun master
git add --all
git commit -m "%date%"
git push pic@huaweiyun master
|
注意点
- 一定要让git/.ssh的所有文件的拥有者是git,否则可能导致无法免密登录
就是要操作
sudo chown -R git:git /home/git/.ssh
- 还有我们后面要启用githooks,所以不要把git的运行目录降权,否则无法使用
- 也可以给git添加root权限
1
2
|
chmod 740 /etc/sudoers
vim /etc/sudoers
|
找到以下内容:
1
2
|
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
|
在下面添加一行:git ALL=(ALL) ALL
保存退出后改回权限:chmod 400 /etc/sudoers
思考代码
了解到了裸库上的文件是看不到的,必须通过web转化成可以看见的链接,所以现在就很好理解下面的代码了
1
2
3
4
5
6
7
8
|
#!/bin/bash
GIT_REPO=/home/git/img.git
TMP_GIT_CLONE=/tmp/img
PUBLIC_WWW=/var/www/img
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
|
成功图展示
nginx配置易错点回顾
- location如果要一个特定的url要使用别名,不能用root,alias指定的目录是准确的
- 然后要启动图片浏览,文件下载,就必须使用
autoindex on;
参考文章
Nginx一个server配置多个location
搭建Git服务器
添加githooks可以看这个