nginx + php + centos 6.3

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 2014年2月7日 22:34:52 PHP 5.5.9 http://cn2.php.net/distributions/php-5.5.9.tar.bz2 nginx 1.5.10 http://nginx.

2014年2月7日 22:34:52

PHP 5.5.9 http://cn2.php.net/distributions/php-5.5.9.tar.bz2

nginx 1.5.10 http://nginx.org/download/nginx-1.5.10.tar.gz

-------------------------------------------

php:

gd 

yum -y install gd-devel

php

./configure --prefix=/usr/local/web/php --with-config-file-path=/usr/local/web/php/etc --enable-fpm --enable-mbstring --with-gd --enable-sockets --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd

nginx:

1 location / {
2             root /home/web/html;
3             fastcgi_pass   127.0.0.1:9000;
4             fastcgi_index  index.php;
5             fastcgi_param  SCRIPT_FILENAME  $document_root/index.php;
6             include        fastcgi_params;
7         }

注:

1.第2行,指定网站的根目录,就是指定第5行的$document_root值(如果location层没有这条指令,那么就使用外层的root指令值)

2.第3行,将所有请求转发给守护127.0.0.1:9000的进程

3.第5行,指定转发时将请求转发给哪个文件进行处理,这里 $document_root/index.php => /home/web/html/index.php

4.第6行,附带一些其它参数一并转发

 

出现 "file not found"问题:

root 指令值最好也定义一份在server块中,这样下文中如果用到$document_root时,就会自动定义为这个值

fastcgi_param 指令值不要写死,写成 

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

参考: http://www.nginx.cn/562.html

----------------------------------

编译安装nginx时,问题解决:

如果单独安装pcre,那么./configure时要用到 --with-pcre=/pcre/sourcecode/path (pcre的源码解压缩后的文件夹路径)

不独立安装pcre的话, 只用 yum -y install pcre pcre-devel

ps, pcre是perl的正则库, nginx rewrite 的时候要用到正则表达式

 

安装完成后,会自动在/etc/init.d下生成启动脚本,文件名字为nginx,使用时可以serviec nginx start/stop.....

----------------------------------

2014年3月2日 14:03:37

php编译时的MYSQL相关配置(如果使用mysqlnd驱动,注意配置PHP.ini指明MYSQL和PHP交流用的socket文件路径,对MYSQL来说PHP也是一个客户端,客户端和MYSQL通信都是用socket文件通信的)

[root@ddd php-5.5.9]# ./configure --help | grep mysql
  --with-mysql=DIR        Include MySQL support.  DIR is the MySQL base
                          mysqlnd the MySQL native driver will be used
  --with-mysql-sock=SOCKPATH
  --with-mysqli=FILE      Include MySQLi support.  FILE is the path
                          to mysql_config.  If no value or mysqlnd is passed
  --enable-embedded-mysqli
  --with-pdo-mysql=DIR    PDO: MySQL support. DIR is the MySQL base directory
                          If no value or mysqlnd is passed as DIR, the
  --enable-mysqlnd        Enable mysqlnd explicitly, will be done implicitly
  --disable-mysqlnd-compression-support
                          Disable support for the MySQL compressed protocol in mysqlnd
  --with-zlib-dir=DIR     mysqlnd: Set the path to libz install prefix

-----------------------------------

php-fpm

启动php-fpm后,它会自动加载php的配置文件(没有也不报错)

