鲲鹏服务器安装php7
安装依赖yum install perl* httpd-devel libxml2-devel openssl openssl-devel curl curl-devel libjpeg libjpeg-devel freetype freetype-devel libpng libpng-devel libxslt libxslt-devel pcre pcre-devel bzip2 bzip
·
- 安装依赖
yum install perl* httpd-devel libxml2-devel openssl openssl-devel curl curl-devel libjpeg libjpeg-devel freetype freetype-devel libpng libpng-devel libxslt libxslt-devel pcre pcre-devel bzip2 bzip2-devel httpd-devel libzip libzip-devel -y
- 获取安装包,解压后进入安装目录
cd /usr/local/src wget https://www.php.net/distributions/php-7.2.13.tar.gz tar -zxvf php-7.2.13.tar.gz && cd php-7.2.13
- 生成makefile文件,如果遇到错误,一般是找不到对应的依赖,根据提示使用yum安装对应依赖即可
./configure --prefix=/usr/local/php --exec-prefix=/usr/local/php --bindir=/usr/local/php/bin --sbindir=/usr/local/php/sbin --includedir=/usr/local/php/include --libdir=/usr/local/php/lib/php --mandir=/usr/local/php/php/man --with-config-file-path=/usr/local/php/etc --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mhash --with-openssl --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-gd --with-jpeg-dir --with-png-dir --with-iconv --with-zlib --enable-zip --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-freetype-dir --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --without-gdbm --enable-fileinfo --with-apxs2=/usr/bin/apxs --disable-fileinfo
- 编译安装
make -j4 && make install
- 建立软链接,测试是否安装成功
ln -s /usr/local/php/sbin/php-fpm /usr/local/bin ln -s /usr/local/php/bin/php /usr/bin/php php -v
- 设置配置文件,启动php-fpm
1,在php安装包的解压目录下将php.ini文件复制到php安装目录的etc目录下(这是在编译安装php时指定的配置目录) cp /usr/local/src/php-7.2.13/php.ini-production /usr/local/php/etc/php.ini 2,在/usr/local/php/etc目录下新建php-fpm.conf配置文件,具体内容如下: [global] pid = /usr/local/php/var/run/php-fpm.pid #指定php-fpm运行的pid文件路径 error_log = /usr/local/php/var/log/php-fpm.log #指定php-fpm运行的错误日志路径 log_level = notice #错误级别 [www] listen = /tmp/php-cgi.sock #这个地方在nginx.conf配置反向代理时很重要 listen.backlog = 8192 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www pm = dynamic #指定php-fpm运行时动态管理子进程 pm.status_path = /phpfpm_72_status pm.max_children = 300 #最大运行的子进程数 pm.start_servers = 20 #以动态方式运行时初始创建的子进程数 pm.min_spare_servers = 20 #以动态方式运行时最小空闲的子进程数 pm.max_spare_servers = 300 #以动态方式运行时最大空闲的子进程数 request_terminate_timeout = 100 request_slowlog_timeout = 30 slowlog = var/log/slow.log 3,将php-fpm做成服务方式,在/etc/init.d目录下新建php-fpm的shell文件,内容如下: #! /bin/sh ### BEGIN INIT INFO # Provides: php-fpm # Required-Start: $remote_fs $network # Required-Stop: $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts php-fpm # Description: starts the PHP FastCGI Process Manager daemon ### END INIT INFO prefix=/usr/local/php #指定php安装的目录 exec_prefix=${prefix} php_fpm_BIN=${exec_prefix}/sbin/php-fpm #指定php-fpm的二进制启动文件 php_fpm_CONF=${prefix}/etc/php-fpm.conf #指定php-fpm的配置文件 php_fpm_PID=${prefix}/var/run/php-fpm.pid #指定php-fpm的pid文件 php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID" wait_for_pid () { try=0 while test $try -lt 35 ; do case "$1" in 'created') if [ -f "$2" ] ; then try='' break fi ;; 'removed') if [ ! -f "$2" ] ; then try='' break fi ;; esac echo -n . try=`expr $try + 1` sleep 1 done } case "$1" in start) echo -n "Starting php-fpm " $php_fpm_BIN --daemonize $php_opts if [ "$?" != 0 ] ; then echo " failed" exit 1 fi wait_for_pid created $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; stop) echo -n "Gracefully shutting down php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -QUIT `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed. Use force-quit" exit 1 else echo " done" fi ;; status) if [ ! -r $php_fpm_PID ] ; then echo "php-fpm is stopped" exit 0 fi PID=`cat $php_fpm_PID` if ps -p $PID | grep -q $PID; then echo "php-fpm (pid $PID) is running..." else echo "php-fpm dead but pid file exists" fi ;; force-quit) echo -n "Terminating php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -TERM `cat $php_fpm_PID` wait_for_pid removed $php_fpm_PID if [ -n "$try" ] ; then echo " failed" exit 1 else echo " done" fi ;; restart) $0 stop $0 start ;; reload) echo -n "Reload service php-fpm " if [ ! -r $php_fpm_PID ] ; then echo "warning, no pid file found - php-fpm is not running ?" exit 1 fi kill -USR2 `cat $php_fpm_PID` echo " done" ;; configtest) $php_fpm_BIN -t ;; *) echo "Usage: $0 {start|stop|force-quit|restart|reload|status|configtest}" exit 1 ;; esac 4,给予相应的执行权限,将服务添加到列表,并测试是否成功 chmod a+x /etc/init.d/php-fpm chkconfig --add /etc/init.d/php-fpm service php-fpm start service php-fpm stop 5,设置php-fpm开机启动 chkconfig php-fpm on
- nginx反向代理php-fpm
1,在根目录新建www目录,在www目录下新建nsxt目录以及wwwlogs目录,在nsxt目录下新增index.php文件,index.php文件里就输出phpinfo() mkdir -p /www/nsxt /www/wwwlogs vi /www/nsxt/index.php chown -R www:www /www chmod -R 755 /www 2,在nginx的配置文件nginx.conf中新增一个server,内容如下 server { listen 80; server_name localhost; index index.php index.html index.htm default.php default.htm default.html; root /www/nsxt; #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; #SSL-END #ERROR-PAGE-START 错误页配置,可以注释、删除或修改 #error_page 404 /404.html; #error_page 502 /502.html; #ERROR-PAGE-END #PHP-INFO-START PHP引用配置,可以注释或修改 location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; #与php-fpm通信的sock,只有nginx和php-fpm都运行在同一台服务器才能以此方式运行 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 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_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 REQUEST_SCHEME $scheme; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 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; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; } #PHP-INFO-END #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效 location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; } } #REWRITE-END #禁止访问的文件或目录 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; } #一键申请SSL证书验证目录相关设置 location ~ \.well-known{ allow all; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log off; access_log /dev/null; } location ~ .*\.(js|css)?$ { expires 12h; error_log off; access_log /dev/null; } access_log /www/wwwlogs/nsxt.log; error_log /www/wwwlogs/nsxt.error.log; } 3,重启nginx,访问指定地址页面,如果正确输出phpinfo的信息则表示成功 service nginx restart
更多推荐
已为社区贡献8条内容
所有评论(0)