首页 > 网站 > Nginx > 正文

PHP7+Nginx的配置与安装教程详解

2024-08-30 12:06:30
字体:
来源:转载
供稿:网友

本文分步骤,通过文字说明的形式给大家介绍PHP7+Nginx的配置与安装的相关知识,感兴趣的朋友参考下吧。

下面武林网小编把PHP7+Nginx的配置与安装教程分享给大家,供大家参考,本文写的不好还请见谅。

系统环境:centos6.5 x64

软件版本:nginx-1.10.0 php-7.0.6

安装 Nginx

Nginx官网:http://nginx.org/

先安装编译依赖的一些组件,代码如下:

yum install pcre pcre-devel openssl openssl-devel -y

1、解压程序包,代码如下:

tar xf nginx-1.10.0.tar.gz

cd nginx-1.10.0

2、预编译配置参数,代码如下:

  1. ./configure --user=www / 
  2. --group=www / 
  3. --prefix=/data/server/nginx / 
  4. --with-http_stub_status_module / 
  5. --without-http-cache / 
  6. --with-http_ssl_module / 
  7. --with-http_gzip_static_module 

3、执行编译,代码如下:

make && make install

4、替换配置文件

nginx.conf

  1. user www www; 
  2. worker_processes 1; 
  3. error_log /u01/data/log/nginx/error.log crit; 
  4. pid /u01/data/server/nginx/logs/nginx.pid; 
  5. #Specifies the value for maximum file descriptors that can be opened by this process. 
  6. worker_rlimit_nofile 65535; 
  7. events 
  8. use epoll; 
  9. worker_connections 65535; 
  10. http { 
  11. include mime.types; 
  12. default_type application/octet-stream; 
  13. #charset gb2312; 
  14. server_names_hash_bucket_size 128; 
  15. client_header_buffer_size 32k; 
  16. large_client_header_buffers 4 32k; 
  17. client_max_body_size 8m; 
  18. sendfile on; 
  19. tcp_nopush on; 
  20. keepalive_timeout 60; 
  21. tcp_nodelay on; 
  22. fastcgi_connect_timeout 300; 
  23. fastcgi_send_timeout 300; 
  24. fastcgi_read_timeout 300; 
  25. fastcgi_buffer_size 64k; 
  26. fastcgi_buffers 4 64k; 
  27. fastcgi_busy_buffers_size 128k; 
  28. fastcgi_temp_file_write_size 128k; 
  29. gzip on; 
  30. gzip_min_length 1k; 
  31. gzip_buffers 4 16k; 
  32. gzip_http_version 1.0; 
  33. gzip_comp_level 2; 
  34. gzip_types text/plain application/x-javascript text/css application/xml; 
  35. gzip_vary on; 
  36. #limit_zone crawler $binary_remote_addr 10m; 
  37. log_format main '$remote_addr - "$request_time" [$time_local] "$request" ' 
  38. '"$status" $body_bytes_sent "$http_referer" ' 
  39. '"$http_user_agent" $http_x_forwarded_for'
  40. log_format '$remote_addr - $remote_user [$time_local] "$request" ' 
  41. '$status $body_bytes_sent "$http_referer" ' 
  42. '"$http_user_agent" $http_x_forwarded_for "$request_time"'
  43. include /u01/alidata/server/nginx/conf/vhosts/*.conf; 

虚拟主机配置文件模板

  1. server { 
  2. listen 8080; 
  3. server_name localhost; 
  4. index index.html index.htm index.php; 
  5. root /u01/data/www; 
  6. location ~ .*/.(php|php5)?$ 
  7. fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
  8. fastcgi_index index.php; 
  9. include fastcgi.conf; 
  10. location ~ .*/.(gif|jpg|jpeg|png|bmp|swf)$ 
  11. expires 30d; 
  12. location ~ .*/.(js|css)?$ 
  13. expires 1h; 
  14. ###this is to use open website lianjie like on apache## 
  15. location / { 
  16. if (!-e $request_filename) { 
  17. rewrite ^(.*)$ /index.php?s=$1 last; 
  18. break
  19. location ~ /.svn/ { 
  20. deny all; 
  21. ###end## 
  22. access_log /u01/data/log/nginx/access/test.log main; 

5、提供Nginx启动脚本

  1. #!/bin/bash 
  2. nginxd=/u01/data/server/nginx/sbin/nginx 
  3. nginx_config=/u01/data/server/nginx/conf/nginx.conf 
  4. nginx_pid=/u01/data/server/nginx/logs/nginx.pid 
  5. RETVAL=0 
  6. prog="nginx" 
  7. [ -x $nginxd ] || exit 0 
  8. # Start nginx daemons functions. 
  9. start() { 
  10. if [ -e $nginx_pid ] && netstat -tunpl | grep nginx &> /dev/null;then 
  11. echo "nginx already running...." 
  12. exit 1 
  13. fi 
  14. echo -n $"Starting $prog!" 
  15. $nginxd -c ${nginx_config} 
  16. RETVAL=$? 
  17. echo 
  18. $RETVAL = 0 ] && touch /var/lock/nginx 
  19. return $RETVAL 
  20. # Stop nginx daemons functions. 
  21. stop() { 
  22. echo -n $"Stopping $prog!" 
  23. $nginxd -s stop 
  24. RETVAL=$? 
  25. echo 
  26. $RETVAL = 0 ] && rm -f /var/lock/nginx 
  27. # reload nginx service functions. 
  28. reload() { 
  29. echo -n $"Reloading $prog!" 
  30. stop() { 
  31. echo -n $"Stopping $prog!" 
  32. $nginxd -s stop 
  33. RETVAL=$? 
  34. echo 
  35. $RETVAL = 0 ] && rm -f /var/lock/nginx 
  36. # reload nginx service functions. 
  37. reload() { 
  38. echo -n $"Reloading $prog!" 
  39. #kill -HUP `cat ${nginx_pid}` 
  40. $nginxd -s reload 
  41. RETVAL=$? 
  42. echo 
  43. # See how we were called. 
  44. case "$1" in 
  45. start) 
  46. start 
  47. ;; 
  48. stop) 
  49. stop 
  50. ;; 
  51. reload) 
  52. reload 
  53. ;; 
  54. restart) 
  55. stop 
  56. start 
  57. ;; 
  58. *) 
  59. echo $"Usage: $prog {start|stop|restart|reload|help}" 
  60. exit 1 
  61. esac 
  62. exit $RETVAL 

只需要稍加修改程序路径就可立即使用

安装 PHP7

PHP官网:http://php.net/

PHP扩展:http://pecl.php.net/

先安装一些为编译依赖的组建

yum -y install gcc gcc-c++ gcc-g77 make libtool autoconf patch unzip automake libxml2 libxml2-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl libmcrypt libmcrypt-devel libpng libpng-devel libjpeg-devel openssl openssl-devel curl curl-devel libxml2 libxml2-devel ncurses ncurses-devel libtool-ltdl-devel libtool-ltdl autoconf automake libaio*

1、解压程序包,代码如下:

tar xf php-7.0.6.tar.bz2

cd php-7.0.6

2、安装编译依赖的图片库,代码如下:

  1. jpegsrc.v6b.tar.gz 
  2. libpng-1.2.50.tar.gz 
  3. freetype-2.1.10.tar.gz 
  4.  
  5. # 安装 jpegsrc.v6b.tar.gz 
  6. #这个需要先创建好存放程序的文件夹不然会报错 
  7. mkdir /usr/local/jpeg.6/{bin,lib,include,man/man1} -pv 
  8. tar xf jpegsrc.v6b.tar.gz  
  9. cd jpeg-6b/ 
  10. ./configure --prefix=/usr/local/jpeg.6/ 
  11. make && make install 
  12. # 安装 libpng-1.2.50.tar.gz 
  13. tar xf libpng-1.2.50.tar.gz 
  14. cd libpng-1.2.50 
  15. ./configure --prefix=/usr/local/libpng.1.2.50 
  16. make && make install 
  17. # 安装 freetype-2.1.10.tar.gz 
  18. tar xf freetype-2.1.10.tar.gz 
  19. cd freetype-2.1.10 
  20. ./configure --prefix=/usr/local/freetype.2.1.10/ 
  21. make && make install 

3、预编译配置参数

  1. ./configure --prefix=/data/server/php / 
  2. --enable-opcache / 
  3. --with-config-file-path=/u01/data/server/php/etc / 
  4. --enable-mysqlnd / 
  5. --with-mysqli=mysqlnd / 
  6. --with-pdo-mysql=mysqlnd / 
  7. --enable-fpm / 
  8. --enable-static / 
  9. --enable-inline-optimization / 
  10. --enable-sockets / 
  11. --enable-wddx / 
  12. --enable-zip / 
  13. --enable-calendar / 
  14. --with-gd / 
  15. --with-iconv / 
  16. --with-openssl / 
  17. --with-zlib / 
  18. --enable-bcmath / 
  19. --enable-soap / 
  20. --with-xmlrpc / 
  21. --enable-mbstring / 
  22. --enable-shared / 
  23. --with-curl / 
  24. --enable-xml / 
  25. --enable-ftp / 
  26. --with-mcrypt / 
  27. --with-mhash / 
  28. --enable-shmop / 
  29. --enable-sysvsem / 
  30. --enable-mbregex / 
  31. --enable-gd-native-ttf / 
  32. --enable-pcntl / 
  33. --enable-session / 
  34. --with-gettext / 
  35. --with-freetype-dir=/usr/local/freetype.2.1.10 / 
  36. --with-jpeg-dir=/usr/local/jpeg.6 / 
  37. --with-png-dir=/usr/local/libpng.1.2.50 / 
  38. --disable-ipv6 / 
  39. --disable-debug / 
  40. --disable-maintainer-zts / 
  41. --disable-rpath / 
  42. --disable-fileinfo / 
  43. --without-gdbm / 

4、执行编译,代码如下:

make && make install

5、提供php.ini文件,代码如下:

cp php.ini-production /u01/data/server/php/etc/php.ini

配置php.ini

  1. # 在840行左右-设置PHP的opcache和memcache扩展库 
  2. zend_extension=opcache.so 
  3. extension=memcache.so 
  4. # 722行左右-设置PHP的扩展库路径 
  5. extension_dir = "/u01/data/server/php7/lib/php/extensions/no-debug-non-zts-20151012/" 
  6. # 避免PHP信息暴露在http头中 
  7. expose_php = Off 
  8. # 避免暴露php调用mysql的错误信息 
  9. display_errors = Off 
  10. # 开启PHP错误日志(路径在php-fpm.conf中配置) 
  11. log_errors = On 
  12. # 设置PHP的时区 
  13. date.timezone = PRC 
  14. # 开启opcache(1733行左右) 
  15. opcache.enable=1 
  16. # 设置PHP脚本允许访问的目录 
  17. open_basedir = /usr/share/nginx/html; 

6、配置php-fpm

php-fpm.conf 进程服务主配置文件

  1. # 设置错误日志的路径 
  2. error_log = /var/log/php-fpm/error.log 
  3. # 引入www.conf文件中的配置 
  4. include=/usr/local/php7/etc/php-fpm.d/*.conf 
  5. # 设置主进程打开的最大文件数 
  6. rlimit_files = 102400 
  7. www.conf 进程服务扩展配置文件 
  8. # 设置用户和用户组 
  9. user = www 
  10. group = www 
  11. # 设置php监听方式 
  12. # listen = 127.0.0.1:9000  
  13. # 注意这里要设置PHP套接字文件的权限,默认是root,Nginx无法访问。 
  14. listen = /var/run/php-fpm/php-fpm.sock 
  15. # 开启慢日志 
  16. slowlog = /var/log/php-fpm/php-slow.log 
  17. request_slowlog_timeout = 10s 
  18. # 设置工作进程数(根据实际情况设置) 
  19. pm.max_children = 50 
  20. # 这里需要注意,pm.start_servers 不能小于 pm.min_spare_servers 
  21. pm.start_servers = 5 
  22. pm.min_spare_servers = 5 
  23. pm.max_spare_servers = 10 
  24. pm.max_requests = 10240 
  25. # 设置php的session目录(所属用户和用户组都是www) 
  26. php_value[session.save_handler] = files 
  27. php_value[session.save_path] = /var/tmp/php/session 

7、提供php-fpm启动脚本

  1. #! /bin/sh 
  2. prefix=/u01/data/server/php7 
  3. exec_prefix=${prefix} 
  4. php_fpm_BIN=${exec_prefix}/sbin/php-fpm 
  5. php_fpm_CONF=${prefix}/etc/php-fpm.conf 
  6. php_fpm_PID=${prefix}/var/run/php-fpm.pid 
  7. php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID" 
  8. wait_for_pid () { 
  9. try=0 
  10. while test $try -lt 35 ; do 
  11. case "$1" in 
  12. 'created'
  13. if [ -f "$2" ] ; then 
  14. try='' 
  15. break 
  16. fi 
  17. ;; 
  18. 'removed'
  19. if [ ! -f "$2" ] ; then 
  20. try='' 
  21. break 
  22. fi 
  23. ;; 
  24. esac 
  25. echo -n . 
  26. try=`expr $try + 1` 
  27. sleep 1 
  28. done 
  29. case "$1" in 
  30. start) 
  31. echo -n "Starting php-fpm " 
  32. $php_fpm_BIN --daemonize $php_opts 
  33. if [ "$?" != 0 ] ; then 
  34. echo " failed" 
  35. exit 1 
  36. fi 
  37. wait_for_pid created $php_fpm_PID 
  38. if [ -n "$try" ] ; then 
  39. echo " failed" 
  40. exit 1 
  41. else 
  42. echo " done" 
  43. fi 
  44. ;; 
  45. stop) 
  46. echo -n "Gracefully shutting down php-fpm " 
  47. if [ ! -r $php_fpm_PID ] ; then 
  48. echo "warning, no pid file found - php-fpm is not running ?" 
  49. exit 1 
  50. fi 
  51. kill -QUIT `cat $php_fpm_PID
  52. wait_for_pid removed $php_fpm_PID 
  53. if [ -n "$try" ] ; then 
  54. echo " failed. Use force-quit" 
  55. exit 1 
  56. else 
  57. echo " done" 
  58. fi 
  59. ;; 
  60. status) 
  61. if [ ! -r $php_fpm_PID ] ; then 
  62. echo "php-fpm is stopped" 
  63. exit 0 
  64. fi 
  65. PID=`cat $php_fpm_PID
  66. if ps -p $PID | grep -q $PID; then 
  67. echo "php-fpm (pid $PID) is running..." 
  68. else 
  69. echo "php-fpm dead but pid file exists" 
  70. fi 
  71. ;; 
  72. force-quit) 
  73. echo -n "Terminating php-fpm " 
  74. if [ ! -r $php_fpm_PID ] ; then 
  75. echo "warning, no pid file found - php-fpm is not running ?" 
  76. exit 1 
  77. fi 
  78. kill -TERM `cat $php_fpm_PID
  79. wait_for_pid removed $php_fpm_PID 
  80. if [ -n "$try" ] ; then 
  81. echo " failed" 
  82. exit 1 
  83. else 
  84. echo " done" 
  85. fi 
  86. ;; 
  87. restart) 
  88. $0 stop 
  89. $0 start 
  90. ;; 
  91. reload) 
  92. echo -n "Reload service php-fpm " 
  93. if [ ! -r $php_fpm_PID ] ; then 
  94. echo "warning, no pid file found - php-fpm is not running ?" 
  95. exit 1 
  96. fi 
  97. kill -USR2 `cat $php_fpm_PID
  98. echo " done" 
  99. ;; 
  100. *) 
  101. echo "Usage: $0 {start|stop|force-quit|restart|reload|status}" 
  102. exit 1 
  103. ;; 
  104. esac 

八、启动php-fpm程序

  1. /etc/init.d/php-fpm start 
  2. # 修改套接字文件权限 
  3. chown -R /var/run/php-fpm/

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表