2016-11-13 61 views
1

我已經創建了一個簡單的Django應用程序,然後我提交併推送到Gitlab。最後,我想這是運行Ubuntu我的「生產服務器」上安裝該應用程序,以便從服務器端我運行命令:如何在使用Gitlab時在Ubuntu上部署Django應用程序

git clone https://domain.com/path/to/git 

我無法找到克隆文件在我的Python代碼。

從gitlab存儲庫獲取python代碼的正確方法是什麼?

+0

請親提供克隆文件的列表,以便我們可以知道實際上拉下了什麼。 –

回答

0

該問題的分支,我解決選擇一個特定的分支,應用其次是適當的分支名稱選項「-b」,「發展」:

git clone -b develop https://example.com/username/projectname.git 
0

首先,

你的git是否有所有的源代碼,包括pip安裝的應用程序?

  • 如果是:在您的ubuntu機器上安裝django版本,克隆您的項目並且可能會運行。
  • 如果否,您必須創建一個virtual enviroment(這是任何情況下推薦的選項),在虛擬環境中安裝所有安裝了pip的應用程序 django。之後克隆你的項目,它會運行。
0

那麼我不知道gitlab,並且基本上所有關於您在服務器上的配置都缺少,但是您可以在git repo上設置一個git鉤子。

這裏是一個post-receive hook的示例,用於部署一個示例django項目。

#!/bin/bash 
while read oldrev newrev ref 
do 
    if [[ $ref =~ .*/master$ ]]; 
    then 
     echo "master branch received, deploying..." 
     GIT_WORK_TREE="/PATH/TO/DJANGO/PROJECT" git checkout -f master > /dev/null 

     source /PATH/TO/DJANGO/VIRTUAL/ENVIRONMENT/bin/activate > /dev/null 
     echo "installing new pip dependencies..." 
     pip install -r /PATH/TO/DJANGO/PROJECT/dependencies.txt > /dev/null 
     echo "applaying new db migrations..." 
     python /PATH/TO/DJANGO/PROJECT/manage.py migrate_schemas > /dev/null 
     deactivate > /dev/null 

     touch /PATH/TO/DJANGO/PROJECT/PROJECT_NAME/wsgi.py > /dev/null 
     echo "Sever code reloaded." 
    else 
     echo "Received branch $ref, not deploying." 
    fi 
done 

這麼幾個事情要考慮:

  • 此腳本位於gitrepo.git /掛鉤/後recive
  • 文件後recive必須是可執行的chmod +x FILE_NAME
  • 它假設你有一個虛擬環境。
  • 假定您在回購稱爲dependencies.txt一個文件,你可以用pip freeze > dependencies.txt(注意,在文件上一切都將在服務器上insatled)
  • touch wsgi.py生成它,如果你正在運行的Apache將重新加載代碼對daemon模式的mod_wsgi(more info
相關問題