CentOS7下安装nginx与php
来源:互联网 发布:手机迅雷提示无网络 编辑:程序博客网 时间:2024/06/03 12:28
因为项目的需求需要在CentOS7的环境下安装nginx与php的组合。以前用的都是Apache+PHP组合,这次是个新的尝试。首先在网上搜了一些前辈的教程,照着一步一步做下来,可是安装的过程并不顺利,可能是因为每个人的系统多少会有些差异,我的系统始终无法运行起来。后来通过参考php官网的在线手册、章宴编写的《实战Nginx:取代Apache的高性能Web服务器》一书和网上的一些相关安装配置的帖子,终于成功运行。在这里将安装过程记录下来,以备以后查看。
一、软件下载
1、nginx-1.10.2 Stable version
http://nginx.org/download/nginx-1.10.2.tar.gz
2、PHP 5.6.29 Stable version
http://cn2.php.net/get/php-5.6.29.tar.gz/from/this/mirror
因为系统将要部署在生产环境中,稳定最重要,所以用的都是 Stable 版的。
将下载的文件放置到 /tmp 目录下
二、安装前的准备
1、安装GCC编译器
yum -y install gcc gcc-c++ autoconf automake
2、安装第三方支持库
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
yum -y install libxml2*
3、创建供nginx和php使用的帐号“www”
adduser www
三、nginx安装
1、解压缩
tar zxvf nginx-1.10.2.tar.gz
2、编译安装
cd /tmp/nginx-1.10.2
./configure --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_mp4_module --add-module=../nginx-rtmp-module-master--with-debug
(注1:默认安装路径为 /usr/local/nginx,如需自定义路径可将此行改为: ./configure --prefix=<目标路径>) (注2:--user=www
--group=www 为nginx使用的帐号和用户组,可根据实际情况改变
) (注3:nginx-rtmp-module-master 是流媒体服务第三方模块,需要先下载解压,在编译nginx时,要指出正确的路径)
make
make install (注:需要有管理员权限)
四、PHP安装
1、解压缩
tar zxvf php-5.6.29.tar.gz
2、编译安装
cd /tmp/php-5.6.29
./configure --prefix=/usr/local/php --enable-fpm --with-mysql --with-mysqli --enable-mbstring=all
make
make install (注:需要有管理员权限)
3、复制配置文件
cp php.ini-development /usr/local/php/php.ini
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
五、编辑配置文件
1、编辑php.ini
vim /usr/local/php/php.ini
定位到 cgi.fix_pathinfo= 并将其修改为: cgi.fix_pathinfo=0
2、编辑php-fpm.conf,确保 php-fpm 模块使用www用户和 www组的身份运行。
vim /usr/local/php/etc/php-fpm.conf
找到以下内容并修改:
; Unix user/group of processes; Note: The user is mandatory. If the group is not set, the default user's group; will be used.user = wwwgroup = www
找到以下内容:
;pid = run/php-fpm.pid
将前面的“;”去掉
3、配置 Nginx 使其支持 PHP 应用:
vim /usr/local/nginx/conf/nginx.conf
(1) 修改默认的 location 块,使其支持 .php 文件:
location / {root /home/www;index index.php index.html index.htm;}
(2) 下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为下面的内容:
location ~* \.(php|php5)?$ {root /home/www;fastcgi_index index.php;fastcgi_pass 127.0.0.1:9000;include fcgi.conf;}
4、创建fcgi.conf
vim /usr/local/nginx/conf/fcgi.conf
在此文件中添加如下内容:
fastcgi_param GATEWAY_INTERFACE CGI/1.1;fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; #PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200;
六、其他 1、将 Nginx 添加到系统服务中,并设置开机启动 创建脚本文件 vim /etc/init.d/nginx 在脚本文件中添加如下内容
#!/bin/sh# nginx - this script starts and stops the nginx daemin# chkconfig: - 85 15# description: Nginx is an HTTP(S) server, HTTP(S) reverse \# proxy and IMAP/POP3 proxy server# processname: nginx# config: /usr/local/nginx/conf/nginx.conf# pidfile: /usr/local/nginx/logs/nginx.pid# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/network# Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0nginx="/usr/local/nginx/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"lockfile=/var/lock/subsys/nginxstart() {[ -x $nginx ] || exit 5[ -f $NGINX_CONF_FILE ] || exit 6echo -n $"Starting $prog: "daemon $nginx -c $NGINX_CONF_FILEretval=$?echo[ $retval -eq 0 ] && touch $lockfilereturn $retval}stop() {echo -n $"Stopping $prog: "killproc $prog -QUITretval=$?echo[ $retval -eq 0 ] && rm -f $lockfilereturn $retval}restart() {configtest || return $?stopstart}reload() {configtest || return $?echo -n $"Reloading $prog: "killproc $nginx -HUPRETVAL=$?echo}force_reload() {restart}configtest() {$nginx -t -c $NGINX_CONF_FILE}rh_status() {status $prog}rh_status_q() {rh_status >/dev/null 2>&1}case "$1" instart)rh_status_q && exit 0$1;;stop)rh_status_q || exit 0$1;;restart|configtest)$1;;reload)rh_status_q || exit 7$1;;force-reload)force_reload;;status)rh_status;;condrestart|try-restart)rh_status_q || exit 0;;*)echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"exit 2esac
设置权限
chmod 755 /etc/init.d/nginx
脚本编辑完成后,可以能够启动、停止、重载了
/etc/init.d/nginx start 启动
/etc/init.d/nginx stop 停止
/etc/init.d/nginx reload 重载
这个命令比较多,可以输入 /etc/init.d/nginx 进行查看
设置开机启动
/sbin/chkconfig nginx on
2、将 php-fpm 添加到系统服务中,并设置开机自启动
拷贝文件
cp /tmp/php-5.6.29/sapi/fpm/init.d.php-fpm.in /etc/init.d/php-fpm
设置权限
chmod 755 /etc/init.d/php-fpm
确认/usr/local/php/etc/php-fpm.conf 文件中 pid=run/php-fpm.pid 这行前面的“;”已经删除
打开脚本文件
vim /etc/init.d/php-fpm
找到并编辑以下内容
prefix=exec_prefix=php_fpm_BIN=/usr/local/php/sbin/php-fpmphp_fpm_CONF=/usr/local/php/etc/php-fpm.confphp_fpm_PID=/usr/local/php/var/run/php-fpm.pid
脚本编辑完成后,可以能够启动、停止、重载了
/etc/init.d/php-fpm start 启动
/etc/init.d/php-fpm stop 停止
/etc/init.d/php-fpm reload 重载
设置开机启动
/sbin/chkconfig php-fpm on
以上是基本的安装配置过程,在整理过程中难免有疏漏,发现问题及时改正吧。虽然运行环境
已经搭建起来了,但要投入实际使用,这些还远远不够,还有很多工作需要做。目前对这些配置文件
还有很多地方不明白,继续学习吧,加油!
------------------------------------------------------------------------------------
附上完整的nginx.conf配置文件
user www www;worker_processes 4;error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;pidlogs/nginx.pid;worker_rlimit_nofile 65535;events {use epoll; worker_connections 65535;}http {include mime.types;default_type application/octet-stream;log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';server_names_hash_bucket_size 128; client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 8m;access_log /data/logs/nginx/access.log access;sendfile on;tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 60;tcp_nodelay on;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_vary on;server {listen 80;server_name localhost;#charset koi8-r;charset utf-8;access_log /data/logs/nginx/host.access.log access;location / {root /home/www;index index.html index.htm index.php;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html# error_page 500 502 503 504 /50x.html;location = /50x.html {root /home/www;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80#location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000location ~* \.(php|php5)?$ {root /home/www;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;include fcgi.conf;}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one# #location ~ /\.ht {# deny all;#}location ~* \.(gif|jpg|jpeg|png|bmp|swf)$ {root /home/www;expires 30d;}location ~* /.(js|css)?$ {root /home/www;expires 1h;}}# another virtual host using mix of IP-, name-, and port-based configuration#server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / { # root html;# index index.html index.htm;# }#}# HTTPS server#server {# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}}
- CentOS7下安装nginx与php
- Centos7下yum安装配置nginx与php
- centos7+nginx+php安装与配置
- centos7 安装 nginx+php
- Centos7下安装Nginx
- CentOS7下安装Nginx
- centos7下nginx安装
- centos7下安装nginx
- centos7下安装nginx
- centos7下安装nginx
- centOS7下编译安装nginx-1.12.2+php-7.1.9
- CentOS7下Nginx挂载PHP
- centos7安装nginx和php
- centOS7 安装nginx+php+mysql
- centOS7 安装nginx+php+mysql
- Centos7下nginx源码安装
- centos7下nginx安装配置
- centos7下编译安装nginx
- 树
- 排序算法-选择类排序
- geoTools向shp文件中写数据
- Python中os与sys两模块的区别
- Ubuntu 安装 Python
- CentOS7下安装nginx与php
- Linux 中/var/spool/postfix/maildrop目录下堆积大量小文件
- 算法基础之字符串2
- 指令和控制器之间的交互
- nginx 重写规则,过滤某些url
- 曾经使用过的Linux命令
- OSMutex/OSCond Class
- Java RMI
- js常用正则校验