设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 22762|回复: 16

[nginx] 初次体验:nginx+php+fastcg+xcache+mysql+openx [复制链接]

LT管理团队

守住每一天

Rank: 9Rank: 9Rank: 9

签到
133
注册时间
2008-5-30
最后登录
2012-2-3
在线时间
619 小时
阅读权限
200
积分
9973
帖子
1252
主题
174
精华
11
UID
31
发表于 2008-6-18 17:46:09 |显示全部楼层
说明:本文是使用nginx 安装广告发布系统openx2.4
其中参考文档:张宴BLOG  linuxtone.org 论坛文档 官方文档

Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。
Nginx官方wiki:http://wiki.codemongers.com/NginxChs
openx官方首页:http://www.openx.org
php-fpm官网:http://php-fpm.anight.org/index.html

本文安装环境:
os:rh8 ,centos5
kernel:2.6

相关软件包:libjpeg libpng freetype libxml2 zlib  (这些可以用RPM包安装,相应的开发包也装上*-devel)
nginx0.6.31   http://sysoev.ru/nginx/nginx-0.6.31.tar.gz
pcre7.7       ftp://ftp.csx.cam.ac.uk/pub/soft ... cre/pcre-7.7.tar.gz
php5.2.6      http://www.php.net/get/php-5.2.6.tar.gz/from/this/mirror
mysql 5.0     我这里用的压缩版,直接解压设置权限使用的
xcache1.2.2   http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
php-fpm       http://php-fpm.anight.org/downlo ... 6-fpm-0.5.8.diff.gz (注意5.0的PHP没有相应的补丁包,php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi)
同时也可以安装zend
openx2.4      http://download.openx.org/openx-2.4.6.tar.gz

nginx+php5+fastcgi+xcache+mysql 这套系统还可以安装discuz+zend

安装过程:
  1. 一、mysql
  2.      shell> /usr/sbin/groupadd mysql
  3.      shell> /usr/sbin/useradd -g mysql mysql
  4.      shell> groupadd mysql
  5.      shell> useradd -g mysql mysql
  6.      shell> cd /usr/local
  7.      shell> gunzip < /PATH/TO/MYSQL-VERSION-OS.tar.gz | tar xvf -
  8.      shell> ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql
  9.      shell> cd mysql
  10.      shell> scripts/mysql_install_db --user=mysql
  11.      shell> chown -R root  .
  12.      shell> chown -R mysql data
  13.      shell> chgrp -R mysql .
  14.      shell> bin/mysqld_safe --user=mysql &
复制代码
我这里也是省事,没有选择编译安装,其实最主要是注意权限问题。mysql启动问题就不大。

二、PHP (本人在RH8上也安装成功,就是相关的依赖比较多)
  1.   shell>tar zxvf php-5.2.6.tar.gz
  2.      shell>gzip -cd php-5.2.6-fpm-0.5.8.diff.gz | patch -d php-5.2.6 -p1
  3.      shell>cd php-5.2.6/
  4.      shell>./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug  --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring  --with-gd --with-openssl
  5.      shell>make && make install
  6.      shell>cp php.ini-dist /usr/local/php/etc/php.ini
复制代码
注:没有php5.0 的php-fpm补丁包

参数可由自己定,php5却需要安装gd,libxml2,fastcgi,fpm,mbstring 对于memcache,xcache 可自行选择
gd又依赖:jpeg,png,zlib,freetype,gd2

在编译过程中有可能会遇到一些错误。
一般解决办法为:升级rpm为最新的,并安装相关的依赖包
下载源码包安装到其它目前,编译时指定相关的目录。

具体的情况可以多看./configure --help


三、xcache 给PHP加速(建议安装)
  1. shell>tar zxvf xcache-1.2.2.tar.gz
  2.     shell>cd xcache-1.2.2/
  3.     shell>/usr/local/php5/bin/phpize
  4.     shell>./configure --with-php-config=/usr/local/php5/bin/php-config --enable-xcache
  5.     shell>make &&make install
复制代码
四、修改php.ini (可下载附件进行查看)
  1. sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-
  2. 20060613/" /usr/local/webserver/php/etc/php.ini
  3. sed -i 's#display_errors = On#display_errors = Off#' /usr/local/webserver/php/etc/php.ini
