CentOS 6.8
PHP 7.0.7
Git 1.7.1
Im Katalog/home/work/repositories/
下创建了一个裸仓test.git
git clone
到网站根目录/home/work/www/
PHP
运行用户为www-data
,/home/work/www/
目录的权限为755
,属于www-data
用户和www-data
Benutzergruppe
Konfigurierte post-receive
钩子,开发环境执行git push
的时候,自动到/home/work/www/test
目录下执行git pull
Operationen
#!/bin/sh
cd /home/work/www/test
sudo -u www-data env -i git pull
Wenn die obige Konfiguration abgeschlossen ist und die Entwicklungsumgebung ausgeführt wirdgit push
, erscheint der folgende Fehler
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 790 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: sudo: no tty present and no askpass program specified
remote: Gogs: Internal error
To ssh://xxx/test.git
6250615..3e4555d master -> master
Folgen Sie dem Online-Tutorial und fügen Sie diese Zeile ein /etc/sudoers
%git ALL=(ALL) NOPASSWD: ALL
Nach der Konfiguration auf diese Weise wird der git pull
-Vorgang jedes Mal im Verzeichnis /home/work/www/test
ausgeführt git push
之后也都会到/home/work/www/test
目录下执行git pull
und erzielt die erwarteten Ergebnisse.
Ich möchte alle fragen: Gibt es gemäß der obigen Konfiguration Sicherheitsrisiken oder Konfigurationslücken?
Danke!
个人觉得在生产服务器放代码(包括 git 仓库)是不大好的,尤其还放在 web 目录里面,一旦出现一些权限问题,很有可能代码被拖
其实你可以把php的入口文件和.git文件夹分开,这样就可以了呀。
像Laravel,入口文件在public里,.git在public外面,这样完全不会影响惹。