Hệ điều hành - Ubuntu 14.04Thực thi lệnh git qua php qua http
Tôi đang triển khai việc triển khai bằng cách sử dụng trang web GIT cho nó.
Tôi đã thêm khóa triển khai vào git repo và bây giờ tôi muốn kích hoạt lệnh git pull origin master
khi đẩy xảy ra từ repo cục bộ của tôi.
Đây là test.php
tập tin tôi gọi thông qua trình duyệt:
<?php
//echo "THis is a test file on a test repo for testing the deploy functionality using github webhooks!!!!";
echo exec('whoami');
echo exec('sh -x /var/www/proj/test/git.sh');
?>
Đây là tập tin git.sh
shell:
#!/bin/bash
cd /var/www/proj-dir/test
git pull origin master
Khi tôi chạy trên thiết bị đầu cuối sử dụng php test.php
tôi nhận được kết quả chính xác như mong đợi :
ubuntu From github.com:repo/test
* branch master -> FETCH_HEAD
Already up-to-date.
ubuntu
cho whoami
theo sau là đầu ra git pull
.
Bây giờ đây là vấn đề khi tôi gọi cùng http://example.com/test.php
qua trình duyệt nó cho thấy người sử dụng hoặc whoami
đầu ra như www-data
, đó là sử dụng apache, nhưng tôi cố gắng cập nhật các điều khoản của file php để thực hiện và thay đổi người sử dụng để www-data
nhưng không hoạt động.
kiểm tra các bản ghi apache và khi tôi thực hiện thông qua trình duyệt tôi nhận được một lỗi cho phép
Please make sure you have the correct access rights and the repository exists. + cd /var/www/proj/deploy-test + git pull origin master
xác minh chính chủ thất bại. gây tử vong: Không thể đọc từ kho lưu trữ từ xa. Hãy đảm bảo rằng bạn có quyền truy cập chính xác và kho lưu trữ tồn tại.
Tôi cần bản cập nhật nào để tệp hoạt động qua yêu cầu của trình duyệt?
Nếu tôi cần cập nhật tệp sudoers thì nội dung cập nhật là gì?
Cập nhật
tôi đã thêm các phím .ssh
đến var/www/
dir như là nơi cư trú cho người dùng apache. Nhưng tôi vẫn nhận được
git pull origin master
error: cannot open .git/FETCH_HEAD: Permission denied
Ngoài ra tôi đã thêm một dòng cho người dùng www-data để có thể thực thi tệp sh.
www-data ALL=(anthony) NOPASSWD: /var/www/mysite/vendor/tmd/auto-git-pull/scripts/git-pull.sh
Reference here Vẫn không có may mắn
Cập nhật các điều khoản cho thư mục .git để sử dụng www-data
sudo chown www-data:www-data /var/www/proj/test/.git
Bạn cần đảm bảo rằng người dùng chính xác yêu cầu kéo. Người dùng nào đã lấy quyền từ repo? Dường như bạn cần phải là ubuntu. – nicoX
yes 'ubuntu', nhưng tôi tin rằng khi truy cập qua' http' người dùng apache là 'www-data' cần được phép thực thi tập lệnh. Sau khi xem qua nhiều bài viết tôi đã học tôi có thể cập nhật tệp sudoers cho www-data để có quyền chính xác. Xin vui lòng xác nhận nếu hướng của tôi là sai – KillABug
Bạn không thể chmod kịch bản để nhóm/khác có quyền thực hiện. Và có vẻ như kịch bản của bạn đang được thực hiện. – nicoX