1.简介
Django中的runserver只是一个很简单的web服务器,启动服务器常见的方法是通过Putty执行命令。虽然调试和测试方便,然而如果关闭了Putty或者退出命令,服务就停止了,并且不能承受许多用户同时使用的负载。所以需要将Django部署到生产级的服务器,这里选择Apache。
2.修改Django项目
1.进入到项目根路径,修改项目权限:
[root@s200 ~]# cd /usr/local/share/auto_deploy/ [root@s200 ~]# chmod 777 -R /usr/local/share/auto_deploy |
3.执行如下命令,安装项目依赖:
[root@s200 ~]# pip install -r requirements.txt |
4.启动项目服务,测试依赖是否安装成功(在项目根目录下执行如下命令):
[root@s200 ~]# python runserver IP:Port |
提示:查看服务是否正常启动。访问:http://IP:Port
常见问题:
启动服务时报如下错误:
AttributeError: module 'gssapi' has no attribute ' |
解决方案:
修改/root/anaconda2/lib/python2.7/site-packages/paramiko/ssh_gss.py,53,54行为:
53 import gssapi.error 54 GSS_EXCEPTIONS = (gssapi.error.GSSException,) |
3.配置Django到Apache服务器
1.首先,确定安装httpd服务并启动,否则安装httpd服务
[root@s200 ~]# yum install httpd [root@s200 ~]# systemctl start httpd [root@s200 ~]# systemctl enable httpd |
2.配置Auto_deploy项目到Apache
[root@s200 ~]# yum install httpd [root@s200 ~]# systemctl start httpd [root@s200 ~]# systemctl enable httpd |
3.安装mod_wsgi python-devel
[root@s200 ~]# yum install mod_wsgi,python-devel |
4.进入Apache服务器配置路径,完成如下操作:
[root@s200 ~]# cd /etc/httpd/conf.d/ |
5.创建并编辑Auto_deploy.conf文件
<VirtualHost *:82> WSGIScriptAlias / /usr/local/share/auto_deploy/auto_deploy/wsgi.py Alias /static/ /usr/local/share/auto_deploy/static/ <Directory "/usr/local/share/auto_deploy"> #WSGIProcessGroup wxsrv WSGIApplicationGroup %{GLOBAL} WSGIScriptReloading On Order deny,allow Require all granted </Directory> </VirtualHost> |
说明:
82:是Auto_deploy服务将监听的端口号。 /usr/local/share/auto_deploy/auto_deploy/wsgi.py:是Auto_deploy项目的wsgi脚本路径。 /usr/local/share/auto_deploy/static/:是Auto_deploy项目静态文件所在路径。 /usr/local/share/auto_deploy:是Auto_deploy项目的根目录。 |
6.修改Apache配置文件,添加监听端口:
[root@s200 ~]# vim /etc/httpd/conf/httpd.conf |
7.在文件中添加
Listen 82 |
8.修改项目中$root/auto_deploy/wsgi.py,改为如下内容:
import os,sys from django.core.wsgi import get_wsgi_application path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path. insert (0,path) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "auto_deploy.settings") application = get_wsgi_application() |