复制代码
在未尾加入
  1.   [xcache-common]
  2. zend_extension = /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so

  3. [xcache.admin]
  4. xcache.admin.user = "xcache"
  5. ; xcache.admin.pass = md5($yourpasswd)
  6. xcache.admin.pass = "8e6867a5d05144cf4761d6481fc674a8"

  7. [xcache]
  8. xcache.cacher = On
  9. xcache.shm_scheme = "mmap"
  10. xcache.size = 32M
  11. ; cpu number (cat /proc/cpuinfo |grep -c processor)
  12. xcache.count = 2
  13. xcache.slots = 8k
  14. xcache.ttl = 0
  15. xcache.gc_interval = 0
  16. xcache.var_size = 2M
  17. ; cpu number (cat /proc/cpuinfo |grep -c processor)
  18. xcache.var_count = 2
  19. xcache.var_slots = 8K

  20. xcache.var_ttl = 0
  21. xcache.var_maxttl = 0
  22. xcache.var_gc_interval = 300
  23. xcache.readonly_protection = Off
  24. xcache.mmap_path = "/dev/zero"
复制代码
五、修改php-fpm.conf (可下载附件进行查看)
vi /usr/local/php5/etc/php-fpm.conf
用户组及PHP目录及,其它的一些信息可以根据自己的环境和需求来定
参考:

  1. <?xml version="1.0" ?>  <configuration>            All relative paths in this config are relative to php's install prefix            <section name="global_options">                    Pid file                  <value name="pid_file">/usr/local/webserver/php/logs/php-fpm.pid</value>                    Error log file                  <value name="error_log">/usr/local/webserver/php/logs/php-fpm.log</value>                    Log level                  <value name="log_level">notice</value>                    When this amount of php processes exited with SIGSEGV or SIGBUS ...                  <value name="emergency_restart_threshold">10</value>                    ... in a less than this interval of time, a graceful restart will be initiated.                  Useful to work around accidental curruptions in accelerator's shared memory.                  <value name="emergency_restart_interval">1m</value>                    Time limit on waiting child's reaction on signals from master                  <value name="process_control_timeout">5s</value>                    Set to 'no' to debug fpm                  <value name="daemonize">yes</value>            </section>            <workers>                    <section name="pool">                            Name of pool. Used in logs and stats.                          <value name="name">default</value>                            Address to accept fastcgi requests on.                          Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'                          <value name="listen_address">127.0.0.1:9000</value>                            <value name="listen_options">                                    Set listen(2) backlog                                  <value name="backlog">-1</value>                                    Set permissions for unix socket, if one used.                                  In Linux read/write permissions must be set in order to allow connections from web server.                                  Many BSD-derrived systems allow connections regardless of permissions.                                  <value name="owner"></value>                                  <value name="group"></value>                                  <value name="mode">0666</value>                          </value>                            Additional php.ini defines, specific to this pool of workers.                          <value name="php_defines">                                  <value name="sendmail_path">/usr/sbin/sendmail -t -i</value>                                  <value name="display_errors">0</value>                          </value>                            Unix user of processes                          <value name="user">www</value>                            Unix group of processes                          <value name="group">www</value>                            Process manager settings                          <value name="pm">                                    Sets style of controling worker process count.                                  Valid values are 'static' and 'apache-like'                                  <value name="style">static</value>                                    Sets the limit on the number of simultaneous requests that will be served.                                  Equivalent to Apache MaxClients directive.                                  Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi                                  Used with any pm_style.                                  <value name="max_children">128</value>                                    Settings group for 'apache-like' pm style                                  <value name="apache_like">                                            Sets the number of server processes created on startup.                                          Used only when 'apache-like' pm_style is selected                                          <value name="StartServers">20</value>                                            Sets the desired minimum number of idle server processes.                                          Used only when 'apache-like' pm_style is selected                                          <value name="MinSpareServers">5</value>                                            Sets the desired maximum number of idle server processes.                                          Used only when 'apache-like' pm_style is selected                                          <value name="MaxSpareServers">250</value>                                    </value>                            </value>                            Time limit on waiting execution of single request                          Should be used when 'max_execution_time' ini option does not terminate execution for some reason                          <value name="request_execution_timeout">31s</value>                            Set open file desc rlimit                          <value name="rlimit_files">51200</value>                            Set max core size rlimit                          <value name="rlimit_core">0</value>                            Chroot to this directory at the start                          <value name="chroot"></value>                            Chdir to this directory at the start                          <value name="chdir"></value>                            Redirect workers' stdout and stderr into main error log.                          If not set, they will be redirected to /dev/null, according to FastCGI specs                          <value name="catch_workers_output">yes</value>                            How much requests each process should execute before respawn.                          Useful to work around memory leaks in 3rd party libraries.                          For endless request processing please specify 0                          Equivalent to PHP_FCGI_MAX_REQUESTS                          <value name="max_requests">51200</value>                            Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.                          Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)                          Makes sense only with AF_INET listening socket.                          <value name="allowed_clients">127.0.0.1</value>                            Pass environment variables like LD_LIBRARY_PATH                          All $VARIABLEs are taken from current environment                          <value name="environment">                                  <value name="HOSTNAME">$HOSTNAME</value>                                  <value name="ATH">/usr/local/bin:/usr/bin:/bin</value>                                  <value name="TMP">/tmp</value>                                  <value name="TMPDIR">/tmp</value>                                  <value name="TEMP">/tmp</value>                                  <value name="OSTYPE">$OSTYPE</value>                                  <value name="MACHTYPE">$MACHTYPE</value>                                  <value name="MALLOC_CHECK_">2</value>                          </value>                    </section>            </workers>    </configuration>  
  2.   
