【问题标题】:How do I set up Django 1.11 with Python 3.6.1 using Apache 2.4 on Ubuntu 16+如何在 Ubuntu 16+ 上使用 Apache 2.4 使用 Python 3.6.1 设置 Django 1.11
【发布时间】:2017-12-11 00:25:37
【问题描述】:

我想知道如何在 Ubuntu 上快速简单地设置 Django

我已经阅读了如此多的官方和用户文档,我头晕目眩,但不能 100% 确定从哪里开始。

我不是一个绝对的初学者,我对 Django、Python 和 Linux Shell 命令 (Ubuntu) 有一定的应用知识,因此说明可以快速而切题。

注意:我在下面回答了我自己的问题...

【问题讨论】:

  • 您是否阅读过部署文档,或在 Google 上搜索此处的众多问题或其他地方关于正是这个主题的教程?
  • 在否决并指责我没有搜索和阅读文档之前,您是否阅读了我对自己问题的回答?

标签: python django apache python-3.x mod-wsgi


【解决方案1】:

在 Ubuntu 16+ 上使用 Apache 2.4 和 Python 3.6.1 设置 Django 1.11

注意:这并没有涵盖您“可以做”的所有事情——它的目的是让您的服务器尽快启动并运行 Django。它应该适用于更高版本,只要记住找到正确的包并相应地更改版本即可

您可能需要更改很多包含的路径,所以要小心。

1.安装 Python 3.6 和 virtualenv

sudo apt-get update
sudo apt-get install python3.6 python3.6-dev
sudo apt-get install virtualenv

(Ubuntu 软件包https://packages.ubuntu.com/)

2。安装 Apache2 网络服务器

sudo apt-get install apache2 apache2-dev

(这里的一切都是 apache https://httpd.apache.org/

3.为您的项目创建并输入一个文件夹 - 然后在其中构建一个虚拟环境

mkdir ~/example.com
cd ~/example.com
virtualenv --python=/usr/bin/python3.6 py361ve

( 更多关于虚拟环境的信息在这里 https://virtualenv.pypa.io/en/stable/)

4.输入您的新虚拟环境以在其中安装软件包

source py361ve/bin/activate

(使用 virtualenv https://virtualenv.pypa.io/en/stable/userguide/

5.安装 Django、mod_wsgi 和任何其他需要的包

pip install django
pip install mod_wsgi
pip install ...

(在虚拟环境中不需要 pip3 - pip 在这里使用您的虚拟环境 python 版本)

( 更多关于 pip 的信息可以在这里找到 https://pip.pypa.io/en/stable/mod_wsgi https://modwsgi.readthedocs.io/en/develop/)

6.移动现有项目或在 ~/example.com 文件夹中创建新的 django 项目

django-admin startproject django_project

( 如何构建一个 Django 应用程序 https://docs.djangoproject.com/en/1.11/intro/tutorial01/)

7.编辑 Django 项目文件夹中的 wsgi.py 文件,为项目添加 sys 路径

import sys 
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

附加:sys.path.append('/path/to/your/library')

(django部署https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/modwsgi/)

8.为您的站点编辑 Django 项目的 settings.py 并设置项目正常运行所需的任何其他内容。

我将“静态”和“媒体”文件夹放在与我的文件夹不同的位置 python 代码(在 /var/www/example.com/ 内),我认为你应该 也可以防止意外公开您的 python 代码。

(说明下方的 VirtualHost 示例应该使设置更 清除)

( Django 设置 https://docs.djangoproject.com/en/1.11/topics/settings/)

9.运行以下命令并复制输出以放置在 apache 配置文件中

mod_wsgi-express module-config

(https://pypi.python.org/pypi/mod_wsgi)

10.退出您的虚拟环境

deactivate

(您可以随时使用源重新进入您的虚拟环境 步骤4中的方法)

11.导航到您的 apache2 配置文件夹(在 Ubuntu 上是 /etc/apache2/)并将复制的文本放在 Apache2 配置文件的底部。

sudo nano apache2.conf

( 更多关于 apache2.conf [或某些系统上的 httpd.conf ] https://httpd.apache.org/docs/2.4/configuring.html)

12.导航到 /etc/apache2/sites-available/ 并为您的站点创建一个新的 conf 文件。编辑 VirtualHost 模板(在所有说明下方)并将其复制到此文件中。

sudo nano example.com.conf

( 虚拟主机示例 https://httpd.apache.org/docs/2.4/vhosts/examples.html 和 mod_wsgi 守护进程模式 https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/modwsgi/#using-mod-wsgi-daemon-mode )

13.保存文件后,在 Apache 中启用此站点

sudo a2ensite example.com.conf
sudo service apache2 reload

(https://wiki.apache.org/httpd/DebianLikePlatform)

14.如果您想启用对您网站的管理员访问权限,只需将文件从您的 python 虚拟环境复制到您的别名 static/admin 文件夹

example path: /py361ve/lib/python3.6/site-packages/django/contrib/admin/static/admin

( 提供管理文件 https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/modwsgi/#serving-the-admin-files )

15.每当您更新任何与 python 或 django 相关的脚本时,您都需要“触摸”wsgi.py 文件以重新加载运行站点的守护进程以使其处于活动状态或重新启动 apache……

touch ~/example.com/my_project/my_project/wsgi.py
        or
sudo service apache2 restart

16.最后检查您的所有文件夹和文件是否具有足够的组(通常是 www-data )读写权限,以及您的数据库所在的文件夹(如果使用 sqlite)是否具有组写入权限。

(https://help.ubuntu.com/community/FilePermissions)

VirtualHost 示例模板...

<VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        ServerAdmin info@example.com
        DocumentRoot /var/www/example.com

        <Directory /var/www/example.com>
                Options FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>

        Alias /robots.txt /var/www/example.com/robots.txt
        Alias /favicon.ico /var/www/example.com/favicon.ico
        Alias /static/ /var/www/example.com/static/
        Alias /media/ /var/www/example.com/media/

        <Directory /var/www/example.com/static>
                Require all granted
        </Directory>

        <Directory /var/www/example.com/media>
                Require all granted
        </Directory>

        WSGIDaemonProcess example.com  python-home=/home/user_name/example.com/py361ve
        WSGIProcessGroup example.com
        WSGIScriptAlias / /home/user_name/example.com/django_project/django_project/wsgi.py

        <Directory /home/user_name/example.com/django_project/django_project>
                <Files wsgi.py>
                         Require all granted
                </Files>
        </Directory>
</VirtualHost>

注意:请编辑错误并根据需要对说明进行改进,但不要试图使事情过于复杂

【讨论】:

    猜你喜欢
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2018-08-24
    • 2014-05-11
    • 2016-04-05
    相关资源
    最近更新 更多