下边是将php-fpm安装成系统服务所使用的脚本

  1 #! /bin/sh
  2     ### BEGIN INIT INFO
  3     # Provides:          php-fpm
  4     # Required-Start:    $remote_fs $network
  5     # Required-Stop:     $remote_fs $network
  6     # Default-Start:     2 3 4 5
  7     # Default-Stop:      0 1 6
  8     # Short-Description: starts php-fpm
  9     # Description:       starts the PHP FastCGI Process Manager daemon
 10     ### END INIT INFO
 11 
 12     prefix=/usr/local/web/php #编译PHP时的--prefix
 13     exec_prefix=${prefix}
 14 
 15     php_fpm_BIN=${exec_prefix}/sbin/php-fpm
 16     php_fpm_CONF=${prefix}/etc/php-fpm.conf
 17     php_fpm_PID=${prefix}/var/run/php-fpm.pid #要和php-fpm配置文件中的一致,用来找到当前进程号,然后结束它
 18 
 19 
 20     php_opts="--fpm-config $php_fpm_CONF"
 21 
 22 
 23     wait_for_pid () {
 24         try=0
 25 
 26         while test $try -lt 35 ; do
 27 
 28             case "$1" in
 29                 'created')
 30                 if [ -f "$2" ] ; then
 31                     try=''
 32                     break
 33                 fi
 34                 ;;
 35 
 36                 'removed')
 37                 if [ ! -f "$2" ] ; then
 38                     try=''
 39                     break
 40                 fi
 41                 ;;
 42             esac
 43 
 44             echo -n .
 45             try=`expr $try + 1`
 46             sleep 1
 47 
 48         done
 49 
 50     }
 51 
 52     case "$1" in
 53         start)
 54             echo -n "Starting php-fpm "
 55 
 56             $php_fpm_BIN $php_opts
 57 
 58             if [ "$?" != 0 ] ; then
 59                 echo " failed"
 60                 exit 1
 61             fi
 62 
 63             wait_for_pid created $php_fpm_PID
 64 
 65             if [ -n "$try" ] ; then
 66                 echo " failed"
 67                 exit 1
 68             else
 69                 echo " done"
 70             fi
 71         ;;
 72 
 73         stop)
 74             echo -n "Gracefully shutting down php-fpm "
 75 
 76             if [ ! -r $php_fpm_PID ] ; then
 77                 echo "warning, no pid file found - php-fpm is not running ?"
 78                 exit 1
 79             fi
 80 
 81             kill -QUIT `cat $php_fpm_PID`
 82 
 83             wait_for_pid removed $php_fpm_PID
 84 
 85             if [ -n "$try" ] ; then
 86                 echo " failed. Use force-exit"
 87                 exit 1
 88             else
 89                 echo " done"
 90             fi
 91         ;;
 92 
 93         force-quit)
 94             echo -n "Terminating php-fpm "
 95 
 96             if [ ! -r $php_fpm_PID ] ; then
 97                 echo "warning, no pid file found - php-fpm is not running ?"
 98                 exit 1
 99             fi
100 
101             kill -TERM `cat $php_fpm_PID`
102 
103             wait_for_pid removed $php_fpm_PID
104 
105             if [ -n "$try" ] ; then
106                 echo " failed"
107                 exit 1
108             else
109                 echo " done"
110             fi
111         ;;
112 
113         restart)
114             $0 stop
115             $0 start
116         ;;
117 
118         reload)
119 
120             echo -n "Reload service php-fpm "
121 
122             if [ ! -r $php_fpm_PID ] ; then
123                 echo "warning, no pid file found - php-fpm is not running ?"
124                 exit 1
125             fi
126 
127             kill -USR2 `cat $php_fpm_PID`
128 
129             echo " done"
130         ;;
131 
132         *)
133             echo "Usage: $0 {start|stop|force-quit|restart|reload}"
134             exit 1
135         ;;
136 
137     esac

注意,

