centos 部署 Nginx + uwsgi + django +mysql 多站点
2013-09-14 22:08
746 查看
1.通常centos 都自带有python ,centos5默认的版本是2.43 建议安装2.7 版本,安装 ngixn(略)
2.安装Python工具
3.安装pip
之所以安装 pip ,我们后面可以用pip 命令直接安装 uwsgi 和 django
4.安装uwsgi
pip install uwsgi
或者你可以去官网下载自己解压编译安装
5.安装virtualenv (主要用于多站点创建虚拟环境)
6.设置python 虚拟环境变量
会看到提示符前面多了一个(mywebsite)。现在运行python,可以看到sys.path已经更改为/srv/vpython/mywebsite目录下的各个包。
这个目录下的是供该站点使用的虚拟包,换句话说我们再增加新站点的时候也要创建属于它的虚拟包 不能共用一份哦
7.部署django
执行完毕后会在/srv/www/下面生成website目录 我们会发现在website 目录下面还有一个website目录。我们无需理会
在/srv/www/website/下创建 uwsgi.py 代码如下:
8.修改默认配置或者在conf.d目录下添加mywebsite.conf
添加代码如下:
注意上面标红的地方是我们在在/srv/www/website/下创建 uwsgi.py 的文件名 不用带.py
9.创建 uwsgi 的配置文件 可支持xml yaml ini等格式 我习惯用ini,将其放在etc目录下,当然你也可以放到其他地方
vim /etc/uwsgi.ini
添加代码如下:
注意我使用的端口是3031 因此我们可以看nginx 配置文件里的端口也是3031,还有注意有防火墙的话放行该端口,
装完需要的包后,用deactivate命令退出虚拟环境。
10.创建 uwsgi的服务脚本,在lnmp nginx脚本上直接改的,支持stop start reload
vim /etc/ini.d/uwsgi
注意 上面红色部分 安装 方式不一样可能存放的路径不一样,可以执行 whereis uwsgi 就能知道 uwsgi 的bin 路径
添加执行权限
chmod +x uwsgi
11 安装 mysql-server mysql-devel 同时还要安装
mysql-python
12 .启动 service uwsgi start service nginx start service mysqld start
13 .完毕
注意:如果要添加一个站点 我们要重复 创建python 虚拟环境 然后再安装相应的web框架 如 web.py 等
添加nginx 配置文件 特别注意 uwsgi_param UWSGI_PYHOME 要填写正确哦。
2.安装Python工具
yum install python-devel libxml2 libxml2-devel python-setuptools zlib-devel wget openssl-devel pcre pcre-devel sudo gcc make autoconf automake
3.安装pip
wget http://pypi.python.org/packages/source/p/pip/pip-1.0.2.tar.gz --no-check-certificate tar xvfz pip-1.0.2.tar.gz cd pip-1.0.2 python setup.py install
之所以安装 pip ,我们后面可以用pip 命令直接安装 uwsgi 和 django
4.安装uwsgi
pip install uwsgi
或者你可以去官网下载自己解压编译安装
5.安装virtualenv (主要用于多站点创建虚拟环境)
pip install virtualenv
6.设置python 虚拟环境变量
mkdir /srv/vpython cd /srv/vpython virtualenv --no-site-packages mywebsite cd /srv/vpython/mywebsite source bin/activate
会看到提示符前面多了一个(mywebsite)。现在运行python,可以看到sys.path已经更改为/srv/vpython/mywebsite目录下的各个包。
这个目录下的是供该站点使用的虚拟包,换句话说我们再增加新站点的时候也要创建属于它的虚拟包 不能共用一份哦
7.部署django
cd /srv/www/ django-admin.py startproject mywebsite
执行完毕后会在/srv/www/下面生成website目录 我们会发现在website 目录下面还有一个website目录。我们无需理会
在/srv/www/website/下创建 uwsgi.py 代码如下:
import sys import os sys.path.append(os.path.abspath(os.path.dirname(__file__))) sys.path.append('/srv/www') os.environ['DJANGO_SETTINGS_MODULE'] = 'mywebsite.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
8.修改默认配置或者在conf.d目录下添加mywebsite.conf
vim /etc/nginx/conf.d/mywebsite.conf
添加代码如下:
server { listen 80 ; server_name 127.0.0.1; root /srv/www/mywebsite; index index.html index.htm; access_log /var/log/nginx/access.log ; error_log /var/log/nginx/error.log ; location / { uwsgi_pass 127.0.0.1:3031; include uwsgi_params; uwsgi_param UWSGI_SCRIPT uwsgi; uwsgi_param UWSGI_PYHOME $document_root; uwsgi_param UWSGI_CHDIR $document_root; } }
注意上面标红的地方是我们在在/srv/www/website/下创建 uwsgi.py 的文件名 不用带.py
9.创建 uwsgi 的配置文件 可支持xml yaml ini等格式 我习惯用ini,将其放在etc目录下,当然你也可以放到其他地方
vim /etc/uwsgi.ini
添加代码如下:
[uwsgi] socket=127.0.0.1:3031 master=true vhost=true gid=nginx uid=nginx workers=10 max-requests=1000 limit-as=512 pidfile=/var/run/uwsgi.pid daemonize=/var/log/uwsgi.log
注意我使用的端口是3031 因此我们可以看nginx 配置文件里的端口也是3031,还有注意有防火墙的话放行该端口,
装完需要的包后,用deactivate命令退出虚拟环境。
10.创建 uwsgi的服务脚本,在lnmp nginx脚本上直接改的,支持stop start reload
vim /etc/ini.d/uwsgi
#! /bin/sh # chkconfig: 2345 55 25 # Description: Startup script for uwsgi webserver on Debian. Place in /etc/init.d and # run 'update-rc.d -f uwsgi defaults', or use the appropriate command on your # distro. For CentOS/Redhat run: 'chkconfig --add uwsgi' ### BEGIN INIT INFO # Provides: uwsgi # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the uwsgi web server # Description: starts uwsgi using start-stop-daemon ### END INIT INFO # Author: licess # website: http://blog.csdn.net/youngqj PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="uwsgi daemon" NAME=uwsgi DAEMON=/usr/bin/uwsgi CONFIGFILE=/etc/$NAME.ini PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME set -e [ -x "$DAEMON" ] || exit 0 do_start() { $DAEMON $CONFIGFILE || echo -n "uwsgi already running" } do_stop() { $DAEMON --stop $PIDFILE || echo -n "uwsgi not running" rm -f $PIDFILE echo "$DAEMON STOPED." } do_reload() { $DAEMON --reload $PIDFILE || echo -n "uwsgi can't reload" } do_status() { ps aux|grep $DAEMON } case "$1" in status) echo -en "Status $NAME: \n" do_status ;; start) echo -en "Starting $NAME: \n" do_start ;; stop) echo -en "Stopping $NAME: \n" do_stop ;; reload|graceful) echo -en "Reloading $NAME: \n" do_reload ;; *) echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2 exit 3 ;; esac exit 0
注意 上面红色部分 安装 方式不一样可能存放的路径不一样,可以执行 whereis uwsgi 就能知道 uwsgi 的bin 路径
添加执行权限
chmod +x uwsgi
11 安装 mysql-server mysql-devel 同时还要安装
mysql-python
yum install mysql-server yum install mysql-devel pip install mysql-python
12 .启动 service uwsgi start service nginx start service mysqld start
13 .完毕
注意:如果要添加一个站点 我们要重复 创建python 虚拟环境 然后再安装相应的web框架 如 web.py 等
添加nginx 配置文件 特别注意 uwsgi_param UWSGI_PYHOME 要填写正确哦。
相关文章推荐
- django开发个人简易Blog—nginx+uwsgin+django1.6+mysql 部署到CentOS6.5
- CentOS nginx django uwsgi mysql 部署项目
- centos下用uwsgi + nginx + mysql部署django项目
- centos6.5+Django+mysql+nginx+uwsgi
- 阿里云上CentOS6.5部署Django+nginx+uwsgi
- CentOS 7 下使用Uwsgi及nginx搭建Django站点
- django环境安装+站点部署(uwsgi+nginx)
- Nginx + uWSGI 部署Django站点
- CentOS部署Nginx+uWSGI+Django
- CentOS7.2 nginx和uwsgi部署django项目步骤:
- centos7下nginx+uwsgi部署django项目问题记录
- mysql+uwsgi+django+nginx部署记录
- Django+uWSGI+nginx阿里云服务器部署-centos6.8环境
- CentOS nginx+uwsgi+Django 环境部署
- centos7下采用Nginx+uwsgi来部署django
- centos7下采用Nginx+uwsgi来部署django
- centos7 nginx配置httpsCenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx环境部署(二)
- django+nginx+uwsgi部署web站点
- CentOS7部署Django,nginx,uwsgi,redis
- centos6.5腾讯云django环境部署---2、Gunicorn+Django+nginx+mysql部署