本人从事python开发相关的工作,故选择django框架进行开发。最近为公司开发了一套内部使用的展示系统,因为在部署测试时碰到一系列问题,故记录此次的部署操作流程,希望能与大家互相交流。
环境说明
- 系统:centos6.7
- python版本:python3.5.5
- Django版本:1.11.8
- uwsgi
- nginx:1.14.*
第一步:测试代码本地运行状况
- 当代码已经开发完成之后,请将项目通过
ftp
或者git
的方式上传到服务器上,细节不赘述。 - 配置好相应的虚拟环境(
virtualenv
),这是操作习惯,建议使用虚拟环境,尤其是在生产系统中,因为这台服务器可能不止运行一个项目。 - 执行
python manage.py runserver
,测试开发状态下前台与后台访问是否正常。- 如果此步骤有异常,请自行调整。切勿往下操作。
第二步:配置uwsgi服务
关于uwsgi
的原理,网络上有大量的资料可以查询,细节不赘述。
使用 ini
配置文件的方式运行uwsgi服务,至于xml的未测试
-
安装uwsgi
(webenv) [root@localhost alice]# pip install uwsgi
-
配置ini文件
-
该文件存放位置随意。本人存放在/etc下
(webenv) [root@localhost alice]# more /etc/uwsgi8000.ini # 运行在虚拟环境下 [uwsgi] # Django项目实际访问端口 socket = :8000 # 项目根目录位置 chdir = /var/www/html/yourproject # wsgi.py文件在项目的中的相对位置,其中yourproject为settings.py的上级目录 wsgi-file = yourprojetc/wsgi.py # 配置wsgi模块,其中yourproject为settings.py的上级目录 module =yourapp.wsgi # 进程设置,无需变动 # 开启主线程 master = true # 最多启动1个uwsgi进程 processes = 1 # 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件 vacuum = true # 配置进程文件 pidfile=/var/run/uwsgi.pid # 配置服务日志路径 daemonize=/var/log/uwsgi.log
第三步:nginx配置
-
配置文件(主要是server中的内容,注释掉默认)
server { listen 8080; server_name localhost; # 加载静态页面 location /static/ { alias /var/www/html/yourproject/static/; } location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; } }
-
启动服务
第四步:测试页面访问
实际部署时:
- 前台页面访问正常。
- 后台出现css样式加载失败,使用的django默认后台
解决方案:
-
方案一:按照网上的
python manage.py collectstatic
未能解决 -
方案二:将django默认后台的静态文件拷贝至项目目录中的
static
目录下即可,问题解决。默认后台的静态文件目录在虚拟环境下的
site-packages
下,请自行查找,参照下面的路径cp -r /your_virtualenv_dir/lib/python3.5/site-packages/django/contrib/admin/static/admin /var/www/html/yourproject/static/