阅读 109

LNMP应用环境搭建 二(FastCGI接口的介绍与PHP安装)

CGI中文全称是“通用网关接口”,用于HTTP服务器与其他机器上的程序服务通信交流的一种工具,CGI必须运行在网络服务器上。

FastCGI是一个可伸缩的、高速的在HTTP服务器和动态脚本语言间通信的接口(在Linux环境下,FastCGI接口即为socket,这个socket可以是文件socket,也可以是IP socket),主要优点是把动态语言和HTTP服务器分离开来。多数流行的服务器都支持FastCGI,包括Apache、Nginx等。

在安装PHP之前首先检查端口及启动情况

[root@web1 nginx]# netstat -lntup|grep -E "80|3306"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6141/nginx: master
tcp6 0 0 :::3306 :::* LISTEN 3925/mysqld

PHP程序在开发及运行时会调用诸如zlib,gd 等函数库,因此需要确认lib库是否已经安装

[root@web1 mysql]# rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
zlib-devel-1.2.7-19.el7_9.x86_64   #只有这一个安装了,其他的都没有,需安装
[root@web1 mysql]# rpm -qa freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

[root@web1 mysql]# yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y     #省略掉安装信息

[root@web1 mysql]# yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y  #省略掉安装信息

[root@web1 mysql]# rpm -qa freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel     #检查我们安装的包
libxslt-devel-1.1.28-6.el7.x86_64
libcurl-devel-7.29.0-59.el7_9.1.x86_64
libpng-devel-1.5.13-8.el7.x86_64
gd-devel-2.0.35-27.el7_9.x86_64
freetype-devel-2.8-14.el7_9.1.x86_64
[root@web1 mysql]# rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel
libjpeg-turbo-devel-1.2.90-8.el7.x86_64
libxml2-devel-2.9.1-6.el7.5.x86_64
zlib-devel-1.2.7-19.el7_9.x86_64

检查发现只有libiconv-devel这个包没有安装,因为默认的yum源中没有这个包,我们需要借助其他的包来安装。

[root@web1 mysql]# mkdir -p /home/wangju/tools   #创建文件存放路径

[root@web1 mysql]# cd /home/wangju/tools

[root@web1 tools]# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz    #下载的过程很慢

[root@web1 tools]# ls
libiconv-1.16.tar.gz mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz nginx-1.16.0 nginx-1.16.0.tar.gz
[root@web1 tools]# tar zxf libiconv-1.16.tar.gz   #解压下载的文件

[root@web1 tools]# cd libiconv-1.16

[root@web1 libiconv-1.16]# ./configure --prefix=/application/libiconv

[root@web1 libiconv-1.16]# make

[root@web1 libiconv-1.16]# make install     #安装libiconv,省略过程

[root@web1 libiconv-1.16]# cd ../

接下来我们还要安装libmcrypt库,由于默认的centos yum源里面没有libmcrypt-devel,因此,需要先配置EPEL第三方yum源

