如何在Ubuntu16+;上使用Apache2.4在Python3.6.1中设置Django 1.11;

如何在Ubuntu16+;上使用Apache2.4在Python3.6.1中设置Django 1.11;,python,django,apache,python-3.x,mod-wsgi,Python,Django,Apache,Python 3.x,Mod Wsgi,我想知道如何快速简单地在Ubuntu上设置Django 我已经阅读了太多的官方和用户文档,我的脑袋都快晕过去了,不知道从哪里开始 我不是一个绝对的初学者,我对Django、Python和Linuxshell命令(Ubuntu)有一些实用的知识,所以这些指令可以很快而且切中要害 注意:我在下面回答了我自己的问题…在Ubuntu 16+上使用Apache 2.4使用Python 3.6.1设置Django 1.11 sudo nano apache2.conf sudo nano example.

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

我已经阅读了太多的官方和用户文档,我的脑袋都快晕过去了,不知道从哪里开始

我不是一个绝对的初学者,我对Django、Python和Linuxshell命令(Ubuntu)有一些实用的知识,所以这些指令可以很快而且切中要害


注意:我在下面回答了我自己的问题…在Ubuntu 16+上使用Apache 2.4使用Python 3.6.1设置Django 1.11

sudo nano apache2.conf
sudo nano example.com.conf
<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>
注意:这并没有涵盖您“可以做”的所有事情——这是为了让您的服务器尽快启动并运行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软件包)

2。安装Apache2 Web服务器

sudo apt-get install apache2 apache2-dev
django-admin startproject django_project
example path: /py361ve/lib/python3.6/site-packages/django/contrib/admin/static/admin
(这里的一切)

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

mkdir ~/example.com
cd ~/example.com
virtualenv --python=/usr/bin/python3.6 py361ve
source py361ve/bin/activate
import sys 
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
deactivate
(此处提供有关虚拟环境的更多信息。) )

4。进入新的虚拟环境以向其安装软件包

mkdir ~/example.com
cd ~/example.com
virtualenv --python=/usr/bin/python3.6 py361ve
source py361ve/bin/activate
import sys 
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
deactivate
(使用virtualenv)

5。安装Django、mod_wsgi和任何其他需要的软件包

pip install django
pip install mod_wsgi
pip install ...
(在虚拟环境中不需要pip3—pip在此处使用您的虚拟环境python版本)

(有关pip的更多信息,请参见此处。) mod_wsgi )

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

sudo apt-get install apache2 apache2-dev
django-admin startproject django_project
example path: /py361ve/lib/python3.6/site-packages/django/contrib/admin/static/admin
(如何构建Django应用程序 )

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

mkdir ~/example.com
cd ~/example.com
virtualenv --python=/usr/bin/python3.6 py361ve
source py361ve/bin/activate
import sys 
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
deactivate
附加:sys.path.append('/path/to/your/library')

(django部署)

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

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

(以下说明中的VirtualHost示例应使设置更加简单。) (清晰)

(Django设置 )

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

mod_wsgi-express module-config
()

10。退出虚拟环境

mkdir ~/example.com
cd ~/example.com
virtualenv --python=/usr/bin/python3.6 py361ve
source py361ve/bin/activate
import sys 
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
deactivate
(您可以随时使用源重新进入虚拟环境 步骤4中的方法)

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

sudo nano apache2.conf
sudo nano example.com.conf
<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>
(更多关于apache2.conf[或某些系统上的httpd.conf] )

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

sudo nano apache2.conf
sudo nano example.com.conf
<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>
(虚拟主机示例) 和mod_wsgi 守护程序模式 )

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

sudo a2ensite example.com.conf
sudo service apache2 reload
()

14。如果要启用对站点的管理员访问,只需将文件从python虚拟环境复制到别名为static/admin的文件夹中

sudo apt-get install apache2 apache2-dev
django-admin startproject django_project
example path: /py361ve/lib/python3.6/site-packages/django/contrib/admin/static/admin
(提供管理文件) )

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

touch ~/example.com/my_project/my_project/wsgi.py
        or
sudo service apache2 restart
16。最后,检查所有文件夹和文件是否具有足够的组(通常是www数据)读写权限,以及数据库所在的文件夹(如果使用sqlite)是否具有组写权限。

sudo nano apache2.conf
sudo nano example.com.conf
<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>
()

虚拟主机示例模板…

sudo nano apache2.conf
sudo nano example.com.conf
<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>

ServerName example.com
ServerAlias www.example.com
服务器管理员info@example.com
DocumentRoot/var/www/example.com
选项如下符号链接
允许超越所有
命令允许,拒绝
通融
别名/robots.txt/var/www/example.com/robots.txt
别名/favicon.ico/var/www/example.com/favicon.ico
别名/static//var/www/example.com/static/
别名/media//var/www/example.com/media/
要求所有授权
要求所有授权
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
要求所有授权

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

您是否阅读了部署文档,或者在谷歌上搜索关于这个主题的许多问题或其他教程中的任何一个?在投票否决并指责我没有搜索和阅读文档之前,你是否阅读了我对自己问题的回答?