Uwsgi+Nginx将Django项目部署到服务器
开发阶段时,都是直接python manage.py runserver 0.0.0.0:8000 把项目运行在本地。
确实很方便,但运行效率很低。当项目上线时,一般都不推荐这样。
现在django项目的方案基本都是用Linux+Uwsgi+Nginx组合方式进行部署。
Uwsgi处理请求,Nginx处理静态文件,这样运行效率就高很多。
* 本篇文章默认装好了 Nginx,请先自行安装。
安装虚拟环境
pip3 install virtualenv
一般的Linux系统的服务器都带一个python2.x和python3.x,不要直接用pip安装,用pip3。
创建虚拟环境
virtualenv project
project 是虚拟环境的名字。
激活虚拟环境
# 进到虚拟环境 bin目录
cd project/bin/
source activate
(project) [root@VM-8-6-centos bin]#
,主机名前面有个(project)就算成功了。
安装Uwsgi
pip install uwsgi
虚拟环境里面默认的是python版本是3.x的,可以直接用pip。
然后在安装Django和自己项目里用到的其他第三包。
配置Uwsgi
新建一个 uwsgi.ini 的配置文件。
vim uwsgi.ini
输入下面的配置内容。
[uwsgi]
# 进程数
processes=2
# 开启主进程模式--uwsgi服务器的角色 uwsgi做主进程,关闭该进程其他相关进程也会被杀掉
master=True
# 线程数
threads=3
#Django项目所在目录
chdir=/home/www/project
#Django项目中wsgi.py文件的目录
wsgi-file=/home/www/project/project/wsgi.py
#套接字方式--使用nginx连接时使用,后面是Django程序所在服务器地址
socket=127.0.0.1:8000
#日志 需要自己创建
logto = /home/www/project/uwsgi/logs/info.log
后uwsgi后台运行日志文件,也要自己创建
daemonize= /home/www/project/uwsgi/logs/info.log
chmod-socket = 660
vacuum = true
max-requests = 1000
#运行状态
stats= /home/www/project/uwsgi/uwsgi.status
pidfile =/home/www/project/uwsgi/uwsgi.pid
配置Nginx
可以输入nginx -t
查看配置文件的路径
(project) [root@VM-8-6-centos bin]# nginx -t
nginx: the configuration file /www/server/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /www/server/nginx/conf/nginx.conf test is successful
最后一行就是配置文件的路径,出现ok和successful也说明配置文件没问题,后面配置完文件也可以用这条命令检查配置文件是否有问题。
编辑 nginx.conf
配置文件
里面有一些默认配置,不用管,直接在http下面,加一个server 块
server {
listen 80;
# listen 443 ssl;
charset utf-8;
#服务器的ip地址,如果自己有域名也可以写域名
server_name 0.0.0.0;
location /static {
# django项目的static静态目录
alias /home/www/project/static;
expires 1h;
add_header Cache-Control "public, max-age=3600";
}
location / {
include uwsgi_params;
# uwsgi运行的端口
uwsgi_pass 127.0.0.1:8000;
}
}
启动项目
进到配置文件uwsgi.ini所在的目录下,启动uwsgi。
(project) [root@VM-8-6-centos managesystem]# uwsgi -d --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini
上面就是启动成功的样子,-d 是后台运行。
在启动Nginx
nginx -c /www/server/nginx/conf/nginx.conf
如果提示端口在使用,可以输入nginx -s reload
重启Nginx。
在浏览器输入服务器的IP地址可以看到项目在运行了
如果文章对你有帮助!可点击按钮打赏哦 ~
acwing
3 #
acwing
2 #
菜鸟
1 #