django yadpt starter是django项目的另一个django项目模板框架

django-yadpt-starter的Python项目详细描述


#Django Yadpt起动机

django yadpt starter是django项目的另一个django项目模板框架。

虽然django项目并不缺少模板框架,但这一框架的目的是尽可能为您提供一个使用docker containers和[let's encrypt]的全自动设置(https://letsencrypt.org" rel="nofollow">https://letsencrypt.org)SSL证书为您的网站,同时遵守推荐的最佳做法。一些关键功能是:

  • 由django yadpt starter执行的配置,这是一个很小的实用程序,它使设置项目变得很简单;
  • 自动生成和更新[加密](https://letsencrypt.org)证书;
  • 坚持最佳实践;
  • 提供不同的环境:一个没有有效的本地开发证书,另一个有有效的证书(用于生产或登台)。

完成后,应该有两个模板:a最小值但功能模板和更完整的模板。

##用法

使用ssl证书启动并运行您闪亮的新django项目,非常简单,步骤如下:

  1. 安装django yadpt starter实用程序 < Buff行情>

    pip安装django yadpt starter

  2. 创建项目结构

    < Buff行情>< Buff行情>

    django-yadpt-starter.py-e环境项目名称

    • 环境必须是生产开发(SSL证书仅在生产环境中创建)
    • 项目名是您希望为项目命名的名称。请记住,此名称将在整个Docker环境(卷、容器、网络等)中使用。
  3. 添加精心编制的代码,然后启动Docker容器。请注意,正确选择您的环境对于您的Docker编写".yml"非常重要。如果您仍在开发use dev.yml(dev mode不使用nginx)。默认值是用于生产的,因此在开发时不要在本地计算机上使用此值,否则会遇到错误。

    < Buff行情>

    CD路径/到/项目名称 docker compose-f{env}.yml构建 docker compose-f{env}.yml up-d

  4. 此时您可能会遇到一些错误(因为问题https://github.com/psychk7/django-yadpt starter/issues/13),要修复这些错误,您必须手动进入Docker容器并删除数据库的内容。之后运行docker compose up-d--force recoreate

  5. 没有第五步,尽情享受吧!

注意:django yadpt starter可以任意运行多次以创建多个环境,但有一些注意事项:

  1. 项目名称必须是唯一的,以确保卷和容器不会碰撞;
  2. 由于certbot正在使用绑定到端口80443的[--standalone](https://certbot.eff.org/docs/using.html standalone)插件,您需要停止任何正在运行的容器或可能已绑定到这些端口的服务;

###将现有代码从一个环境迁移到另一个环境。

如果您已经部署了正在运行的代码,并且最终想要切换机器,或者在另一台机器上运行相同的代码(例如从开发到生产),那么可以手动执行。但在此之前,请确保从devenv创建的项目Ironment拥有它所需要的一切,例如nginx.conf中的服务器名被填充,并且您的域也位于letsencrypt.conf中。最简单的方法可能仍然是在最终的机器中创建一个带有production环境的空项目,这样所有这些空白都可以自动填充,然后将该文件夹复制到本地机器中,并将现有代码添加到其中并将其推送到git存储库中。(或者直接从prod服务器将其推送到git(如果您有写权限)。这仍然是我们还没有找到一个简单的方法来解决的问题,但是一旦你了解了项目结构,这个迁移就会变得快速和无痛。所以在填写之后:

TT> 1。Docker编写-fstaging.yml build 2。docker compose-fstaging.yml up会抛出错误,但没关系 三。Docker编写-fstaging.yml stop 4。Docker volume ls并获取要传递给以下命令的名称volume。例如:smal_smal_https_certs 5。Docker运行-it-rm-v{step4}/etc/letsencrypt中的命名卷class="pre">-n--独立的--首选挑战http-01--电子邮件{email}--同意-d{domain} 6。Docker编写-fstaging.yml build 7。Docker编写-fstaging.yml up;现在一切都应该好了。

###高级用法

django yadpt starter将要求您输入一个域的名称。如果需要多个域(例如domain.com和www.domain.com),只需运行启动脚本,然后在启动容器之前运行

docker run-it--rm-v{project{name}u https}certs:/etc/letsencrypt-p 80:80-p 443:443 palobo/certbot:1.1 certonly-t-n--standalone--agree tos-d{domain}-d{domain}-d{domain}-m myemail@example.com

如果由于某种原因决定将新域添加到现有域列表中,则需要使用expand并用新证书替换现有证书。记住重新添加新域中已有的所有域。

docker run-it--rm-v{project{name}u https}certs:/etc/letsencrypt-p 80:80-p 443:443 palobo/certbot:1.1 certonly-t-n--standalone--expand--agree tos-d{domain}-d{domain}-d{domain}-m myemail@example.com

##使用certbot为网站(让我们加密证书)提供免费的https(ssl/tls)

对于生成证书(暂存或生产)的环境,[certbot](https://certbot.eff.org)用于生成a[let's encrypt](https://letsencrypt.org)证书。唯一的要求是您已经设置了dns,以便您的django应用程序已经可以访问。

注意:鉴于每天都有一个cron作业检查证书是否可以续订,因此容器必须始终保持运行。

##使用过的第三方应用程序

< Buff行情>

有关示例,请参见项目模板目录中包含的文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
swing Java JScrollBar设计   java如何按名称显示输出   java如何将多个ArrayList连接成一个?   java存储SSLSocketFactory为静态字段   java获得了奇怪的csv文件时间输出   java类在JSP中没有该属性   java ehcache程序未运行   java如何对数组的所有元素应用或操作?   sqlite如何用Java编写adb shell命令   java泛型中的动态数据类型   javajaxrs@Path阻止加载静态资源   java如何在安卓中从主字符串中获取特定字符串?   java与FLAG_LAYOUT_NO_LIMITS相反   关于OpenJDK 11和OpenJFX 11(&Proguard)的java迁移问题   eclipse设置Selenium for Java(创建Firefox驱动程序所需的JAR和导入)   java如何将空字符串更新为oracle Clob   对象为什么在Java中同时重写equals()和hashCode()?   java从另一个类获取变量的正确方法