nginx部署django应用
Django部署方式有很多种,之前写过一篇部署在Apache上的博文:https://www.cnblogs.com/shenh/p/7552722.html 。下文介绍的是通过Nginx来部署。
Nginx是一个高性能的HTTP和反向代理服务,运用非常广泛。Django应用可以通过Nginx+uwsgi的方式进行部署。Nginx放置在服务器的最前端来接收所有web请求,统一管理,首先分离出静态请求,自己做处理。然后,Nginx将非静态请求通过uwsgi转发给Django,由Django处理。
一、安装Nginx
安装Nginx命令
apt-get install Nginx
Nginx的默认端口为80,很容易被其他服务占用,因此需要修改成其他端口。打开文件 vi /etc/nginx/nginx.conf ,如果能找到监听的端口,直接修改 。找不到的也没关系 ,找到如下配置 ,说明是引用了其他目录的文件
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
...
打开 /etc/nginx/sites-enabled/ ,找到并编辑 default ,将80修改成8088
# Default server configuration
#
server {
listen default_server;
listen [::]: default_server; # SSL configuration
#
# listen ssl default_server;
# listen [::]: ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
Nginx启动命令
service nginx start service nginx restart service nginx stop
测试下,访问 http://10.1.35.51:8088/
二、配置uwsgi
1.安装
pip 安装 uwsgi 命令:
pip install uwsgi
2.配置 uwsgi 和 Django 的连接
Django 项目路径位于 /home/project/web/ ,在 Django 项目根目录(manage.py 同级目录)新建文件 uwsgi.ini (也支持 xml 文件格式)。在文件中添加如下内容:
# uwsgi.ini file
[uwsgi] # Django-related settings
socket = : # the base directory (full path)
chdir = /home/project/web # Django s wsgi file
module = web.wsgi # process-related settings
master = true # maximum number of worker processes
processes = 5 #maximum number of worker threads
threads = 5
# try to remove all of the generated file/sockets
vacuum = true
3. 配置 uwsgi 和 Nginx 的连接
修改Nginx配置文件:vi /etc/nginx/sites-available/default ,增加一段配置。然后重启Nginx
server {
listen ;
server_name 127.0.0.1
charset UTF-;
access_log /var/log/nginx/web_access.log;
error_log /var/log/nginx/web_error.log; client_max_body_size 75M; location / {
include uwsgi_params; # 通过uwsgi转发请求
uwsgi_pass 127.0.0.1:; # 和上文配置的socket端口保持一致
uwsgi_read_timeout 15; # 设置请求超时时间
}
location /static { # 访问静态资源
expires 30d;
autoindex on;
add_header Cache-Control private;
alias /var/web/;
}
}
4.配置 Django 静态资源
在setting里增加配置,静态资源 路径 和 Nginx 里的访问路径一致
STATIC_ROOT = os.path.join(BASE_DIR,'/var/web')
执行命令
Python manage.py collectstatic
5.最后启动项目
cd /home/project/web
uwsgi --ini uwsgi.ini
运行成功:
(env35) root@ubuntu:/home/project/ShiHangTool# uwsgi --ini ShiHangTool_uwsgi.ini
[uWSGI] getting INI configuration from ShiHangTool_uwsgi.ini
*** Starting uWSGI 2.0.17.1 (64bit) on [Tue Dec :: ] ***
compiled with version: 5.4. on December ::
os: Linux-4.4.--generic #-Ubuntu SMP Wed Oct :: UTC
nodename: ubuntu
machine: x86_64
clock source: unix
detected number of CPU cores:
current working directory: /home/project/ShiHangTool
detected binary path: /root/.virtualenvs/env35/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
chdir() to /home/project/ShiHangTool
your processes number limit is
your memory page size is bytes
detected max file descriptor number:
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket bound to TCP address : fd
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
Python version: 3.5. (default, Nov , ::) [GCC 5.4. ]
Python main interpreter initialized at 0x1504fe0
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
python threads support enabled
your server socket listen backlog is limited to connections
your mercy for graceful operations on workers is seconds
mapped bytes ( KB) for cores
*** Operational MODE: preforking+threaded ***
WSGI app (mountpoint='') ready in seconds on interpreter 0x1504fe0 pid: (default app)
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: )
spawned uWSGI worker (pid: , cores: )
spawned uWSGI worker (pid: , cores: )
spawned uWSGI worker (pid: , cores: )
spawned uWSGI worker (pid: , cores: )
spawned uWSGI worker (pid: , cores: )
访问 http://10.1.35.51:8099/Home/OrderSettle-K8S/
最新文章
- Java-Android【2】-弹出对话框
- eclipse中如何安装插件ADT及SDK工具
- 序列化form表单内容为json对象
- Article Master Data Deviation
- fingerprintjs
- CAS SSO对手机应用支持的一种思路
- Python:文件操作
- 关于Grunt可视化的尝试
- ios控件 UIImageView
- PHP反射原理的实现
- Flask 系列之 Migration
- SkyWalking-netcore
- BZOJ3224普通平衡树——旋转treap
- python实现stack并测试
- 搭建iSCSI文件服务器故障转移群集
- 20165303 2017-2017-2《Java程序设计》课程总结
- NETBEAN 启动报错 CANNOT LOCATE JAVA INSTALLATION IN SPECIFIED JDKHOME的解决办法
- POJ 1102
- P2607 [ZJOI2008]骑士
- IntelliJ IDEA 18 周岁,吐血推进珍藏已久的必装插件