欢迎登陆真网站,您的到来是我们的荣幸。 登陆 注册 忘记密码? ☆设为首页 △加入收藏
欢迎加入真幸福QQ群
电脑知识: 基础知识 网络技术 操作系统 办公软件 电脑维修 电脑安全 windows7 windows8 windows10 服务器教程 平板电脑 视频播放教程 网络应用 互联网 工具软件 浏览器教程 QQ技巧 输入法教程 影视制作 YY教程 wps教程 word教程 Excel教程 PowerPoint
云南西双版纳特产小花糯玉米真空包装


ubuntu安装虚拟磁带库mhvtl的方法
结构化数据和非结构化数据是什么意思?
增强IIS安全性的五个简单措施
linux系统中的批量删除文件与空文件删除的命令介绍
win2003系统播放视频时画面差没有声音的解决方法
Linux系统如何批量压缩图片尺寸大小
activemq服务无法正常启动
系统安装提示Units specified don’t exist SHSUCDX can’t in
Server 2008 R2搭建域环境中遇到的一个小错误
服务器上创建对象KdSvrMgr.clsAct失败
CentOS+nginx+uwsgi+Python 多站点环境搭建
【 来源:网络 】【 点击:1 】 【 发布时间:2017_03_03 08:59:59 】

   环境:

  CentOS X64 6.4

  nginx 1.5.6

  Python 2.7.5

  一:安装需要的类库及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.bz2

  tar xvf Python-2.7.5.tar.bz2

  cd Python-2.7.5

  ./configure --prefix=/usr/local

  make && 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.gz

  tar xf distribute-0.6.49.tar.gz

  cd distribute-0.6.49

  python2.7 setup.py install

  easy_install --version

  红色部分必须是“python2.7”,否则将安装到默认的2.6环境内。

  pip包 https://pypi.python.org/pypi/pip

  安装pip的好处是可以pip list、pip uninstall 管理Python包, easy_install没有这个功能,只有uninstall

  easy_install pip

  pip --version

  三:安装uwsgi

  uwsgi:https://pypi.python.org/pypi/uWSGI

  uwsgi参数详解:http://uwsgi-docs.readthedocs.org/en/latest/Options.html

  pip install uwsgi

  uwsgi --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 demosite

  cd demosite

  python2.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.gz

  tar xf nginx-1.5.6.tar.gz

  cd nginx-1.5.6

  ./configure --prefix=/usr/local/nginx-1.5.6

  --with-http_stub_status_module

  --with-http_gzip_static_module

  make && make install

  六:配置uwsgi

  uwsgi支持ini、xml等多种配置方式,但个人感觉ini更方便:

  在/ect/目录下新建uwsgi9090.ini,添加如下配置:

  [uwsgi]

  socket = 127.0.0.1:9090

  master = true //主进程

  vhost = true //多站模式

  no-stie = true //多站模式时不设置入口模块和文件

  workers = 2 //子进程数

  reload-mercy = 10

  vacuum = true //退出、重启时清理文件

  max-requests = 1000

  limit-as = 512

  buffer-sizi = 30000

  pidfile = /var/run/uwsgi9090.pid //pid文件,用于下面的脚本启动、停止该进程

  daemonize = /website/uwsgi9090.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.org

  PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

  DESC="uwsgi daemon"

  NAME=uwsgi9090

  DAEMON=/usr/local/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

  然后在终端执行:

  -- 添加服务

  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 demosite.wsgi; //入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录

  uwsgi_param UWSGI_CHDIR /demosite; //项目根目录

  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 0

  nginx="/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/nginx

  lockfile=/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 2

  esac

  然后在终端执行:

  -- 添加服务

  chkconfig --add nginx

  -- 设置开机启动

  chkconfig nginx on

  八:测试

  OK,一切配置完毕,在终端运行

  service uwsgi9090 start

  service nginx start

  在浏览器输入:http://127.0.0.1,恭喜你可以看到django的“It work”了~

  九:其他配置

  防火墙设置

  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

  安装Mysqldb

  yum -y install mysql-devel

  easy_install-2.7 MySQL-python

  注意红色部分,easy_install-2.7,否则它将默认安装到Python2.6环境内。

本网站由川南居提供技术支持,fkzxf版权所有 浙ICP备12031891号
淳安分站 淳安分站