1.第一行和第二行之间不要有空行,否则会提示错误(有的话,行首要用#注释)

[root@AY1402041644126082e5Z sbin]# ./php-fpmd start
-bash: ./php-fpmd: /bin/sh^M: bad interpreter: No such file or directory

2.修改第12行到17行的相应文件路径使之和配置文件的配置相对应

3.如果启动时端口被占用: netstat -apn | grep 9000 找到它,用killall kill -9 结束进程,再重新启动

4.php安装的所有路径中没有php.ini也照样可以执行php_info();当然,获取有些需要的配置时会出警告(如时区,mysql的socket路径等),所以PHP.ini和php-fpm.conf是相互配合的,缺一不可

5. 另一个bash(mac可用)

  1 #!/bin/sh
  2 #=======================================================================================
  3 # php-fpm - this script start and stop the php-fpm daemon
  4 #
  5 # chkconfig 35 on
  6 # description: php-fpm is a FastCGI web server.
  7 # processname: php-fpm
  8 # config: /usr/local/php/etc/php-fpm.conf
  9 # pidfile: /var/run/php-fpm.pid
 10 #=======================================================================================
 11 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 12     
 13 BINFILE="/usr/sbin/php-fpm"
 14 CFGFILE="/etc/php-fpm.conf"
 15 PIDFILE="/var/run/php-fpm.pid"
 16 LOCKFILE="/var/lock/php-fpm.lock"
 17 INIFILE="/etc/php.ini"
 18     
 19 RETVAL=0
 20     
 21 start() {
 22     [[ -x $BINFILE ]] || exit 5
 23     [[ -f $CFGFILE ]] || exit 6
 24        
 25     $BINFILE -t >/dev/null 2>&1
 26        
 27     if [[ $? -ne 0 ]]; then
 28         echo "The php-fpm configure has error."
 29         return 1
 30     fi
 31        
 32     echo "Starting php-fpm......"
 33     sudo $BINFILE -c ${INIFILE} -y $CFGFILE -g ${PIDFILE}
 34     RETVAL=$?
 35     echo "ok~"
 36     [[ $RETVAL -eq 0 ]] && touch $LOCKFILE
 37        
 38     return $RETVAL
 39 }
 40     
 41 stop() {
 42     echo "Shutting down php-fpm......"
 43        
 44     if [[ -f $PIDFILE ]]; then
 45         kill -3 `cat ${PIDFILE}`
 46     else
 47         kill -3 `ps aux | grep php-fpm | awk '/master/{print $2}'`
 48     fi
 49        
 50     RETVAL=$?
 51     echo "ok~"
 52     [[ $RETVAL -eq 0 ]] && sudo rm -f $LOCKFILE $PIDFILE
 53        
 54     return $RETVAL
 55 }
 56     
 57 restart() {
 58     stop
 59     sleep 1
 60 
 61     start
 62     sleep 1
 63        
 64     RETVAL=$?  
 65     return $RETVAL
 66 }
 67     
 68 reload() {
 69     echo -n $"Reloading php-fpm......"
 70        
 71     if [[ -f $PIDFILE ]]; then
 72         kill -USR2 `cat ${PIDFILE}`
 73     else
 74         kill -USR2 `ps aux | grep php-fpm | awk '/master/{print $2}'`
 75     fi
 76        
 77     RETVAL=$?
 78     echo "ok~"
 79        
 80     return $RETVAL
 81 }
 82     
 83 case "$1" in
 84 start)
 85     start
 86     ;;
 87        
 88 stop)
 89     stop
 90     ;;
 91        
 92 restart)
 93     restart
 94     ;;
 95        
 96 reload)
 97     reload
 98     ;;
 99        
100 *)
101     echo "Usage: service php-fpm {start|stop|restart|reload}"
102     RETVAL=1
103 esac
104     
105 exit $RETVAL
View Code

 2016年4月18日 09:46:55 星期一

PHP7默认安装的模块: (在./configure时, 只配置--prefix=xxx参数, 其它--with, --enable都不写的情况下)

