创建时间:20161223
本章小目标
- 安装nginx
- 部署已有的hi_weui项目
- 采用uwsgi方式部署
- 采用supervisor管理应用进程
- 总结常用的操作命令
- 总结常用的配置
参考链接
- 基于nginx和uWSGI在Ubuntu上部署Django, 讲得比较详细
- 自强学堂,参考其supervisor用法
- 菜鸟教程
1 安装nginx,uwsgi,supervisor等
参考上面链接,略
2 编辑uwsgi启动配置文件
在hi_weui的项目目录下创建文件
$ pwd
/home/bit/coding_app/hi_weui
$ cat hi_weui_uwsgi.ini
[uwsgi]
# the base directory (full path)
chdir=/home/bit/coding_app/hi_weui
# Django's wsgi file
module=hi_weui.wsgi
# the virtualenv (full path)
home=/home/bit/.virtualenvs/realkpi
master=true
processes = 8
threads = 4
vacuum = true
chmod-socket = 666
socket = /home/bit/coding_app/hi_weui/hi_weui.sock
3 编辑supervisor配置文件
同样放在hi_weui项目目录下
$ pwd
/home/bit/coding_app/hi_weui
(sudo) echo_supervisord_conf > ./supervisord.conf
$ tail supervisord.conf #只是在模板后面增加hi_weui相关配置
;files = relative/directory/*.ini
[program:hi_weui]
command=/home/bit/.virtualenvs/realkpi/bin/uwsgi --ini /home/bit/coding_app/hi_weui/hi_weui_uwsgi.ini
directory=/home/bit/coding_app/hi_weui
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
4 编辑nginx服务配置文件
在nginx目录下创建
$ pwd
/etc/nginx/sites-available
$ cat hi_weui_nginx.conf
upstream django{
#server localhost:8001;
server unix:///home/bit/coding_app/hi_weui/hi_weui.sock;
}
server {
listen 8087;
server_name localhost;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /home/bit/coding_app/hi_weui/media;
}
location /static {
alias /home/bit/coding_app/hi_weui/collected_static;
}
location / {
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
}
5 激活nginx 对hi_weui的服务
其实就是创建了一个链接
$ sudo ln -s /etc/nginx/sites-available/hi_weui_nginx.conf /etc/nginx/sites-enabled/hi_weui_nginx.conf
$ ls -l ../sites-enabled/
total 0
lrwxrwxrwx 1 root root 34 Dec 26 16:22 default -> /etc/nginx/sites-available/default
lrwxrwxrwx 1 root root 45 Dec 27 11:23 hi_weui_nginx.conf -> /etc/nginx/sites-available/hi_weui_nginx.conf
6 访问流总结
整理一下思路:
按照现有的配置,大致过程如下。
- 网页访问nginx服务:localhost:8087
- nginx接到socket:
server unix:///home/bit/coding_app/hi_weui/hi_weui.sock;
- socket接到uwsgi:
socket = /home/bit/coding_app/hi_weui/hi_weui.sock
- uwsgi加载模块:
module=hi_weui.wsgi
- 模块由django最终提供服务。
7 启动服务
7.1 测试在django开发服务上正常
$ sh start.sh react
访问:http://127.0.0.1:8088/
执行一次start.sh脚本的目的是重新编译一次应用,并搜集相关静态文件到collected_static目录下
$ sh stop.sh #关掉开发服务器
7.2 启动nginx
$ sudo service nginx restart
访问:http://127.0.0.1:8087/ 此时还无法正常显示
访问:http://127.0.0.1:80 看到正常的nginx提示页面
7.3 启动supervisor
用之前写好的配置文件启动
$ pwd
/home/bit/coding_app/hi_weui
$ supervisord -c supervisord.conf
$ supervisorctl #打开客户端管理,看到hi_weui已经启动了
hi_weui RUNNING pid 17202, uptime 0:00:39
supervisor> status
hi_weui RUNNING pid 17202, uptime 0:00:42
supervisor> help 可以看更多命令帮助
supervisor> stop hi_weui #停应用
hi_weui: stopped
supervisor> restart hi_weui #重启应用
hi_weui: ERROR (not running) #因为刚已经停止了
hi_weui: started
访问:http://127.0.0.1:8087/ 此时已经可以正常显示。
为什么用supervisor呢? 如果nginx上同时启动了许多项目,则可以通过nginx启停所有项目,或者是通过supervisor分别启停1个项目。
8 访问日志
8.1 nginx配置文件
/etc/nginx$ cat nginx.conf
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
可以看到对应的日志目录
8.2 关于django print日志输出
部署在nginx上后,print输出是不显示的,如果要打印日志。推荐使用python logging模块,可以在django的settings文件上配置。
从第1回到这里,就已经完成了react项目的脚手架,并集成到django,最终部署到nginx上。
网友评论