复制代码
启动php-cgi
/usr/local/php5/sbin/php-fpm start(stop)
<-sina_sign,1054764633,7->

LT管理团队

守住每一天

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-30
最后登录
2012-2-3
在线时间
619 小时
阅读权限
200
积分
9973
帖子
1252
主题
174
精华
11
UID
31
发表于 2008-6-18 17:47:18 |显示全部楼层
六、建立nginx运行的用户及组
/usr/sbin/groupadd www -g 48
/usr/sbin/useradd -u 48 -g www www
php-fpm也用此用户及组启动


七、安装nginx
tar zxvf pcre-7.7.tar.gz
cd pcre-7.7/
./configure
make && make install
cd ../

tar zxvf nginx-0.6.31.tar.gz
cd nginx-0.6.31/
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install

编译安装速度超快。不需要像apache那样漫长的等待,我这里并没有发生错误。呵


八、配置启动nginx 配置fcgi
见附件
/usr/local/nginx/sbin/nginx
相关命令:
/usr/local/nginx/sbin/nginx -t 测试配置文件
/usr/local/nginx/sbin/nginx -v 查看相关版本
/usr/local/nginx/sbin/nginx ?c </path/to/config>为nginx指定配置文件
退出nginx
kill ?QUIT nginx_pid
重启nginx
kill -HUP nginx-pid
笨方法就是:ps -ef |grep nginx 再kill pid  

九、nginx启动脚本(linuxtone.org)
  1.   vi /etc/init.d/nginx
  2. chkconfig --level 35 nginx on

  3. #! /bin/sh
  4. ### BEGIN INIT INFO
  5. # Provides:          Nginx-php-fpm(fastcgi)
  6. # Required-Start:    $all
  7. # Required-Stop:     $all
  8. # Default-Start:     3 5
  9. # Default-Stop:      0 1 6
  10. # Short-Description: Start and stop nginx-fcgi in external FASTCGI mode
  11. # Description:       Start and stop nginx-fcgi in external FASTCGI mode
  12. # http://www.linxutone.org msn:cnseek@msn.com
  13. ### END INIT INFO

  14. set -e

  15. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  16. DESC="nginx daemon"
  17. NAME=nginx
  18. DAEMON=/usr/local/nginx/sbin/$NAME
  19. CONFIGFILE=/usr/local/nginx/conf/nginx.conf
  20. PIDFILE=/var/run/$NAME.pid
  21. SCRIPTNAME=/etc/init.d/$NAME

  22. # Gracefully exit if the package has been removed.
  23. test -x $DAEMON || exit 0

  24. d_start() {
  25.   /usr/local/php-fcgi/sbin/php-fpm start > /dev/null 2>&1
  26.   $DAEMON -c $CONFIGFILE || echo -n " already running"
  27. }

  28. d_stop() {
  29.   /usr/local/php-fcgi/sbin/php-fpm stop > /dev/null 2>&1
  30.   kill -QUIT `cat $PIDFILE` || echo -n " not running"
  31. }

  32. d_reload() {
  33.   /usr/local/php-fcgi/sbin/php-fpm reload > /dev/null 2>&1
  34.   kill -HUP `cat $PIDFILE` || echo -n " can't reload"
  35. }

  36. case "$1" in
  37.   start)
  38.         echo -n "Starting $DESC: $NAME"
  39.         d_start
  40.         echo "."
  41.         ;;
  42.   stop)
  43.         echo -n "Stopping $DESC: $NAME"
  44.         d_stop
  45.         echo "."
  46.         ;;
  47.   reload)
  48.         echo -n "Reloading $DESC configuration ..."
  49.         d_reload
  50.         echo "reloaded."
  51.   ;;
  52.   restart)
  53.         echo -n "Restarting $DESC: $NAME"
  54.         d_stop
  55.         sleep 1
  56.         d_start
  57.         echo "."
  58.         ;;
  59.   *)
  60.           echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
  61.           exit 3
  62.         ;;
  63. esac

  64. exit 0
