设为首页 收藏本站
查看: 847|回复: 0

[经验分享] Nginx+uWSGI+DJango+Python+ Mysql 搭建可靠的python web服务器

[复制链接]

尚未签到

发表于 2018-11-13 12:45:57 | 显示全部楼层 |阅读模式
  本文出自:http://www.mpyun.com/
  一、安装所需工具
  yum -y install gcc gcc-c++ rpm-build mysql* libtool-ltdl* libtool automake autoconf libtool make setuptool
  二、编译安装python2.7.5
  1. 下载python2.7.5,保存到 /data/qtongmon/software
  http://www.python.org/ftp/python/
  2. 解压文件
  tar xvf Python-2.7.5.tar.bz2
  3. 创建安装目录
  mkdir /usr/local/python27
  4. 安装python
  ./configure --prefix=/usr/local/python27 --enable-shared
  make
  make install
  5. 修改老版本的ln指向(注意:这里修改后,可能会影响yum的使用)
  mv /usr/bin/python /usr/bin/python2.4.3
  ln -s /usr/local/python27/bin/python /usr/bin/python
  6.yum是使用python写的,升级新版本的python后会导致yum不可用,如下为运行yum时的错误提示:
  There was a problem importing one of the Python modules
  required to run yum. The error leading to this problem was:
  No module named yum
  解决方法:
  查找yum文件,并编辑此py文件
  [root@TC-Boss ~]# which yum
  /usr/bin/yum
  [root@TC-Boss ~]# vi /usr/bin/yum
  将
  #!/usr/bin/python
  改为:
  whereis python出来的结果(老版本的python)
  #!/usr/bin/python2.6
  然后保存OK.
  二、安装uWSGI
  下载uWSGI的最新版
  wget http://projects.unbit.it/downloads/
  因为我最后采用xml配置django app 的部署,所以编译 uWSGI 时候需要把libxml编译进去
  yum -y install libxml2-devel
  剩下的就简单了
  tar zxvf uwsgi-1.9.17.tar.gz
  cd uwsgi-1.9.17
  make
  cp uwsgi /usr/sbin/uwsgi
  如果遇到错误:python: error while loading shared libraries: libpython2.7.so.1.0:
  cannot open shared object file: No such file
  按如下方式解决:
  vim /etc/ld.so.conf.d/python2.7.conf
  加入以下内容:/usr/local/python27/lib (实际的python安装路径下的lib目录)
  保存退出后运行:
  ldconfig
  即可
  至此 uWSGI 就算是安装完成了,下一步安装 Nginx
  三、Nginx 安装
  参考另一篇文章:http://galean.blog.51cto.com/7702012/1268352
  注意编译的时候要加上参数:--with-cc-opt='-O3' --with-cpu-opt=opteron
  [root@htuidc nginx-1.4.2]# ./configure --with-http_stub_status_module --prefix=/usr/local/nginx --with-cc-opt='-O3' --with-cpu-opt=opteron
  四、安装MySql-python
  wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz/download
  tar zxvf MySQL-python-1.2.3.tar.gz
  cd MySQL-python-1.2.3
  python setup.py install
  ImportError: No module named setuptools 解决方案 :
  wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
  tar zxvf setuptools-0.6c11.tar.gz
  cd setuptools-0.6c11
  python setup.py build
  python setup.py install
  /usr/bin/ld: cannot find -lpython2.7错误,解决方案 :
  cd /usr/lib
  ln -s /usr/local/python27/lib/libpython2.7.so libpython2.7.so
  ll -a|grep python
  lrwxrwxrwx. 1 root root 39 Oct 1 16:39 libpython2.7.so -> /usr/local/python27/lib/libpython2.7.so
  drwxr-xr-x. 3 root root 4096 May 3 15:15 python2.6
  出错:error: command 'gcc' failed with exit status 1
  处理方法:
  yum -y install mysql-devel
  安装完成,到你的python安装目录下的site-packages目录里检查以下文件是否存在,如果存在即代表安装成功了
  Linux:MySQL_python-1.2.3c1-py2.6-linux-i686.egg
  测试方法
  1)运行命令python进入python运行环境
  2)输入以下python代码进行测试
  import MySQLdb
  test=MySQLdb.connect(db='mydb',host='localhost',user='root',passwd='p')
  cur = test.cursor()
  cur.execute('show databases;')
  for data in cur.fetchall():
  print data
  五、安装Django
  wget https://www.djangoproject.com/m/releases/1.5/Django-1.5.4.tar.gz
  tar xzvf Django-1.5.4.tar.gz
  cd Django-1.5.4
  python setup.py install
  测试Django安装
  终端中输入 python,进入python交互模式,输入如下:
  >>>import django
  django.VERSION
  正常情况会显示版本号码。
  六、nginx配置
  server {
  listen  80; ## listen for ipv4; this line is default and implied
  #listen  [::]:80 default ipv6only=on; ## listen for ipv6
  server_name blog.hysia.com;
  access_log /var/log/nginx/blog.hysia.com-access.log ;
  error_log /var/log/nginx/blog.hysia.com-error.log ;
  location / {
  uwsgi_pass 127.0.0.1:8630;
  include uwsgi_params;
  }
  }
  七、配置Django app
  配置很简单,几乎不用改动你app的任何文件。
  首先在你的app目录创建个wsgi.py 文件,内容如下:
  import os,sys
  if not os.path.dirname(__file__) in sys.path[:1]:
  sys.path.insert(0, os.path.dirname(__file__))
  os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
  from django.core.handlers.wsgi import WSGIHandler
  application = WSGIHandler()
  然后在app目录创建个django.xml文件,作为uWSGI运行的配置文件,内容如下:
  
  127.0.0.1:8630
  /data/web/vpssite
  ..
  wsgi
  
  最后一步,运行 uWSGI 就行了,如下:
  uwsgi -x /data/web/vpssite/django.xml
  这样你的Django app 就用 uWSGI hold住了。django.xml的配置远不止这些比如log文件,内存限制等等,具体的可以参考 http://projects.unbit.it/uwsgi/wiki/Example


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-634603-1-1.html 上篇帖子: 【编译打包】nginx-1.4.7-1.pagespeed_1.7.30.4.el6.src.rpm 下篇帖子: CentOS6.4安装配置nginx+pcre+php/fpm-galean
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表