一旦用戶添加他們的 github 存盤庫,我將 github 存盤庫保存到服務器,請參閱此模型。
class Repo(models.Model):
url = models.CharField(help_text='github repo cloneable',max_length=600)
def save(self, *args, **kwargs):
# os.system('git clone https://github.com/somegithubrepo.git')
os.system('git clone {}'.format(self.url))
super(Repo, self).save(*args, **kwargs)
在本地服務器和遠程服務器(如 digitalOcean Droplet)中,一切正常,當我添加公共 github 存盤庫時,克隆總是成功。
當我像這樣運行服務器時它可以作業:python3 manage.py runserver 0.0.0.0:800
但是當我使用 gunicorn 和 nginx 在守護行程模式下運行時,它不起作用,
一切正常,即使將資料保存在資料庫中,只是它沒有在守護程式模式下克隆,它有什么問題?
這是我的 gunicorn.service
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/var/www/myproject
Environment="PATH=/root/.local/share/virtualenvs/myproject-9citYRnS/bin"
ExecStart=/usr/local/bin/pipenv run gunicorn --access-logfile - --workers 3 --bind unix:/var/www/myproject/config.sock -m 007 myproject.wsgi:application
[Install]
WantedBy=multi-user.target
再次注意,即使是 gunicorn,一切正常,資料保存在資料庫中,只是它沒有克隆 github repo,甚至沒有觸發任何錯誤。\
這有什么問題?誰能幫我解決這個問題?
uj5u.com熱心網友回復:
在 systemd 單元檔案中,您使用 virtualenv 的路徑覆寫 root 用戶的PATH變數。Environment因此,root 用戶在 中沒有通常的專案PATH,例如/usr/bingit 命令通常存在的地方。所以你需要使用git的絕對路徑,例如/usr/bin/git,或者將git的bin目錄添加到PATH,例如:
Environment="PATH=/usr/bin:/root/.local/share/virtualenvs/myproject-9citYRnS/bin"
uj5u.com熱心網友回復:
我對apache有同樣的問題。這意味著資料庫對于 www-data 用戶不可寫。
如果使用的是 sqlite,則需要確保 sqlite db 檔案。在我做這些之后,它的作業原理:
sudo chown www-data:www-data db/sqlite.db
sudo chown www-data:www-data db
還需要寫入目錄的能力,因為將創建一個臨時鎖定檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/478784.html
上一篇:Django管理模型欄位驗證
