欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

nginx,uwsgi,web.py,memcached环境搭建

程序员文章站 2022-03-27 19:15:34
...

从最干净的环境安装 ? vim tmux mysql nginx uwsgi pylibmc 源里有的并且版本较新的直接yum装就可以了. yum里比较有用的指令包括 yum install 软件名 安装软件 yum search 名字 查询有关的软件信息 yum info 名字 查寻软件源的相关信息 yum install vim ?文

从最干净的环境安装 ?

  • vim
  • tmux
  • mysql
  • nginx
  • uwsgi
  • pylibmc

源里有的并且版本较新的直接yum装就可以了.

yum里比较有用的指令包括

  • yum install 软件名 安装软件
  • yum search 名字 查询有关的软件信息
  • yum info 名字 查寻软件源的相关信息
  1. yum install vim ?文本编辑器
  2. yum install python-setuptools ?python库安装工具 easy_install
  3. yum install mysql-server mysql ?mysql
  4. yum install make gcc gcc-c++ ?编译软件时用到的安装工具
  5. yum install wget ?下载工具

基本软件安装完成,现在编一个最简单的软件练手.

安装 tmux

下载源码 http://tmux.sourceforge.net/

解压 tar -xvf tmux*.tar.gz

切换到tmux源码目录 cd tmux*

检测安装环境,生成make文件 ?./configure

最后一行报错:

configure: error: "libevent not found"

可以google一下这个错误也会有解决方法,不过感觉提示可以知道是libevent这个库没有安装

yum search可以查看这些库的相关信息

yum search libevent

Matched: libevent
libevent-devel.i686 : Header files, libraries and development documentation for: libevent
libevent.i686 : Abstract asynchronous event notification library

估计libevent-devellibevent都有用,都装一下.

yum install libevent libevent-devel

./configure

这次提示的是

configure: error: “curses not found”

同上yum search然后yum install

./configure, 没有提示error了,并且提示生成了make文件.

make
make install

练手完毕,开始安装web环境需要的软件.

编译安装nginx,源里的nginx是7.X的,但是8.0的nginx才支持uwsgi,所以要自己编译.

先看一下这个网页里有nginx的依赖库,直接yum装一下就好了

yum -y install gcc gcc-c++ glibc glibc-devel glib2 glib2-devel autoconf libmcrypt libmcrypt-devel mhash mhash-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel libidn libidn-devel zlib zlib-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel mysql mysql-server mysql-devel

基本上该装的库都装了, 然后去官网下载稳定版本的库的源码.

然后

./configure
make
make install

如果需要自己定制编译参数的话可以看下面的文章:

  • 1
  • 2

这两篇文章讲了nginx的编译参数,和如何把nginx添加到系统的服务里,使用service启动和停止的方法,值得注意的是如果使用了自定义编译参数,需要更改nginx启动文件的相应的路径.

我的编译参数如下:

nginx: configure arguments: –prefix=/usr/sbin –sbin-path=/usr/sbin/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –pid-path=/var/run/nginx.pid –lock-path=/var/lock/subsys/nginx –http-log-path=/var/log/nginx/access.log

安装py库

easy_install web.py   不用说了  
easy_install bpython   一个增强型的python命令行工具,代码提示很不错  

安装uwsgi

uwsgi 下载 http://projects.unbit.it/uwsgi/wiki/WikiStart

make 出错, 安装python-devel

make 出错, python setup.py install

安装pylibmc

下面文章讲解了pylibmc的安装过程

link

libevent直接yum安装就可以了,记得安装libevent-devel,不用编译安装

libmemcached 5.0,需要如下编译参数,如果没有据说话报错,另外最好更改一下安装路径,因为so库默认会安装在/usr/local/lib/里,但是so库的查找路径默认没有这个文件夹,当然可以更改一下so的查找路径,有兴趣可以google一下,为了简单,这里直接改安装路径了

./configure –prefix /usr –disable-64bit CFLAGS=”-O3 -march=i686″ –prefix=/usr  

下载pylibmc的源码,是上面那个c库的py封装,据说可用性比较强 pylibmc 1.2.0

这个库直接运行python setup.py install就可以了,如果没有出错就安装完成了

安装好以下,在源码路径下有runtest.py,可以测试一下是否安装成功了, 但是测试的时候要确保memcached处于运行状态.

如果提示一下错误按一下nose就可以了

Traceback (most recent call last):  
File “./runtests.py”, line 15, in   
import nose  
ImportError: No module named nose  

最后按一下py的mysql库easy_install MySQL-python

之后就是mysql添加用户的配置了 mysql

之后是配置的工作

首先找到nginx的配置文件nginx.conf, 如果是编译安装的话,同级目录下会有一个default的拷贝,所以放心改就是了.

去掉里面的server块,然后include自己的server配置文件. 如我的配置文件/home/user/conf/nginx.conf 就把

server{
listen 80;
……………………
}

替换为

include   /home/user/conf/nginx.conf;

自己的server配置文件内容如下:

server{
   listen 80;
   server_name localhost;
   root /home/hao/code/webpy/;
   location / {
       index index.html;
       uwsgi_pass 127.0.0.1:9090;
       include uwsgi_params;
   }
}

uwsgi程序监听在9090端口, index.py文件内容如下:

import web
urls = (
‘/(.*)’, ‘hello’
)
app = web.application(urls, globals())
class hello:
def GET(self, name):
    if not name:
        name = ‘World’
    return ‘Hello, ‘ + name + ‘!’
application = app.wsgifunc()

注意不是app.run()

uwsgi的启动参数可以去官网看,http://projects.unbit.it/uwsgi/wiki/Doc

下面附带自己的启停脚本 start.sh要记得chmode +x start.sh,给予执行权限.

#!/bin/bash
rm log/*.log
uwsgi -s :9090 -w index -p 4 -t 10 -M –limit-as 128  -d log/uwsgi.log –harakiri-verbose  –listen 10 #–disable-logging
memcached -d -vv > log/memcached.11211.log 2>&1
memcached -d -p 11212 -u 11212 -vv > log/memcached.11212.log 2>&1

删除log文件,uwsgi启动监听在9090端口,并且起两个memcached服务器

stop.sh 要记得chmode +x stop.sh,给予执行权限

#!/bin/bash
killall -9 uwsgi
killall -9 memcached

很粗暴,杀死所有相关进程

restart.sh 同上

#!/bin/bash
./stop.sh
./start.sh

就是掉一下停,再调一下启..