复制代码
十、nginx日志处理脚本:
注意:不能直接删除/.../access.log。
  1. #!/bin/sh

  2. # This file run at 00:00

  3. date=$(date -d "yesterday" +"%Y-%m-%d")

  4. gzip -c /..../logs/access.log > /.../logs/${date}.log.gz

  5. :>/..../logs/access.log  
复制代码
再加入crontab 就可以了

还有另一个脚本:
  1. #!/bin/bash

  2. # linuxtone.org

  3. log_dir="/data/logs"

  4. time=`date +%Y%m%d`  

  5. /bin/mkdir -p  ${log_dir}/${date_dir} > /dev/null 2>&1

  6. /bin/mv  ${log_dir}/access_count.linxutone.org.log ${log_dir}/access_count.linuxtone.org.$time.log

  7. kill -USR1 `cat  /var/run/nginx.pid`
复制代码
十一、安装openx2.4
解压后放到/usr/local/nginx/html目录。
设置权限 chown www:www -R openx
         chmod 777 -R openx/var

在浏览器里输入http://192.168.19.60/openx
就可以安装了,图形的很好安装

相关的升级文档说明,翻译,及错误都在附件里。
大家可以下载~~
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分积分 收起 理由
linuxtone + 20 我很赞同! 谢谢分享

总评分: 积分 + 20   查看全部评分

<-sina_sign,1054764633,7->

使用道具 举报

LT管理团队

守住每一天

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-30
最后登录
2012-2-3
在线时间
619 小时
阅读权限
200
积分
9973
帖子
1252
主题
174
精华
11
UID
31
发表于 2008-6-18 17:52:48 |显示全部楼层

openx 的升级翻译

Warning: Server timezone not correctly set in PHP.
Please see the documentation about setting this variable for PHP.

If you are using PHP 5.1 or 5.2 set the correct timezone in your php.ini file:
date.timezone = Europe/London
If you are using PHP 4.3, 4.4 or 5.0 export the TZ environment variable in your web server configuration. If you are using an Apache web server, do this using the SetEnv directive in httpd.conf:
SetEnv TZ Europe/London
If you do not have access to set the timezone on your server ask your system administrator or your hosting provider to set this up for you.
Alternatively, you can call "date_timezone_default_set()" on PHP 5.1 and PHP 5.2 or you can set "date.timezone" in a .htaccess file.


############################################################################################
Prepare the database 准备数据库
The upgrade process guides you through synchronising your old and new databases. But there can be additional preparations:
升级过程将指导你完成同步新旧数据库.

before you perform the upgrade.
前缀字母小写:如果你现有的数据库前缀中包含大写字母, 你必须在升级动作之前把所有前缀改成小写字母
Large database: During the upgrade, OpenX copies each affected table, which can be very time-consuming for large databases. To avoid this process, create a file named "NOBACKUPS" in the var/ directory for your new version of OpenX. When the Install Wizard detects this file, it does not copy tables.
扩大数据库:升级过程中, OpenX会复制每一个涉及到的表格, 因此对于较大数据库来说这个过程耗时较长. 为了避免这种情况, 为你的新OpenX系统创建一个名为"NOBACKUPS"的文件.一旦安装程序找到这个文件, 将不再进步复制.


Database Setup
Upgrade only

The Database Setup page displays database settings detected from your existing installation. Check the settings to ensure they are correct. If the settings are not correct, amend them in your configuration file and go back to the start of the install and upgrade wizard. When you are satisfied the settings are in order, click Continue to start the process of altering your database. This process can take some time. When the process is finished, the screen updates to report that your database has been upgraded successfully.

Click Continue to open the Configuration Setup page.

升级专用  数据库安装页面显示检测到的你已安装的的文件.检查设置是否正确.如果不对,在配置文件中修复然后重新启动升级向导. 如果你认为设置正确可以占击继续开始更新数据库. 此过程需要一定时间. 安装过程结束后, 屏幕会显示你的数据库升级成功. 点击继续打开配置文件页面
<-sina_sign,1054764633,7->

使用道具 举报

Rank: 1

注册时间
2008-8-5
最后登录
2008-8-8
在线时间
0 小时
阅读权限
10
积分
1
帖子
1
主题
0
精华
0
UID
184
发表于 2008-8-5 17:15:52 |显示全部楼层
我安装了 openx 以后,不能上传flash文件,请问是什么问题啊

