Tôi muốn sử dụng tập lệnh .sh để triển khai ứng dụng của mình. Kịch bản đó nằm trên máy chủ nhà của tôi (Máy chủ Ubuntu 15.10), được đánh dấu là có thể thực thi được. Truy cập vào tập lệnh này được thực hiện thông qua ssh, sử dụng hướng dẫn này , tôi đã thiết lập đăng nhập ssh, chạy tập lệnh đó. Vì vậy, về cơ bản tôi chỉ cần gọi ssh deployer@XXX.com someArguments
và nó chạy tập lệnh của tôi với someArguments
tư cách là tham số. Người dùng deployer
có uid = 0, vì vậy về cơ bản root
(điều này sẽ được thay đổi trong tương lai, tôi đã đặt nó chỉ để loại bỏ các vấn đề về quyền cho đến khi nó hoạt động tốt).
Và đây là nơi mà mọi thứ trở nên khó khăn. Kịch bản báo cáo /usr/bin/env: php: No such file or directory
tại lệnh /bin/composer install
(sử dụng Trình soạn thảo ). Mọi thứ càng kỳ lạ khi tôi càng xem kịch bản đó. Trước dòng này, cũng có tên /bin/composer self-update
và /bin/composer -V
cả hai chạy chính xác và hiển thị đầu ra chính xác.
Tôi đã kiểm tra những điều sau đây:
/usr/bin/env php -v
hiển thị phiên bản PHP chính xác (giống như/usr/bin/php -v
)whereis php
màn hìnhphp: /usr/bin/php /usr/local/bin/php /usr/share/man/man1/php.1.gz
php5-cli
gói được cài đặt và phiên bản mới nhất$PATH
chứa đựng/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
which env
màn hình/usr/bin/env
Tôi cũng đã thử làm những điều sau đây:
- chạy tập lệnh trực tiếp
bash deploy.sh
dưới quyền root (vì nó giống với người dùng đó) - hoạt động hoàn hảo không có lỗi - chạy các lệnh thất bại trực tiếp - cũng hoàn toàn không có lỗi
Vì vậy, đây có vẻ như là trường hợp rất cụ thể, tại sao lệnh này không hoạt động. Tôi đã dành 12 giờ để gỡ lỗi nó và tôi không có ý tưởng nào ở đây.
PS: Lỗi tương tự ( /usr/bin/env: node: No such file or directory
) xảy ra khi có bower install
(sử dụng Bower ), nhưng không xảy ra khi chạy npm install
(sử dụng NPM ).
sh deploy
và bash deploy
cả hai đều cho kết quả như nhau
/usr/bin/env > environment.txt
sh deploy
thay vìbash deploy
(có thể là một số bashism). Làm thế nào bạn kiểm tra " những điều sau "? Tôi khuyên bạn nên kiểm tra chúng trong kịch bản, để bạn có thể khám phá các phần ghi đè và vệ sinh cuối cùng của envs.