CentOS上的Nginx+PHP7编译、安装和配置
Nginx+PHP7编译、安装和配置,写一篇文章记录一下。
系统环境:CentOS6.5 x64
软件版本:nginx-1.10.0 php-7.0.6
安装Nginx
Nginx官网:
依赖于先安装的一些组件 yum安装 pcre pcre-devel openssl openssl-devel -y
1。解压包
tar xf nginx-1.10.0.tar.gz
cd nginx-1.10.0
2。预编译配置参数
./configure --user=www \
--group=www \
--prefix=/data/server/nginx \
--with-http_stub_status_module - -不带 http 缓存 \
--with-http_ssl_module \
--with-http_gzip_static_module
3.运行编译
make && make install
4。更改配置文件
• nginx.conf
user www www;
worker_processes 1;
error_log /u01/data/log/nginx/error.log crit;
/pid/u01 server/ nginx/logs/nginx .pid;
#指定该进程可以打开的最大文件描述符的值。
worker_rlimit_nofile 65535;
events
ll;
worker_rlimit_nofile 65535;
}
http {
包括 mime.types;
default_type application/octet-stream;
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_buffer_k_header _ukuran_badan 8m;
发送活动文件;
tcp_nopush on ;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
提供大小 64k;
fastcgi_buffers 4 64k;
fastc gi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
gzip 打开;
gzip_min_length 1k;
gzip_buffers 4 16k;‾ gzip_version gzip _level 2;
gzip_types 文本/纯文本应用程序/x-javascript 文本/应用程序 css /xml;
gzip_vary on;
#limit_zone 爬虫 $binary_remote_addr 10m;
log_format main '$remote_addr - "$request_time" [$request_time" [$request_time" [$request_time''" ' $status " $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
log_format '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for "$time /; u01/alidata/ server/nginx/conf/vhosts/*.conf;
}
•虚拟主机配置文件模板
server {
Listen 8080;
; server_name index.html index.htm index.php;
root /u01/data/www;
位置 ~ .*\.(php|php5)?$
{
fastcgi_pass unix:/var/ run/php-fpm/ php-fpm.sock;
fastcgi_index index.php;
包含 fastcgi.conf;
}
位置 ~ .*\.(gif|jpg|jpeg|png| bmp|swf)$
{
过期 30 天;
}
位置 ~ .*\.(js|css)?$
{
; 过期 }
###此网站使用web 打开 lianjie 就像在 apache##
位置 / {
if (!-e $request_filename) {
rewrite ^(.*)$ /$1 end;
break;
}
}
位置 ~ /.svn/ {
拒绝全部;
}
###end##/ access_data log/nginx/access/test.log main;
}
5.提供Nginx启动脚本
#!/bin/bash
# Nginx HTTP 服务器的 nginx 启动脚本
nginxd=/alidata/server/nginx/sbin/nginx
nginx_config=/alidata/server/nginx/conf/nginx.conf
nginx_pid=/alidata /nginx/日志/nginx.pid
RETVAL=0
prog="nginx"
[ -x $nginxd ] || exit 0
# 启动nginx守护进程功能。
start() {
if [-e $nginx_pid] && netstat -tunpl | grep nginx &> /dev/null;然后
echo "nginx 正在运行..."
exit 1
fi
echo -n $"Start $prog!"
$nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && 点击 /var/lock/nginx
返回 $RETVAL
} 函数守护进程。
stop() {
echo -n $"停止$prog!"
$nginxd -s stop
RETVAL=$?
echo
= 0 [$RETVAL ] && rm - f /var/lock/nginx
}
# 重新加载 nginx 服务函数。
reload() {
echo -n $"重新加载 $prog!"
#kill - HUP `cat $ {nginx_pid}`
$nginxd -s reload
RETVAL=$?
echo
}
# 看看我们怎么称呼它。
案例“$1”在
开始)
开始
;;停止)
停止
;;
重新加载)
;重新启动;重新启动)
stop
start
;;
*)
echo $"用法:$prog {start|stop|restart|reload|help}"
退出 1
退出 $RETVAL
只需要稍微修改一下程序路径就可以直接使用了compile
yum -y install gcc gcc-c++ gcc-g77 make libtool autoconf patch unzip automake libxml2 libxml2-devel ncurses ncurses-devel libtool-ltdl-devel libmtool-ltdl-devel libmcryptdell libpng libpng- devel libjpeg-devel openssl-devel devel gd-develcurlcurl-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。安装编译依赖的图片库
jpegsrc.v6b.tar.gz
libpng-1.2.50.tar.gz
freetype-2.1.10.tar.gz
#安装jpegsrc。 v6b.tar.gz
# http://www.ijg.org/
#这里需要先创建一个文件来保存程序否则会报错
mkdir /usr/local/{ bin ,lib ,include,man/man1} -pv
tar xf jpegsrc.v6b.tar.gz
cd jpeg-6b/
./configure --prefix=/usr/local/
make && make install
# 安装 libpng-1.2.50.tar.gz
# http://www .libpng.org/pub/png/libpng.html
tar xf libpng-1.2.50.tar.gz
cd libpng-1.2.50
./configure --prefix=/usr/local/
make && make install
# 安装 freetype-2.1.10.tar.gz
# https://www.freetype.org/download.html
tar xf freetype-2.1.10.tar .gz
cd freetype-2.1.10
./configure --prefix=/usr/local//
make && make install
3.编译配置参数
./configure - -prefix=/usr/local/php7 \
--enable-opcache \
--with-config-file-path=/usr/local/php7 /etc \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-fpm \ - static \
--enable-inline-optimization \
--enable-sockets \
--enable-wddx \
--enable-zip \
--enable-calendar \
-- with-gd \
--with-iconv \
--with-openssl \
--with-zlib \
--enable-bcmath \
--enable -soap \
--with- xmlrpc \
--enable-mbstring \
--enable-shared \
--with-curl \
--enable-xml \
--enable-ftp \
--with-mcrypt \
--with-mhash \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-session \
--with-gettext \
--with-freetype-dir=/usr/local/ \
--with -jpeg-dir=/usr/local/ \
--with-png-dir=/usr/local/ \
--disable-ipv6 \
--disable-debug \
- -disable-maintainer-zts \
--disable-rpath \
--disable-fileinfo \
--without-gdbm \
4。执行编译
make && make install? memcache 扩展库
zend_extension=opcache.so
extension=memcache.so
#第722行左右 - 设置PHP扩展库路径
extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/"
# 不在http header中暴露PHP信息
expose_php = Off
# PHP调用mysql时不显示错误信息
display_errors = Off
# 启用PHP错误日志(已配置路径)
log_errors = On
# 设置 PHP 时区
date.timezone = PRC
# 启用 opcache(第 1733 行左右)
opcache.# PHP 脚本允许目录访问
# open_basedir = /usr/share/nginx/html;
6。 php-fpm 配置
• 处理服务的主配置文件
# 设置错误日志路径
error_log = /var /log/php-fpm/error.log
# 导入配置中的配置file
include =/usr/local/php7/etc/*.conf
# ����设置主进程号打开的最大文件
rlimit_files = 102400
• 进程服务扩展配置文件
# 设置用户和组用户
user = www
group = www
# 设置php监听模式
# Listen = 127.0.0.1:9000
# 注意需要设置PHP socket文件权限在这里。默认是root,Nginx无法访问它。
listen = /var/run/php-fpm/php-fpm.sock
#启用慢日志
slowlog = /var/log/php-fpm/php-slow.log
request_slowlog_timeout = 10s
request_terminate_timeout = 30
#设置工作进程数(根据实际情况调整)
pm.max_children = 50
# 这里需要注意的是不能小于 pm.min_spare_servers
= 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests40 = 10个php会话目录(针对用户组用户是 www)
php_value[] = files
php_value[] = /var/tmp/php/session
7.提供php-fpm启动脚本
#! /bin/ sh
#
prefix=/usr/local/php7
exec_prefix=${前缀}
php_fpm_BIN=${exec_prefix}/sbin/php-fpm前缀}/etc/
php_fpm_PID=${前缀}/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"
() {wait_pid
尝试= 0
同时尝试 $try -lt 35 ; do
case "$1" in
'made')
if [ -f "$2" ] ;然后
try=''
中断
fi
;;
'已删除')
if [ ! -f“$2”];然后
try=''
休息
fi
;;
esac
echo -n .
try=`expr $sleep`
完成
}
case "$1" in
start)
echo -n "启动 php-fpm "
$php_fpm_BIN --daemonize $php [$? " != 0 ] ; 然后
echo "失败"
退出 1
fi
wait_for_pid 创建了 $php_fpm_PID
if [-n "$try" ] ;然后
echo “失败”
退出 1
else
echo “完成”
fi
;;
stop)
die fpm "
if [ ! -r $php_fpm_PID ]; 然后
echo“警告,未找到 pid 文件 - php-fpm 未运行?”
exit 1
fi
Kill -QUIT `cat $php_fpm_PID`
wait_f_pm_wait $php_f_pid if [-n "$try"] ; then
echo "失败。使用强制退出"
exit 1
else
echo "done"
fi
;;
status) -r $php_fpm_PID ]; then
echo " php-fpm 已停止"
exit 0
fi
PID=`cat $php_fpm_PID`
if ps -p $PID | grep -q $PID; then
echo "php-fpm (pid $PID) 正在运行..."
else
echo "php-fpm 已关闭,但 pid 文件在那里"
fi
;;
强制退出)
echo -n "拒绝 php-fpm "
if [ ! -r $php_fpm_PID ]; then
echo "警告,未找到 pid 文件 - php-fpm 未运行?"
退出 1
fi
kill -TERM `cat $php_fpm_PID`
wait_for_pid 已删除 $php_fpm_PID
if [ -n "$try" ] ;然后
echo “失败”
退出 1
else
echo “完成”
fi
;;重新启动)
$0 停止 $0 停止 ;; 重新加载)
echo -n "重新加载 php -fpm 服务"
if [ ! -r $php_fpm_PID ];然后
echo“警告,未找到 pid 文件 - php-fpm 未运行?”
exit 1
fi
kill - USR2 `cat $php_fpm_PID`
;;
*)
echo "用法: $0 {start|stop|force-off|reload|status}"
exit 1
;;
esac8 .启动程序 php-fpm
/etc/init.d/php-fpm start
#修改socket文件权限
chown -R www.www /var/run/php-fpm/
9 .相关错误处理
错误一:配置:错误:GD构建测试失败。详情请查看config.log
本地已经可用安装完gd和gd-devel库后,错误依然存在,那么可能是编译工具找不到对应的库(jpeg、gd),需要在编译参数后添加LDFLAGS = '-L /usr/path_to/lib'。对于64位系统,必须写成:LDFLAGS='-L/usr/lib64',然后重新配置。
#示例
./configure --prefix=/usr/server/php --enable-opcache --enable-opcache --enable-opcache --with-mysqli=mysqlnd --with-mysqli=mysqlnd LDFLAGS='-L /usr/库64'
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网