นี่คือรหัสทุบตีที่ควรถูกเรียกใช้ ดังนั้นก่อนอื่นทดแทนผู้ใช้เพื่อ openproject และกว่ารันโค้ดทั้งหมด:
su openproject -c "bash -l"
cd ~/openproject
git checkout Gemfile.lock
git pull
bundle install
RAILS_ENV="production" bundle exec rake db:migrate
RAILS_ENV="production" bundle exec rake db:seed
RAILS_ENV="production" bundle exec rake assets:precompile
ฉันได้ลอง chnaging สคริปต์ด้านบนนี้:
su - openproject -c "cd ~openproject/openproject"
su - openproject -c "git checkout stable"
su - openproject -c "git checkout Gemfile.lock"
su - openproject -c "git pull"
su - openproject -c "bundle install"
su - openproject -c "RAILS_ENV="production" bundle exec rake db:migrate"
su - openproject -c "RAILS_ENV="production" bundle exec rake db:seed"
su - openproject -c "RAILS_ENV="production" bundle exec rake assets:precompile"
แต่สิ่งนี้ทำงานไม่ถูกต้องและทุกขั้นตอนจะขอรหัสผ่าน สคริปต์ที่แปลแล้วจะได้รับการปรับปรุงให้ดีขึ้นอย่างไร
อัปเดต 1:
หลังจากได้รับ sugestions เกี่ยวกับเรื่องนี้ฉันเป็นจุดที่มีการปรับเปลี่ยนรหัสเป็น:
cd ~openproject/openproject
sudo -u openproject git checkout stable
sudo -u openproject git checkout Gemfile.lock
sudo -u openproject git pull
# the output is good thill here
sudo -u openproject bundle install
sudo -u openproject RAILS_ENV="production" bundle exec rake db:migrate
sudo -u openproject RAILS_ENV="production" bundle exec rake db:seed
sudo -u openproject RAILS_ENV="production" bundle exec rake assets:precompile
ผลลัพธ์ก็โอเคจนถึงบรรทัดที่ระบุดังนั้นในรหัส จากนั้นฉันได้รับข้อผิดพลาด 4 ครั้ง
sudo: bundle: ไม่พบคำสั่ง
อัปเดต 2:
หลังจากลองคำแนะนำจาก Dmitry Vasilyanov ฉันพบว่าถ้าฉันใส่ -i มันจะเป็นการจำลองการเข้าสู่ระบบของผู้ใช้ อย่างไรก็ตามนี่ไม่ใช่วิธีสุดท้ายที่จะทำ
ถ้าฉันทำงานecho $PATH
หลังจากเข้าสู่ระบบในฐานะ openproject ouput คือ/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/openproject/.rvm/bin
ถ้าฉันวิ่งecho $PATH
หลังจากsu openproject -c "bash -l"
เอาท์พุทเป็น/home/openproject/.rvm/gems/ruby-2.1.0/bin:/home/openproject/.rvm/gems/ruby-2.1.0@global/bin:/home/openproject/.rvm/rubies/ruby-2.1.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/openproject/.rvm/bin
cd
ได้เพราะมันเป็นเชลล์ในตัว
sudo
ถูกใช้เพื่อเรียกใช้ในฐานะผู้ใช้อื่นเป็นroot
ค่าเริ่มต้นหากไม่มีการระบุอะไรเลยคุณสามารถดำเนินการได้อย่างสมบูรณ์แบบsudo -u openproject bundle install
เริ่มต้นถ้าไม่มีอะไรจะระบุที่ดีที่สุดที่คุณสามารถดำเนินการ
bundle: command not found
ข้อผิดพลาดเพราะคุณตั้งค่าPATH
หรือGEM_PATH
ในของคุณ.bash_profile
หรือ.bashrc
พวกเขาจะไม่ถูกดำเนินการในเชลล์ที่ไม่ใช่การเข้าสู่ระบบ / ไม่โต้ตอบดังนั้นคุณต้องผ่าน-i
ไปsudo
ยังจำลองการเข้าสู่ระบบเช่นนี้:sudo -iu openproject bundle install
sudo
su