nginx+Uwsgi+Django总结与分析
2017-08-13 17:30 tlnshuju 阅读(300) 评论(0) 编辑 收藏 举报配置与调试nginx与uwsgi
<vacuum/>#退出清理
</uwsgi>
#多个项目时候须要
可能使用的命令
这些内容也就是这几天的了 站点备案时间太长慢慢等吧 这事情能够放一放了
參考:
3.部署备忘
5.编程小结
近期三天一直在调试Django+nginx+uwsgi+sqlite3部署的阿里云的server,系统是ubuntu的所下面载什么的都非常方便sudo spt-get就能够了
所以想着把这几天遇到的问题跟过程fork下来以后也许会遇到
项目tree 命令的话tree -L 2
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── uwsgi.xml
└── app_name(weixin)
├── admin.py
├── build
├── __init__.py
├── models.py
├── templates
├── tests.py
└── views.py
1.nginx
nginx能够作为WEB Server,反向代理。负载均衡等服务。我用它基本是为了处理static file的
关于/etc/nginx/site-enables/以下能够创建一个文件
----->由于在run service nginx stop时候是执行的默认conf
也就是/etc/nginx/nginx.conf---->这个文件里会导入/etc/nginx/site-enables/下的配置还有/etc/nginx/nginx.d/下的
当然你也能够run指定的配置 nginx -c 就可以 例如以下给出的配置
server
{
listen
80;
server_name
10.1.6.79;
#server_name能够是域名如我的zoues.com
www.zoues.com 都能够写可是要空格最后是;
access_log
/var/log/nginx/example_access
.log;
#这边的log覆盖了/etc/nginx/nginx.conf设置的log假设这边不写的话log都在/var/log/nginx以下
error_log
/var/log/nginx/example_error
.log;
root
/var/www/example
;
location
/ {
uwsgi_pass
127.0.0.1:9001;
#这个是跟uwsgi配置关联
也就是2者的通信口能够是socket-->unix的跟ip方式都能够
可是unix的方式要创建文件
include
uwsgi_params;
#一定要包涵
#
uwsgi_param
UWSGI_SCHEME $scheme;
#
uwsgi_param
SERVER_SOFTWARE nginx/$nginx_version;
}
}
2.uwsgi的选择 由于django特有的uwsgi协议所以选择uwsgi也是情理之中了
uWSGI的主要特点例如以下:
超快的性能。
低内存占用(实測为apache2的mod_wsgi的一半左右)。
多app管理。
详尽的日志功能(能够用来分析app性能和瓶颈)。
高度可定制(内存限制大小。服务一定次数后重新启动等)
这配置中关键还是參数的理解
<uwsgi>
<plugin>python</plugin>
<plugin>python</plugin>
# 记下Django所在的Python版本号,然后通过以下的命令切换uwsgi的默认Python版本号(一般不须要切换)
<socket>127.0.0.1:9001</socket>
<socket>127.0.0.1:9001</socket>
#也就是nginx下配置的uwsgi_pass
<pythonpath>/var/www/example/app/</pythonpath>
<pythonpath>/var/www/example/app/</pythonpath>
#pythonpath非常重要 能够配置多个是为了寻找以下的<script>以及<module>的 配置的时候一定要相应你配置的某一个pythonpath 然后写<script>和<module>跟python中from * import *的关系是一致的
#当然你若嫌麻烦的话就使用wsgi-file吧 一站究竟啊
<app mountpoint="/">
<script>wsgi_configuration_module</script>
</app>
<master/>
<processes>4</processes>
<reload-mercy>8</reload-mercy>
<cpu-affinity>1</cpu-affinity>
<max-requests>2000</max-requests>
<limit-as>512</limit-as>
<reload-on-as>256</reload-on-as>
<reload-on-rss>192</reload-on-rss>
<app mountpoint="/">
<script>wsgi_configuration_module</script>
</app>
<master/>
<processes>4</processes>
<reload-mercy>8</reload-mercy>
<cpu-affinity>1</cpu-affinity>
<max-requests>2000</max-requests>
<limit-as>512</limit-as>
<reload-on-as>256</reload-on-as>
<reload-on-rss>192</reload-on-rss>
<daemonize>/var/log/uwsgi.log</daemonize>
#这个是日志 最好写上
<no-orphans/><vacuum/>#退出清理
</uwsgi>
这个通过uwsgi -x xxx.xml去执行 须要xml模块(详细不记得了我没遇到不能执行的情况)
以下给出的是ini的配置
# uwsgi_XXX.ini file
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir = /var/www/<project path>
# Django's wsgi filemodule = <project name>.wsgi
# the virtualenv (full path)
home = <virtualenv path>
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = /var/www/<project path>/<project name>.sock
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
daemonize = /var/log/uwsgi.log
pidfile=/var/www/<project path>/uwsgi.pid
列2:这边是直接配置的wsgi-file所以也就没了pythonpath这个配置了
[uwsgi] |
02 |
vhost = false |
03 |
plugins = python |
04 |
socket = 127.0 . 0.1 : 8077 |
05 |
master = true |
06 |
enable - threads = true |
07 |
workers = 1 |
08 |
wsgi - file = / root / nowamagic_venv / nowamagic_pj / nowamagic_pj / wsgi.py |
09 |
virtualenv = / root / nowamagic_venv |
10 |
chdir = / root / nowamagic_venv / nowamagic_pj |
1. 关闭 uWSGI:
1 |
killall
-9 uwsgi |
2 |
killall
-s HUP /var/www/uwsgi |
3 |
killall
-s HUP /usr/ local /bin/uwsgi |
2. 列出port占用情况:
1 |
netstat -lpnt |
以下写论文把那鸟项目做了 酱油打了太多 真是...