使用道具 举报

LT管理团队

守住每一天

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-30
最后登录
2012-2-3
在线时间
619 小时
阅读权限
200
积分
9973
帖子
1252
主题
174
精华
11
UID
31
发表于 2008-8-26 17:24:09 |显示全部楼层
有可能是你权限的问题.你可以结合日志看下.
我这里安装的没有这个错误
<-sina_sign,1054764633,7->

使用道具 举报

Rank: 7Rank: 7Rank: 7

注册时间
2008-5-26
最后登录
2012-1-31
在线时间
38 小时
阅读权限
100
积分
301
帖子
50
主题
8
精华
0
UID
16
发表于 2008-10-29 15:37:59 |显示全部楼层
兄弟,不错。今天也搞了一把,你的帖子受益匪浅

使用道具 举报

Rank: 1

注册时间
2009-1-13
最后登录
2011-8-18
在线时间
40 小时
阅读权限
10
积分
49
帖子
64
主题
3
精华
0
UID
829

LT粉丝

发表于 2009-1-13 11:26:46 |显示全部楼层
谢谢,希望我们大家都会有学习经验贴出来,供大家学习

使用道具 举报

Rank: 3Rank: 3

注册时间
2009-4-1
最后登录
2012-1-31
在线时间
37 小时
阅读权限
30
积分
362
帖子
55
主题
0
精华
0
UID
2254
发表于 2009-6-1 18:37:08 |显示全部楼层
openads 搞过 这个还米有哦 !                   不错 顶下

使用道具 举报

Rank: 3Rank: 3

注册时间
2009-6-3
最后登录
2012-1-3
在线时间
31 小时
阅读权限
30
积分
453
帖子
82
主题
1
精华
0
UID
3377

LT粉丝

发表于 2009-6-3 10:38:50 |显示全部楼层
好东西哦

使用道具 举报

LT技术团队

夜归人Dě传奇

Rank: 7Rank: 7Rank: 7

注册时间
2008-5-25
最后登录
2012-1-13
在线时间
49 小时
阅读权限
100
积分
767
帖子
113
主题
26
精华
0
UID
5

LT粉丝

发表于 2009-11-18 13:19:31 |显示全部楼层
我也安装了。可是我往数据库里写数据的时候,数据库显示的是乱码的呢? 不知道那位兄弟遇到过类似的问题没有. {openx 版本2.8.2}
成长中的小企鹅........长......大.......中.......  

Blog:http://www.yuexiayiyu.cn

使用道具 举报

Rank: 2

注册时间
2009-11-3
最后登录
2011-12-31
在线时间
25 小时
阅读权限
20
积分
109
帖子
5
主题
0
精华
0
UID
6378
发表于 2009-11-26 16:47:12 |显示全部楼层
这位老兄真是劳有所获啊
我学习了经典

使用道具 举报

Rank: 1

注册时间
2010-11-18
最后登录
2010-12-22
在线时间
1 小时
阅读权限
10
积分
5
帖子
1
主题
0
精华
0
UID
11189
发表于 2010-12-17 17:00:15 |显示全部楼层
本帖最后由 Mr_亮 于 2010-12-17 17:01 编辑

我的openx在本地是apache
放到服务器上是nginx  现在图片上传不了  文件夹权限已经777了
数据库里有图片名了,只是images下没有这个图片。是为什么呢
期待解答 谢谢

使用道具 举报

论坛元老

举子

Rank: 8Rank: 8

注册时间
2010-1-12
最后登录
2012-2-3
在线时间
431 小时
阅读权限
90
积分
12203
帖子
723
主题
117
精华
0
UID
7522
发表于 2010-12-20 22:43:16 |显示全部楼层
回复 守住每一天 的帖子




看着有点复杂  嘿嘿  

使用道具 举报

Rank: 8Rank: 8

注册时间
2011-6-20
最后登录
2012-2-4
在线时间
78 小时
阅读权限
90
积分
7456
帖子
135
主题
1
精华
0
UID
14521
发表于 2011-7-30 08:59:39 |显示全部楼层
研究下openx2.4

使用道具 举报

Rank: 8Rank: 8

注册时间
2011-6-20
最后登录
2012-2-4
在线时间
78 小时
阅读权限
90
积分
7456
帖子
135
主题
1
精华
0
UID
14521
发表于 2011-8-7 10:41:56 |显示全部楼层
得经常来看看

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢红之盟网络提供带宽支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2012-2-4 18:54 , Processed in 0.080051 second(s), 13 queries , Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部