下面是"Django上线部署之Apache的方法"的完整攻略。
前置条件
- 已经在服务器上成功安装Django和Apache。
- 已经完成了Django项目的开发和测试。
- 配置虚拟环境并安装必要依赖。
步骤
1. 配置Apache2
编辑Apache配置文件,打开Terminal并输入以下命令:
sudo nano /etc/apache2/sites-available/000-default.conf
将以下内容添加到文件中:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /static /path/to/your/static/files
<Directory /path/to/your/static/files>
Require all granted
</Directory>
Alias /media /path/to/your/media/files
<Directory /path/to/your/media/files>
Require all granted
</Directory>
Alias / /path/to/your/project/wsgi.py
<Directory /path/to/your/project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
其中,/path/to/your/static/files
,/path/to/your/media/files
和/path/to/your/project/wsgi.py
分别是你的静态文件、媒体文件和Django项目的路径。
保存配置文件,并重启Apache服务器:
sudo service apache2 restart
2. 创建wsgi.py
在Django项目根目录下,创建一个wsgi.py文件,内容如下:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project_name.settings")
application = get_wsgi_application()
其中,your_project_name
是你的Django项目的名称。
3. 收集静态文件
在项目根目录下,打开Terminal并输入以下命令:
python manage.py collectstatic
4. 设置权限
在项目根目录下,打开Terminal并输入以下命令:
sudo chown :www-data /path/to/your/project/db.sqlite3
sudo chmod 664 /path/to/your/project/db.sqlite3
sudo chown :www-data /path/to/your/project
sudo chmod 775 /path/to/your/project
其中,/path/to/your/project/db.sqlite3
和/path/to/your/project
分别是你的数据库和项目目录的路径。
示例一
假设你的具体项目路径如下:/home/yang/project
,你的wsgi.py路径是/home/yang/project/wsgi.py
,你的静态文件路径是/home/yang/project/static
,你的媒体文件路径是/home/yang/project/media
。
则修改VirtualHost的部分内容如下:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /static /home/yang/project/static
<Directory /home/yang/project/static>
Require all granted
</Directory>
Alias /media /home/yang/project/media
<Directory /home/yang/project/media>
Require all granted
</Directory>
Alias / /home/yang/project/wsgi.py
<Directory /home/yang/project>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
示例二
假设你的具体项目路径如下:/var/www/yangproject
,你的wsgi.py路径是/var/www/yangproject/wsgi.py
,你的静态文件路径是/var/www/yangproject/static
,你的媒体文件路径是/var/www/yangproject/media
。
则修改VirtualHost的部分内容如下:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /static /var/www/yangproject/static
<Directory /var/www/yangproject/static>
Require all granted
</Directory>
Alias /media /var/www/yangproject/media
<Directory /var/www/yangproject/media>
Require all granted
</Directory>
Alias / /var/www/yangproject/wsgi.py
<Directory /var/www/yangproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
总结
通过以上方法,我们可以使用Apache来部署Django应用程序,让它在生产环境中运行。我们需要在Apache上配置一个虚拟主机,并创建一个wsgi.py文件,然后收集静态文件并设置正确的权限。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django上线部署之Apache的方法 - Python技术站