Core
ctype
date
dom
fileinfo
filter
hash
iconv
json
libxml
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
应用服务中间件 Linux 网络安全
如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书
如何在 CentOS 7 上为 Nginx 创建自签名 SSL 证书
131 1
|
3月前
|
应用服务中间件 Linux nginx
让 CentOS 定时重启 Nginx
在CentOS上设置Nginx定时重启可通过`cron`或`systemctl`
204 0
|
2月前
|
应用服务中间件 Linux 网络安全
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
这篇文章提供了在CentOS 7系统上通过源码安装Nginx的详细步骤,包括从官网下载Nginx源码包、上传至虚拟机、解压、删除压缩包、编译安装前的配置、安装PCRE库(因为Nginx使用PCRE库解析正则表达式)、安装zlib和OpenSSL库(用于支持HTTPS协议)、重新编译Nginx、安装后启动Nginx服务、关闭服务、修改默认端口、以及重启服务测试等步骤。文章还提供了相关命令和操作截图,帮助用户更好地理解和执行安装过程。
2022年超详细在CentOS 7上安装Nginx方法(源码安装)
|
2月前
|
Linux PHP
Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程
【8月更文挑战第27天】本文介绍两种禁用PHP执行的方法:使用`PHP_diseval_extension`禁用和通过`suhosin`禁用。由于`suhosin`不支持PHP8,仅适用于PHP7及以下版本,若服务器安装了PHP5.6,则需对应安装`suhosin-0.9.38`版本。文章提供了详细的安装步骤,并强调了宝塔环境下与普通环境下的PHP路径差异。安装完成后,在`php.ini`中添加`suhosin.so`扩展并设置`executor.disable_eval = on`以禁用执行功能。最后通过测试代码验证是否成功禁用,并重启`php-fpm`服务生效。
27 2
|
2月前
|
应用服务中间件 Linux nginx
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
这篇文章介绍了在CentOS系统上使用Nginx源码包进行安装和配置的详细步骤,包括源码包的获取、解压、配置、编译、安装、启动验证以及注意事项。
82 0
在CentOS上使用源码包安装Nginx、以及手动启动Nginx的步骤过程
|
2月前
|
物联网 应用服务中间件 Linux
CentOS7.9 Nginx+EMQX集群组建MQTTS平台
通过以上步骤,您已成功搭建了一个基于CentOS 7.9、Nginx和EMQX的MQTTS平台。这个平台既能保证数据传输的安全性,又能利用Nginx的负载均衡能力和EMQX的高性能、高并发处理能力,实现稳定高效的消息服务。在部署和配置过程中,务必注意证书、域名以及EMQX配置的正确性,确保系统安全和稳定运行。此外,定期更新软件和系统,以及监控系统性能,也是保证MQTTS平台长期稳定运行的重要环节。
74 4
|
2月前
|
物联网 应用服务中间件 Linux
CentOS7.9 Nginx+EMQX集群组建MQTTS平台
通过以上步骤,您已成功搭建了一个基于CentOS 7.9、Nginx和EMQX的MQTTS平台。这个平台既能保证数据传输的安全性,又能利用Nginx的负载均衡能力和EMQX的高性能、高并发处理能力,实现稳定高效的消息服务。在部署和配置过程中,务必注意证书、域名以及EMQX配置的正确性,确保系统安全和稳定运行。此外,定期更新软件和系统,以及监控系统性能,也是保证MQTTS平台长期稳定运行的重要环节。
66 3
|
2月前
|
应用服务中间件 Linux PHP
Linux搭建tengine2.0<Nginx>+php7环境
本文介绍了在Linux系统上搭建Tengine 2.0(一个Nginx的增强版本)和PHP 7环境的详细步骤,包括创建安装目录、下载源码包及依赖库、编译安装Nginx、配置Nginx、安装PHP及其依赖、设置PHP-FPM、配置环境变量、安装Git和Composer,以及服务管理和日志查看等。
59 0
|
2月前
|
Ubuntu 应用服务中间件 Linux
如何在Ubuntu 14.04上使用Nginx和Php-fpm安全地托管多个网站
如何在Ubuntu 14.04上使用Nginx和Php-fpm安全地托管多个网站
15 0
|
2月前
|
应用服务中间件 Linux 网络安全
如何在 CentOS 6.5 上使用 Unicorn 和 Nginx 部署 Rails 应用
如何在 CentOS 6.5 上使用 Unicorn 和 Nginx 部署 Rails 应用
31 0
下一篇
无影云桌面