繁体   English   中英

如何在使用Gitlab时在Ubuntu上部署Django应用程序

[英]How to deploy Django app on Ubuntu when using Gitlab

我创建了一个简单的Django应用程序,然后我提交并推送到Gitlab。 最后我想在运行ubuntu的“生产服务器”上安装该应用程序,以便从该服务器终端运行命令:

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

我无法在克隆的文件中找到我的python代码。

从gitlab存储库获取python代码的正确方法是什么?

首先,

您的git是否包含所有源代码,包括pip安装的应用程序?

  • 如果是:在你的ubuntu机器上安装django版本,克隆你的项目,它可能会运行。
  • 如果不是:您必须创建虚拟环境 (在任何情况下都是推荐的选项),在虚拟环境中安装所有pip安装的应用程序 django。 之后克隆你的项目,它将运行。

好吧,我不知道gitlab,在服务器上基本上没有关于你的配置的一切,但是你可以在git repo上设置一个git hook。

这是一个用于部署示例django项目的post-receive钩子的示例。

#!/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 / hooks / post-recive
  • post-recive文件必须是可执行文件chmod +x FILE_NAME
  • 它假设您有一个虚拟环境。
  • 它假设您在repo上有一个名为dependencies.txt的文件,您可以使用pip freeze > dependencies.txt生成它(请注意,文件上的所有内容都将嵌入到服务器上)
  • 注意touch wsgi.py将重新加载代码,如果您在守护进程模式下运行带有mod_wsgi的apache( 更多信息

问题是分支,我解决了选择一个特定的分支,应用选项“-b”后跟正确的分支名称“develop”:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM