在默认本地测试环境已经能够启动Django项目后。
一 安装uwsgi:
python3 -m pip install uwsgi
手动测试启动:/usr/local/python3.5/bin/uwsgi --http 111.11.207.106:9012 --file xzcmcc/wsgi.py
使用配置启动:在同层项目目录下建一个scriptConf文件夹
创建一个uwsgi.ini文件,内容如下:
# uwsig使用配置文件启动
[uwsgi]
# 项目目录
chdir=/var/XZCMCC/xzcmcc/
# 指定项目的application
module=xzcmcc.wsgi:application
# 指定sock的文件路径
socket=/var/XZCMCC/xzcmcc/scriptConf/uwsgi.sock
# 进程个数
workers=5
pidfile=/var/XZCMCC/xzcmcc/scriptConf/uwsgi.pid
# 指定IP端口
http=111.11.207.106:9012
# 指定静态文件
static-map=/static=/var/XZCMCC/xzcmcc/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/var/XZCMCC/xzcmcc/scriptConf/uwsgi.log
cd /var/XZCMCC/xzcmcc/scriptConf
启动uwsgi:/usr/local/python3.5/bin/uwsgi --ini uwsgi.ini
访问111.11.207.106:9012,启动成功,至此,uwsgi+django就完美结合了,但是,光有uwsgi还不够,uwsgi处理动态请求能力高,但对于静态请求(如static文件,css,js文件等)处理能力差,此时就要结合nginx一起使用。
二 安装nginx
1:安装工具包 wget、vim和gcc
yum install -y wget
yum install -y vim-enhanced
yum install -y make cmake gcc gcc-c++
2:下载nginx安装包
3:安装依赖包
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
4:解压nginx-1.6.2.tar.gz到/usr/local/目录下
tar -zxvf nginx-1.6.2.tar.gz -C /usr/local/
5:进行configure配置
./configure --prefix=/usr/local/nginx
6:编译安装
make && make install
7:启动Nginx,启动完之后检查nginx是否已经正常启动,看到如下信息说明正常启动
/usr/local/nginx/sbin/nginx
ps -ef | grep nginx
root 24956 1 0 19:41 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 24957 24956 0 19:41 ? 00:00:00 nginx: worker process
root 24959 10533 0 19:41 pts/0 00:00:00 grep --color=auto nginx
如果要关闭nginx,我们可以使用如下命令:
/usr/local/nginx/sbin/nginx -s stop
如果想要重新热启动nginx,则使用如下命令:
/usr/local/nginx/sbin/nginx -s reload
9:测试nginx
通过浏览器访问nginx欢迎页,在地址栏输入:http://192.168.156.11:80/,如下图所示。
10:学习nginx配置
在nginx目录下进入conf目录,该目录下有个nginx.conf文件,这是nginx最重要的配置文件
vim /usr/local/nginx/conf/nginx.conf
三 连接 uwsgi+nginx+django
在配置文件中加入 /usr/local/nginx/conf/nginx.conf
server { # 这个server标识我要配置了
listen 9090; # 我要监听那个端口
server_name 111.11.207.106 ; # 你访问的路径前面的url名称
access_log /var/log/nginx/access.log; # Nginx日志配置
charset utf-8; # Nginx编码
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支持压缩的类型
error_page 404 /404.html; # 错误页面
error_page 500 502 503 504 /50x.html; # 错误页面
# 指定项目路径uwsgi
location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
uwsgi_pass unix:/var/XZCMCC/xzcmcc/scriptConf/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求就会直接丢给他
}
# 指定静态文件路径
location /static/ {
alias /var/staticFile/;
index index.html index.htm;
}
}
然后重启nginx。
#!/bin/bash
killall nginx
killall uwsgi
#启动uwsgi
cd /var/XZCMCC/xzcmcc/scriptConf
/usr/local/python3.5/bin/uwsgi --ini uwsgi.ini
/usr/local/nginx/sbin/nginx
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
解决办法: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf