前言

很久没更博客了,最近新写了一个小项目,后边有时间把一些心得放上来,先把环境的部署方式整理出来。

部署过程

  1. 先将环境的python升级为2.7

  2. 保证有pip

  3. 安装了nginx并配置

    vim /Data/apps/nginx/conf/include/sqlaudit.conf

server {

listen 80; #对外80端口

server_name sqladmin.xxxx.net;

location / {

root /Data/apps/djangoproject/sqlaudit/; #项目目录的位置

include uwsgi_params;

uwsgi_pass 127.0.0.1:9000;

uwsgi_param UWSGI_CHDIR /Data/apps/djangoproject/sqlaudit/;

uwsgi_param UWSGI_SCRIPT sqlaudit_wsgi; #对应的sqlaudit_wsgi.py脚本

access_log /Data/apps/nginx/logs/sqlaudit_access.log;

error_log /Data/apps/nginx/logs/sqlaudit_error.log;

}

location /static/ { #静态文件单独处理一下

alias /Data/apps/djangoproject/sqlaudit/static/;

index index.html;

access_log /Data/apps/nginx/logs/sqlaudit_access.log;

error_log /Data/apps/nginx/logs/sqlaudit_error.log;

}

}

```

4. 安装uwsgi

/usr/local/bin/pip install uwsgi

5. 把相关依赖都装上

yum install redis mysql

yum install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel mysqlclient16-devel mysqlclient16

vim /etc/ld.so.conf.d/mysqlclient18-x86_64.conf

/usr/local/lib/

ldconfig

6. 代码部署

cd /Data/apps/djangoproject/

git clone https://git.coding.net/caseast/SQLaudit.git sqlaudit/

把代码拿下来之后

初始化数据库,然后执行

pip install -r requirement.txt -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com

python manage_prod.py loaddata sqlaudit_init.json

7. supervisord启动celery相关

pip install supervisor -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com

echo_supervisord_conf > /etc/supervisord.conf

vim /etc/supervisord.conf

```python

[program:celery]

command=/usr/bin/python manage_prod.py celery worker -c 4

directory=/Data/apps/djangoproject/sqlaudit

stdout_logfile=/Data/apps/nginx/logs/celery.log

autostart=true

autorestart=true

redirect_stderr=true

stopsignal=QUIT

user=nginx

[program:flow]

command=/usr/bin/python manage_prod.py celery flower

directory=/Data/apps/djangoproject/sqlaudit

stdout_logfile=/Data/apps/nginx/logs/flow.log

autostart=true

autorestart=true

redirect_stderr=true

stopsignal=QUIT

user=nginx

