CentOS+nginx+uwsgi+Python 多站点环境搭建
来源:互联网 发布:国外大数据产业园 编辑:程序博客网 时间:2024/05/22 15:09
环境:
CentOS X64 6.4
nginx 1.0.9
Python 2.7.5
参考:
http://www.cnblogs.com/xiongpq/p/3381069.html
http://www.nowamagic.net/academy/detail/1330334
注意:当django urls配置文件改变时,需要重启uwsgi服务//这步留到最后关注吧
killall -9 uwsgiservice uwsgi9090 start
正文:
一:安装需要的类库及Python2.7.5
安装必要的开发包
yum groupinstall "Development tools"yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
CentOS 自带Python2.6.6,但我们可以再安装Python2.7.5:
cd ~wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2tar xvf Python-2.7.5.tar.bz2cd Python-2.7.5./configure --prefix=/usr/localmake && make altinstall
安装完毕后,可是使用”python2.7”命令进入python2.7的环境。
二:安装Python包管理
easy_install包 https://pypi.python.org/pypi/distribute
方便安装Python的开发包
cd ~wget https://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gztar xf distribute-0.6.49.tar.gzcd distribute-0.6.49python2.7 setup.py installeasy_install --version
红色部分必须是“python2.7”,否则将安装到默认的2.6环境内。
pip包 https://pypi.python.org/pypi/pip
安装pip的好处是可以pip list、pip uninstall 管理Python包, easy_install没有这个功能,只有uninstall
easy_install pippip --version
三:安装uwsgi
uwsgi:https://pypi.python.org/pypi/uWSGIuwsgi参数详解:http://uwsgi-docs.readthedocs.org/en/latest/Options.htmlpip install uwsgiuwsgi --version
测试uwsgi是否正常:
新建test.py文件,内容如下:
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return "Hello World"
然后在终端运行:
uwsgi --http :8001 --wsgi-file test.py
在浏览器内输入:http://127.0.0.1:8001,看是否有“Hello World”输出,若没有输出,请检查你的安装过程。
四:安装django
pip install django
测试django是否正常,运行:
django-admin.py startproject web_shopcd web_shoppython2.7 manage.py runserver 0.0.0.0:8002
在浏览器内输入:http://127.0.0.1:8002,检查django是否运行正常。
五:安装nginx
cd ~wget http://nginx.org/download/nginx-1.5.6.tar.gztar xf nginx-1.5.6.tar.gzcd nginx-1.5.6./configure --prefix=/usr/local/nginx-1.5.6 \--with-http_stub_status_module \--with-http_gzip_static_modulemake && make install
六:配置uwsgi
uwsgi支持ini、xml等多种配置方式,但个人感觉ini更方便:
在/ect/目录下新建uwsgi9090.ini,添加如下配置:
[uwsgi]socket = 127.0.0.1:9090master = true //主进程vhost = true //多站模式no-stie = true //多站模式时不设置入口模块和文件workers = 2 //子进程数reload-mercy = 10 vacuum = true //退出、重启时清理文件max-requests = 1000 limit-as = 512buffer-sizi = 30000pidfile = /var/run/uwsgi9090.pid //pid文件,用于下面的脚本启动、停止该进程daemonize = /var/log/uwsgi7000.log
设置uwsgi开机启动,在/ect/init.d/目录下新建uwsgi9090文件,内容如下:
#! /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://lnmp.orgPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binDESC="uwsgi daemon"NAME=uwsgi9090DAEMON=/usr/local/bin/uwsgiCONFIGFILE=/etc/$NAME.iniPIDFILE=/var/run/$NAME.pidSCRIPTNAME=/etc/init.d/$NAMEset -e[ -x "$DAEMON" ] || exit 0do_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 ;;esacexit 0uwsgi9090
然后在终端执行:
– 添加服务
chkconfig --add uwsgi9090
– 设置开机启动
chkconfig uwsgi9090 on
七:设置nginx
找到nginx的安装目录,打开conf/nginx.conf文件,修改server配置
server { listen 80; server_name localhost; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9090; //必须和uwsgi中的设置一致 uwsgi_param UWSGI_SCRIPT web_shop.wsgi; //入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录 uwsgi_param UWSGI_CHDIR /data/app/interface/web_shop; //项目根目录 index index.html index.htm; client_max_body_size 35m; } }
设置nginx开机启动,在/ect/init.d/目录下新建nginx文件,内容如下:
#!/bin/sh## nginx - this script starts and stops the nginx daemon## chkconfig: - 85 15# description: Nginx is an HTTP(S) server, HTTP(S) reverse \# proxy and IMAP/POP3 proxy server# processname: nginx# config: /usr/local/nginx/conf/nginx.conf# pidfile: /var/run/nginx.pid# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/network# Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0nginx="/opt/nginx-1.5.6/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/opt/nginx-1.5.6/conf/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginx start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval}stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval}restart() { configtest || return $? stop sleep 1 start}reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo}force_reload() { restart}configtest() { $nginx -t -c $NGINX_CONF_FILE}rh_status() { status $prog}rh_status_q() { rh_status >/dev/null 2>&1}case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2esac
然后在终端执行:
– 添加服务
chkconfig --add nginx
– 设置开机启动
chkconfig nginx on
八:测试
OK,一切配置完毕,在终端运行
service uwsgi9090 startservice nginx start
在浏览器输入:http://127.0.0.1,恭喜你可以看到django的“It work”了~
九:多站配置
我采用运行多个uwsgi服务的方法来实现多个站点。
重复第六步,创建uwsgi9091.ini,并相应修改文件中的
socket = 127.0.0.1:9091pidfile = /var/run/uwsgi9091.piddaemonize = /website/uwsgi9091.log
并创建服务uwsgi9091,设置开机启动。
然后修改nginx的配置文件为:
nginx
然后我们就可以通过http://127.0.0.1:1300来访问新的网站了。
十:其他配置
防火墙设置
CentOS默认关闭外部对80、3306等端口的访问,所以要在其他计算机访问这台服务器,就必须修改防火墙配置,打开/etc/sysconfig/iptables
在“-A INPUT –m state –state NEW –m tcp –p –dport 22 –j ACCEPT”,下添加:
-A INPUT -m state --state NEW -m tcp -p -dport 80 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p -dport 3306 -j ACCEPT
然后保存,并关闭该文件,在终端内运行下面的命令,刷新防火墙配置:
service iptables restart安装Mysqldbyum -y install mysql-develeasy_install-2.7 MySQL-python
注意红色部分,easy_install-2.7,否则它将默认安装到Python2.6环境内。
十一、关闭 uWSGI:
killall -9 uwsgikillall -s HUP /var/www/uwsgi killall -s HUP /usr/local/bin/uwsgi
- CentOS+nginx+uwsgi+Python 多站点环境搭建
- CentOS+nginx+uwsgi+Python 多站点环境搭建
- CentOS+nginx+uwsgi+Python 多站点环境搭建
- 分布式(2):CentOS+nginx+uwsgi+Python 多站点环境搭建
- CentOS+nginx+uwsgi+Python 多站点环境搭建
- CentOS+Nginx+uWSGI+Python多站点环境搭建
- centos+nginx+uwsgi+virtualenv+flask 多站点环境搭建
- CentOS6.5_64下 nginx+uwsgi+Python +多站点环境搭建
- centos 7 nginx+uwsgi+flask 环境搭建
- CentOS 7 下使用Uwsgi及nginx搭建Django站点
- centos下配置nginx+uwsgi部署多站点python以及静态文件的加载
- centos 部署 Nginx + uwsgi + django +mysql 多站点
- centos 6.4下nginx+uwsgi+flask的运行环境搭建
- linux搭建Nginx+uWSGI环境
- 搭建nginx+uwsgi+django环境
- Ubuntu下搭建Nginx+Uwsgi+Python+Mysql开发环境
- Centos7.2下nginx+uwsgi+python/Django搭建生产环境
- centos + python + uwsgi 搭建网站
- ubuntu下su命令认证失败的解决方法
- C语言中常用计时方法总结
- 专注于javaEE
- Ubuntu中安装配置hadoop 2.6.0并编译运行WordCount
- 使用 Xcode SouceControl 进行代码的版本管理
- CentOS+nginx+uwsgi+Python 多站点环境搭建
- Apache DBUtils使用总结
- 所有顶点之间的最短路径算法:Floyd算法。
- rabbitmq环境搭建--安装
- RFID第三次作业题7—1
- 2013年大一上学期的C++大作业 学生信息管理系统
- 被召者 RC: E_NOINTERFACE (0x80004002) 无法运行virtualBox的完善解决
- memcached简介及java使用方法
- LeetCode OJ Combine Two Tables