Django项目进行进行uwsgi+nginx部署

使用uwsgi、nginx进行Django项目的服务器部署

文章使用前提:
Django项目已经开发完成
已经将文件上传至服务器(rz命令)

在服务器创建Django项目依赖的python虚拟环境
参考命令:

# 查看python版本:
python -V

# 查看是否安装virtualenv
pip show virtualenv

# 没有没有查看到virtualenv相关信息,需要安装
pip install virtualenv

# (我的Django项目是基于python 3.6.8)
# 下载python安装包
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

# 解压至指定目录
tar zxvf Python-3.6.8.tgz -C /usr/Test/

cd /Python-3.6.8

# 配置安装目录
./configure --prefix=/usr/Test/Python-3.6.8

# 编译安装文件
make && make install

# 建立软连接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3

# 指定python版本,创建虚拟环境py3env
virtualenv -p python3 pye3env

# 进入创建的虚拟环境
source py3env/bin/activate

安装uwsgi

# 安装的uwsgi
pip install uwsgi
  • 测试使用一下安装的uwsgi:
    创建测试用到的脚本test.py:
# test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # python3
  • 启用uwsgi,调用脚本
# 192.168.16.45:9000 服务器地址及端口号
uwsgi --http 192.168.16.45:9000 --wsgi-file test.py

# 如果端口号被占用,更改端口号即可。查看端口号是否被占用
stat -ano | grep 9000
  • 在本地浏览器访问192.168.16.45:9000,如果看到"Hello World",说明uwsgi配置成功。

  • 使用uwsgi配置Django项目

# 替换test.py为Django项目中的wsgi.py
uwsgi --http 192.168.16.45:9000 --file ../TestBlogs/wsgi.py
  • 在本地浏览器访问192.168.16.45:9000,即可看到Django项目。

进一步优化
将uwsgi的参数写在配置wsgi.ini中,这里使用ini类型文件。同时在文件中配置pidfile、stats、log文件。

# TestBlogs_wsgi.ini file
[uwsgi]
# Django-related settings
http = 192.168.16.45:9000
# the base directory (full path)
chdir           = /usr/TestBlogs/TestBlogs
# Django s wsgi file
module          = TestBlogs.wsg
# master
#master          = true
# maximum number of worker processes
processes       = 1
chmod-socket    = 664
clear environment on exit
vacuum          = true
buffer-size = 30000
pidfile = %(chdir)/conf/uwsgi.pid
stats = %(chdir)/conf/uwsgi.status
daemonize = uwsgi.log

pidfile文件的使用,该文件记录uwsgi的PID,可以通过该文件控制uwsgi的关闭、重启。

# 进程中查看uwsgi
ps aux | grep uwsgi

# 重启
uwsgi --reload uwsgi.pid

# 关闭
uwsgi --stop uwsgi.pid

stats文件,用来查看uwsgi的运行状态。

uwsgi --connect-and-read  uwsgi.status

配置安装nginx

# 下载nginx
wget http://nginx.org/download/nginx-1.9.9.tar.gz

# 解压文件
tar zvxf nginx-1.9.9.tar.gz

# 配置安装目录
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
# --prefix=path 定义Nguni 服务所在的文件夹,服务根路径,用于设置其他由configure设置的相对路径(除了用到的源库路径)。默认是/usr/local/nginx。
# --with-http_ssl_module —— 启用编译一个支持把https加到http服务的模块。该模块默认不编译,依赖OpenSSL库
# --with-pcre=path —— 设置pcre库源码路径。该库是正则表达式所必须的,推荐安装。

# 运行nginx默认配置,检查是否成功安装,在本地访问服务器地址,看到nginx页面
/usr/local/webserver/nginx/sbin/nginx -d /usr/local/webserver/nginx/conf/nginx.conf.deafult
  • 修改配置文件
vi /usr/local/webserver/nginx/conf/nginx.conf

文件内容

# nginx.conf file
http{
	include  mime.types;
	default_type application/octet-stream;
	sendfile on;
	keepalive_timeout  65;
	server {
       		listen       9010;
		server_name  localhost;
		location / {
	            include /usr/local/webserver/nginx/conf/uwsgi_params;
	            uwsgi_pass 192.168.16.45:9000;
	            uwsgi_param UWSGI_SCRIPT TestBlogs.wsgi;
	            uwsgi_param UWSGI_CHDIR /usr/TestBlogs/TestsBlogs;
	            root   /usr/TestBlogs/TestBlogs;
	            #index  index.html index.htm;
	            client_max_body_size 35m;
	        }
		location /static/ {
	         	alias /usr/TestBlogs/TestBlogs/static/;
	         	expires 30d;
	        }
	        location /media/ {
	         	alias /usr/TestBlogs/TestBlgos;
	         	expires 30d;
	        }
	     }	
	}
	

启动:

uwsgi --ini wsgi.ini & /usr/loca/webserver/nginx/sbin/nginx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值