乐趣区

关于python:使用nginxuwsgi部署Django项目

一:装置 nginx

1:装置编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2:装置 PCRE

wget https://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure --prefix=/usr/local/pcre
make && make install

3:装置 nginx

cd ~
wget https://nginx.org/download/nginx-1.5.6.tar.gz
tar -zxf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure --prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_gzip_static_module
make && make install

4 判断 nginx 是否装置胜利

/usr/local/nginx/sbin/nginx -v

二:装置 uwsgi

1:装置 uwsgi

pip install uwsgi(pip3 的话应用:pip3 install uwsgi)

2:判断 uwsgi 是否装置胜利

uwsgi --version

三:Nginx+uwsgi 部署 Django 我的项目

1:uwsgi 配置

vim test.ini

test.ini 文件中内容如下:

# uwsig 应用配置文件启动
[uwsgi]
socket = 127.0.0.1:9090
master = true # 启用主过程
vhost = true #多站模式
#启动 uwsgi 的用户名和用户组
uid=root
gid=root
# 指定动态文件
static-map=/static=/data/www/test/static
no-site = true #多站模式时不设置入口模块和文件
workers = 2 #子过程数
reload-mercy = 10
vacuum = true #退出、重启时清理文件
max-requests = 1000
limit-as = 512
buffer-size = 30000
pidfile = /data/www/script/test.pid #pid 文件,用于上面的脚本启动、进行该过程
daemonize = /data/www/script/test.log  #日志文件
pythonpath = /usr/local/lib/python3.6/site-packages #Python 环境地址 

2:nginx 配置

server {
    listen       80;
    server_name  local.test.com;
    
    location / {            
        include  uwsgi_params;
        uwsgi_pass  127.0.0.1:9090;  #必须和 uwsgi 中的设置统一           
        uwsgi_param UWSGI_SCRIPT test.wsgi; #入口文件,即 wsgi.py 绝对于我的项目根目录的地位,“.”相当于一层目录
        uwsgi_param UWSGI_CHDIR /data/www/test;# 我的项目根目录
        index  index.html index.htm;
        client_max_body_size 35m;
    }
}

3:启动服务

killall -9 nginx   #进行 nginx
killall -9 uwsgi   #进行 uwsgi
uwsgi --ini /data/www/script/test.ini  #启动 uwsgi 脚本
/usr/local/nginx/sbin/nginx #启动 nginx

4:判断是否配置胜利

在浏览器拜访 local.test.com 如果拜访异样可能是防火墙问题

解决:

# 凋谢指定端口
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/etc/rc.d/init.d/iptables save #保留配置 
/etc/rc.d/init.d/iptables restart #重启服务

#敞开防火墙
systemctl stop firewalld.service  #敞开防火墙
systemctl disable firewalld.service #开机时敞开防火墙 
退出移动版