我有个linux的虚拟主机,我想运行django网站,怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我有个linux的虚拟主机,我想运行django网站,怎么办?相关的知识,希望对你有一定的参考价值。

服务器是apache的,在网站的目录下有cgi-bin目录,官方说可以运行.py文件,其实我想在里面运行个django网站,但客服说不支持,哪位高手可以指点下,还有其他的办法吗
我以前在Windows下配置过mod_python方法运行django,但是在虚拟主机上运行不太现实,那个是可以自己单独上传个django,我在想这个我能单独上传个django吗,然后使用吗?

我是linux主机,我这样在本地运行django
1 在终端进入django项目的文件夹,是有manage.py的那个目录
2 然后运行 python manage.py runserver

就可以跑起来了
参考技术A 我是linux主机,我这样在本地运行django
1 在终端进入django项目的文件夹,是有manage.py的那个目录
2 然后运行 python manage.py runserver

就可以跑起来了
参考技术B 我们没有linux的,华夏名网大多数是linux主机

使用 Docker 创建缓慢的 django 模型实例

【中文标题】使用 Docker 创建缓慢的 django 模型实例【英文标题】:Slow django model instance creation with Docker 【发布时间】:2017-06-27 10:32:59 【问题描述】:

我有一些模型的 django 应用程序。我有manage.py 命令创建n 模型并将其保存到数据库。它在我的主机上运行速度不错。

但如果我在 docker 中运行它,它运行速度非常慢,在 40-50 秒内创建并保存了 1 个实例。我想我在 Docker 的工作原理上遗漏了一些东西,有人能指出为什么性能低,我能用它做什么吗?

docker-compose.yml

version: '2'

services:
  db:
    restart: always
    image: "postgres:9.6"
    ports:
      - "5432:5432"
    volumes:
      - /usr/local/var/postgres:/var/lib/postgresql
    environment:
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=my_db
      - POSTGRES_USER=postgres

  web:
    build: .
    command: bash -c "./wait-for-it.sh db:5432 --timeout=15; python manage.py migrate; python manage.py runserver 0.0.0.0:8000; python manage.py mock 5"
    ports:
      - "8000:8000"
    expose:
      - "8000"
    depends_on:
      - db

用于网络服务的dockerfile

FROM python:3.6
ENV PYTHONBUFFERED 1
ADD . .
WORKDIR .
RUN pip install -r requirements.txt
RUN chmod +x wait-for-it.sh

【问题讨论】:

您是在服务器/VM 上执行此操作吗?试过在没有 docker 的同一台机器上做吗? @lorenzvth7 在本地机器 (mac) 上使用最大计算资源执行此操作。在没有 docker 的情况下执行此操作要快得多。 【参考方案1】:

这里的问题很可能是您在 Mac 上使用的卷 /usr/local/var/postgres:/var/lib/postgresql。据我了解 Docker for Mac 解决方案,它使用文件共享来实现主机卷,这比本地文件系统访问要慢很多。

一种可能的解决方法是使用 docker 卷而不是主机卷。这是一个例子:

version: '2'

volumes:
  postgres_data:

services:
  db:
    restart: always
    image: "postgres:9.6"
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql
    environment:
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=my_db
      - POSTGRES_USER=postgres

  web:
    build: .
    command: bash -c "./wait-for-it.sh db:5432 --timeout=15; python manage.py migrate; python manage.py runserver 0.0.0.0:8000; python manage.py mock 5"
    ports:
      - "8000:8000"
    expose:
      - "8000"
    depends_on:
      - db

请注意,这可能会使 postgres 数据的管理复杂化,因为您不能简单地从 Mac 访问数据。您只能使用 docker CLI 或容器来访问、修改和备份这些数据。另外,我不确定如果你从 Mac 上卸载 Docker 会发生什么,可能是你丢失了这些数据。

【讨论】:

卸载 docker 不会丢失数据。我有一个用于 postgres+django 的音量集,效果很好【参考方案2】:

两件事,可能是一个可能的原因:

    启动 docker 容器需要一些时间,因此如果您为每个实例启动新容器,这可能会累加。 您使用什么存储驱动程序? Docker(通常)默认为设备映射器环回存储驱动程序,这是。这里是some context。这将是痛苦的,尤其是如果您经常启动此容器。

除此之外,您的配置看起来很合理,并且那里没有明显的原因问题。因此,如果上述两点不适用于您,请添加一些额外的 cmets --- 就像您实际添加这些模型实例的方式一样。

【讨论】:

以上是关于我有个linux的虚拟主机,我想运行django网站,怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

在Linux环境中运行python 项目

linux:nohup后台启动django

Django,可以运行两个不同的版本吗?

Django:使用 sudo 在虚拟环境中运行服务器

linux系统下载和安装

虚拟机网络连接有个黄叹号怎么回事?