[root@web1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

然后使用yum安装libmcrypt

[root@web1 ~]# yum install libmcrypt-devel -y      #安装过程省略

[root@web1 ~]# rpm -qa libmcrypt-devel    #安装成功
libmcrypt-devel-2.5.8-13.el7.x86_64

再安装Mhash、Mcrypt加密扩展库

[root@web1 ~]# yum install mhash mcrypt -y     #安装过程省略

[root@web1 ~]# rpm -qa mhash  mcrypt
mhash-0.9.9.9-10.el7.x86_64       #安装成功

mcrypt-2.6.8-11.el7.x86_64

到这里我们就要开始安装PHP(FastCGI方式)服务

首先获取软件包,利用wget下载

[root@web1 ~]# cd /home/wangju/tools

[root@web1 tools]# wget -q http://mirrors.sohu.com/php/php-7.3.5.tar.gz

[root@web1 tools]# echo $?

0

[root@web1 tools]# tar xf php-7.3.5.tar.gz

[root@web1 tools]# cd php-7.3.5/

[root@web1 php-7.3.5]# ./configure \     #完整的编译参数
> --prefix=/application/php7.3.5 \       #指定PHP的安装路径为/application/php7.3.5 \
> --enable-mysqlnd \    #使用PHP包里自带的MySQL相关软件包
> --with-mysqli=mysqlnd \
> --with-pdo-mysql=mysqlnd \
> --with-iconv-dir=/application/libiconv \
> --with-freetype-dir \
> --with-jpeg-dir \
> --with-png-dir \
> --with-zlib \
> --with-libxml-dir=/usr \
> --enable-xml \
> --disable-rpath \
> --enable-bcmath \
> --enable-shmop \
> --enable-sysvsem \
> --enable-inline-optimization \
> --with-curl \
> --enable-mbregex \
> --enable-fpm \             #表示激活PHP-FPM的方式服务,即以FastCGIF方式运行PHP
> --enable-mbstring \
> --with-gd \
> --with-openssl \
> --with-mhash \
> --enable-pcntl \
> --enable-sockets \
> --with-xmlrpc \
> --enable-soap \
> --enable-short-tags \
> --enable-static \
> --with-xsl \
> --with-fpm-user=nginx \         #Nginx表示指定PHP-FPM进程管理的组为Nginx,此处最好和Nginx服务用户组统一
> --with-fpm-group=nginx \
> --enable-ftp \
> --enable-opcache=no     #输入结束后回车,等待检查,检查结束如下图所示,我们在输入参数的时候每行换行符(\)之后不能在有任何字符,包括空格。

 

 

 现在我们准备编译安装PHP

[root@web1 php-7.3.5]#  make

这边的过程很多,只截取了部分

[root@web1 php-7.3.5]# echo $?    #检查发现上面的命令执行成功
0

[root@web1 php-7.3.5]# make install      #安装PHP

Wrote PEAR system config file at: /application/php7.3.5/etc/pear.conf
You may want to add: /application/php7.3.5/lib/php to your php.ini include_path
/home/wangju/tools/php-7.3.5/build/shtool install -c ext/phar/phar.phar /application/php7.3.5/bin
ln -s -f phar.phar /application/php7.3.5/bin/phar
Installing PDO headers: /application/php7.3.5/include/php/ext/pdo/      #部分过程省略

[root@web1 php-7.3.5]# echo $?    #检查发现安装成功
0

配置PHP引擎配置文件php.ini

[root@web1 php-7.3.5]# ln -s /application/php7.3.5/ /application/php     #设置软连接方便访问
[root@web1 php-7.3.5]# ls /application/php/
bin etc include lib php sbin var
[root@web1 php-7.3.5]# ls -l php.ini-*      #查看PHP的配置文件
-rw-r--r-- 1 user user 71648 4月 30 2019 php.ini-development
-rw-r--r-- 1 user user 71920 4月 30 2019 php.ini-production
[root@web1 php-7.3.5]# cp php.ini-development /application/php/lib/php.ini      #拷贝PHP配置文件到PHP的默认目录,并更改文件名为php.ini
[root@web1 php-7.3.5]# ls -l /application/php/lib/php.ini
-rw-r--r-- 1 root root 71648 7月 3 09:12 /application/php/lib/php.ini

 配置PHP服务(FastCGI模式)配置文件php-fpm.conf

[root@web1 php-7.3.5]# cd /application/php/etc/
[root@web1 etc]# ls
pear.conf php-fpm.conf.default php-fpm.d
[root@web1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@web1 etc]# cp php-fpm.d/www.conf.default php-fpm.d/www.conf     #这个是特殊的包含文件,必须要有,否则后面会报错

启动PHP服务(FastCGI模式)

[root@web1 etc]# /application/php/sbin/php-fpm    #启动PHP服务php-fpm
[root@web1 etc]# netstat -lntup|grep 9000   #查看php-fpm进程及端口的启动情况
tcp         0   0 127.0.0.1:9000    0.0.0.0:*    LISTEN   20836/php-fpm: mast

配置Nginx以支持PHP程序请求访问

[root@web1 etc]# cd /application/nginx/conf     
[root@web1 conf]# cat -n nginx.conf    #查看Nginx的配置文件
1 worker_processes 1;
2 error_log logs/error.log;
3 events {
4 worker_connections 1024;
5 }
6 http {
7 include mime.types;
8 default_type application/octet-stream;
9 sendfile on;
10 keepalive_timeout 65;
11 log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
12 ‘$status $body_bytes_sent "$http_referer" ‘
13 ‘"$http_user_agent" "$http_x_forwarded_for"‘;
14
15 include extra/01_www.conf;
16 include extra/02_bbs.conf;
17 include extra/03_blog.conf;
18 include extra/04_status.conf;
19 }

[root@web1 conf]# vim extra/03_blog.conf  #在这里在03_blog.conf 文件中配置PHP的程序解析

[root@web1 conf]# cat extra/03_blog.conf    #
server {
listen 80;
server_name blog.etiantian.org;
location / {
root html/blog;
index index.html index.htm;
}
location ~ .*\.(php|php5)?$ {
root html/blog;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}

配置完成后检查并启动Nginx

[root@web1 conf]# nginx -t
nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
[root@web1 conf]# nginx -s reload

到这里我们就可以测试LNMP环境生效的情况,首先测试Nginx

[root@web1 conf]# echo "" > ../html/blog/test_info.php   #PHP配置信息的简单文件代码
[root@web1 conf]# cat ../html/blog/test_info.php

[root@web1 conf]# cat /etc/hosts   #确保文件能够解析
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.23.110 www.etiantian.org bbs.etiantian.org blog.etiantian.org etiantian.org status.etiantian.org
[root@web1 conf]# ping blog.etiantian.org    #做ping通测试
PING www.etiantian.org (192.168.23.110) 56(84) bytes of data.
64 bytes from www.etiantian.org (192.168.23.110): icmp_seq=1 ttl=64 time=0.100 ms
64 bytes from www.etiantian.org (192.168.23.110): icmp_seq=2 ttl=64 time=0.080 ms

在浏览器中访问http://blog.etiantian.org/test_info.php,即可得下图的界面,表明Nginx配合PHP解析已经正常,然后可以删除文件test_info.php

 

 

 针对Nginx请求访问PHP,然后PHP连接MySQL的情况进行测试

[root@web1 conf]# vim ../html/blog/test_mysql.php

[root@web1 conf]# /application/php/bin/php ../html/blog/test_mysql.php     #服务器本地测试
mysql successful by wangju.

现在访问网站http://blog.etiantian.org/test_mysql.php,也可看到同样的效果

 

 

 

 

 

 至此,LNMP 的组合已经基本搭建完毕!!!(*^▽^*)(*^▽^*)

 

原文:https://www.cnblogs.com/luncy/p/14965829.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