```

8. 配置uwsgi,uwsgi就类似tomcat,是真正解析python的容器

cd /Data/apps/djangoproject/sqlaudit && cp uwsgi /etc/init.d/ #先把启停脚本弄好

```bash
#!/bin/bash
# uwsgi script
# it is v.0.0.1 version.
# chkconfig: - 89 19
# description: uwsgi script
# processname: uwsgi
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH uwsgi_config=/Data/apps/djangoproject/sqlaudit/sqlaudit.ini
#uwsgi_pid=`ps -eo pid,comm|grep uwsgi|grep -v 'init.d'|grep -v grep|sed -n 1p|awk '{print $1}'`
uwsgi_pid=`ps -ef|grep uwsgi|grep -v 'init.d'|grep -v grep|sed -n 1p|awk '{print $2}'`
uwsgi_PID=/Data/apps/nginx/logs/uwsgi.pid
uwsgi=/usr/bin/uwsgi
RETVAL=0
prog="uwsgi"
# Source function library.
. /etc/rc.d/init.d/functions if [ $(id -u) != "0" ]; then
printf "Error: You must be root to run this script!\n"
exit 1
fi # Start nginx daemons functions.
start() {
uwsgi_pn=`ps aux|grep -v "grep"|grep -c "uwsgi"`
if [ $uwsgi_pn -gt 4 ];then
action "uwsgi is running!" /bin/true
exit 0
fi
daemon $uwsgi --ini ${uwsgi_config}
action "uwsgi start ..." /bin/true
}
# Stop nginx daemons functions.
stop() {
uwsgi_pn=`ps aux|grep -v "grep"|grep -c "uwsgi"`
if [ $uwsgi_pn -gt 4 ]
then
kill -9 $uwsgi_pid
RETVAL=$?
action "uwsgi stopping ..." /bin/true
else
action "uwsgi not running!" /bin/false
fi
} # See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
sleep 2
start;;
*)
echo $"Usage: $prog {start|stop|restart}"
exit 1
esac
exit $RETVAL ```

下边附上uwsgi的配置文件sqlaudit.ini,需要和nginx的配置对应

/Data/apps/djangoproject/sqlaudit/sqlaudit.ini

```python
[uwsgi] # Django-related settings
# the base directory (full path)
chdir = /Data/apps/djangoproject/sqlaudit/
# Django's wsgi file
module = sqlaudit_wsgi #这个需要和nginx配置里的uwsgi_param UWSGI_SCRIPT对应
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 8
# the socket (use the full path to be safe
socket = 127.0.0.1:9000 #这个也和nginx配置对应
# clear environment on exit
vacuum = true
daemonize=/Data/apps/nginx/logs/sqlaudit_uwsgi.log ```
  1. 最后启动一切服务

    /Data/apps/redis/bin/redis-server &

    /Data/apps/mysql/bin/mysqld_safe &

    /usr/local/bin/supervisord

    /etc/init.d/uwsgi start

    /Data/apps/nginx/sbin/nginx
  2. 备注

    这个非部署问题了,就是把django项目部署到nginx上之后,会找不到admin相关的static文件

    所以在代码里执行这个,把admin相关的static文件搞到项目的static中

    python manage.py collectstatic

nginx+uwsgi+django+celery+supervisord环境部署的更多相关文章

  1. Nginx + uwsgi + django + websocket(dwebsocket)环境部署

    1.安装nginx(/export/servers/nginx/) 保证/export/servers/nginx/是nginx的安装目录 /export/servers/nginx/conf/dom ...

  2. Nginx+uwsgi+Django 的web应用环境部署-完整记录

    Python作为当前最火爆最热门,也是最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Django.Tornado.Flask.Twisted.Bottle和Web.py等 ...

  3. 【金】nginx+uwsgi+django+python 应用架构部署

    网上有很多这种配置,但就是没一个靠普的,费了好大的力气才完成架构部署.顺便记录一下. 一.部署前的说明 先安装好 python,django,uwsgi,nginx软件后.后配置运行的软件是分先后的. ...

  4. nginx+uwsgi+django 部署原理

    python开发群里经常有同学问 nginx+uwsgi+django 着了教程部署,但是不知道他们之间怎么样的关系,于是我就google到了一个让我看起来很认同的图,大家看了也比较认同,于是就分享出 ...

  5. nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    nginx+uWSGI+django+virtualenv+supervisor发布web服务器   导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以 ...

  6. 12,nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的框架 ...

  7. nginx+uWSGI+django+virtualenv+supervisor发布web服务器流程

    导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求)基于wsgi运行的框架有 ...

  8. 08 nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    一.为什么要用nginx,uwsgi? 1 首先nginx 是对外的服务接口,外部浏览器通过url访问nginx, 2nginx 接收到浏览器发送过来的http请求,将包进行解析,分析url,如果是静 ...

  9. 五步教你实现使用Nginx+uWSGI+Django方法部署Django程序

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.ng ...

随机推荐

  1. C#/net 使用Protocol Buffers入门

    Protocol buffers 是一个由谷歌开发的开源的编码机制用于将结构化的数据序列化或者反序列化,被设计成语言以及平台中立,protobuff比xml更简单比json还要紧凑一些,网上有一些关于 ...

  2. 设计模式之美:Visitor(访问者)

    索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Visitor 模式结构样式代码. 实现方式(二):使用 Visitor 模式解构设计. 实现方式(三):使用 Acyclic ...

  3. 细说angular Form addControl方法

    在本篇博文中,我们将接触angular的验证.angular的验证是由form 指令和ngModel协调完成的.今天博主在这里想要说的是在验证在的一种特殊情况,当验证控件没有没有name属性这是不会被 ...

  4. Visual Studio 2012 Visual C++ 入门

    改进的C++11标准的支持 标准模板库 为STL添加了新的库文件:<atomic>.<chrono>.<condition_variable>.<filesy ...

  5. zendframework 2 链接数据库

    相对于zf1,来说,zf2让我们对于数据库这方面的操作我的个人感觉是对于字段起别名简单了,但是对数据库的操作虽然配置写好的就基本不需要动了,但是还是比1的配置要繁琐, 还是那句话,大家可以去看看源码. ...

  6. 青蛙的约会 java版

    参考http://blog.csdn.net/polossk/article/details/9799735 package acm; public class FrogDate { public s ...

  7. MVVM架构~knockoutjs实现简单的购物车

    返回目录 概念相关 购物车相信大家都用过,很方便,可以将多个商品添加到购物车,并且可以修改购买商品的数据,当然为了用户体验好,在修改数据时,你的价格也会出现变化的,这使用JS可以实现,但我认为,代码量 ...

  8. MVVM架构~knockoutjs系列之扩展ajax验证~验证输入数据是否与后台数据相等

    返回目录 在看这篇文章之前,你有必要先看我之前的文章,之前文章是将一个方法以参数的形式传给KO,然后返回一个真假值,去做验证,这类似于面向对象语言里的委托,在JS里我们叫它回调方法,本篇文章与前一文章 ...

  9. Atitit图像识别的常用特征大总结attilax大总结

    Atitit图像识别的常用特征大总结attilax大总结 1.1. 常用的图像特征有颜色特征.纹理特征.形状特征.空间关系特征. 1 1.2. HOG特征:方向梯度直方图(Histogram of O ...

  10. c#设计模式-命令模式

    一. 命令(Command)模式 命令(Command)模式属于对象的行为模式[GOF95].命令模式又称为行动(Action)模式或交易(Transaction)模式.命令模式把一个请求或者操作封装 ...