"""
WSGI config for cloudms project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/
"""
#!/usr/bin/python3
#coding: utf-8
import os
import sys
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cloudms.settings")
from django.core.handlers.wsgi import WSGIHandler
application = get_wsgi_application()
本文力求以简单的步骤帮助你快速地进入部署,只要你确认我的环境一致,设置一致,你将会非常顺利,不会踩坑,谁让我已经帮你全部埋了~~~ 本文与其他网帖不同在于
不讲原理,原理一时太复杂,避免复杂而产生畏惧心理,具体原理在其他文章讲述
不进行过多的安装后验证测试,一般安装成功与否应该能看的出来,集中精力进行部署配置,只要按照我的步骤说明,成功率会很高的,后续视情况在其他文章中进行说明,
本文仅进行了使项目运行起来的基本简单配置,涉及日志及静态处理目录暂没有在本文说明。力促最简洁快上手,更加复杂的配置请参考其他资料
为了简化部署,本文没有就mysql等数据库进行说明,相信完成了以下部署,数据库也不是问题,有时间也会就mysql进行说明,请保持关注哟
一. 环境说明: CentOS 6.8 64位 python 3.X django 2.0 nginx 1.12.2
uwsgi 2.0.15
二. 部署过程:
01-python3的安装(如果centos下不会安装软件,请自行百度)或参考个人另一文章 这里需要说明下,个人采用指定路径安装的,安装路径为
/home/python
,如果你的跟我不一样,请进行相应修改 由于centos本身自带有python2.7,需要使用python3,故而建立软连接,命令如下:ln -s /home/python/bin/python3.6 /usr/bin/python3
,后面就可以直接使用pyhton3调用Python3了02-pip安装django2.0,我的命令如下,注意和python2区分
python3 -m pip install django
03-必要库提前安装(为安装nginx等工作准备) 一般为:gcc-c++,PCRE 安装方法:
yum install gcc-c++
,同样的方式安装PCRE,04-nginx的安装 下载源码,安装方式同python,个人指定路径为:
/home/nginx
一般如果没有意外的话,安装都会是成功的,诸如Successfully之类(这里我没有像其他帖子那样紧接着测试,避免篇幅太长,万一错了还是需要自行查找资料...)
05-uwsgi的安装
python3 -m pip install uwsgi
注意:由于Python是指定路径安装,uwsgi是安装在python3的子路径,为了后面命令能够被识别,需要建立软连接,命令如下:ln -s /home/python/bin/uwsgi /usr/bin/uwsgi
06-文件配置 以上将全部需要的软件以及协议安装完了,接下来需要进行相关配置,以便使他们协同工作。 确保已有一个可以正常运行的django项目在(本机或服务器)上,个人django项目树为: 项目位于服务器路径为:
/home/programe
将nginx/conf/nginx.conf复制到个人工程目录下,并对server进行修改,这里仅提供了基本的配置,更加丰富的配置可参见个人拓展配置文章或者待熟悉了之后再自行配置
需要说明的是,uwsgi_pass这个对应的值需要与后面的保持一致,后面还会再次提醒。 py-autoreload = 1 #py文件修改,自动加载
接着在项目目录下新建uwsgi.ini文件,配置如下,(注意socket值与上文提到的uwsgi_pass保持一致):
说明: chdir=/home/programe/cloudms 即项目路径 module=cloudms.wsgi 绝对路径其实就是/home/programe/cloudms/cloudms/wsgi.py, 参照配置你的文件
注意:由于centos自带Python(指python2),所以请检查你的/home/programe/cloudms/cloudms/wsgi.py,是否匹配,这里给出我的wsgi.py,
至此,所有的服务配置都已经完成,接下来对工程进行简单的设置就可以启动了。
07-工程配置 服务器上运行不同于个人机上调试测试,需要将项目中settings.py部分修改——关闭调试,允许所有主机访问,
DEBUG = False
ALLOWED_HOSTS = ['*']
08-项目启动启动uwsgi:
uwsgi --ini /home/programe/cloudms/uwsgi.ini
uwsgi --stop uwsgi.pid 重启(一般系统环境变化会用到) uwsgi --reload uwsgi.pid 重载(一般修改参数,或者修改py文件经常用到)
启动nginx,(由于个人是自定义安装nginx,也没有为其建立软连接,所以需要切换到/home/nginx/sbin,然后执行以下名令)
./nginx -c /home/programe/cloudms/nginx.conf
至此,顺利的话,你就可以看到令人激动兴奋的web页面了。
三. 部署小结: 整个部署步骤较多,对于不是很熟悉的环境及操作的人来说会有一些障碍,跨越过去就好了。下面列出一些经常使用到的操作命令。 端口占用
netstat -lpnt
Nginx的启动、关闭
./nginx
启动nginx服务./nginx -s stop
关闭nginx服务./nginx -s reload
nginx重载,避免对线上用户造成大影响uwsgi重启 ,这个命令会对对应pid的进程进行重启,据说很温柔~~~
(重要,更新时重启下面这个操作,否则报错)
kill -HUP pid
killall -9 uwsgi
mk
新建文件夹cp
复制文件mv
移动文件(重命名)rm
删除文件(夹)(-rf)vim
新建或编辑文件(文件已存在就编辑)cat
读文件后续如果有时间再进行补充吧 netstat -antp|grep 80|grep ESTABLISHED -c4 查看Web服务器进程连接数 ps -ef|grep nginx|wc -l 查看Nginx运行进程数
重启后启动数据库(网站) 1---启动数据库 [root@devin support-files]# pwd /home/mysql/support-files [root@devin support-files]# ./mysql.server start Starting MySQL [ OK ] 2--启动uwsgi uwsgi --ini /home/programe/smartSdy8888/uwsgi.ini 3--启动nginx [root@devin sbin]# ls nginx restartNginx.py [root@devin sbin]# pwd /home/nginx/sbin [root@devin sbin]# ./nginx -c /home/programe/smartSdy8888/nginx.conf