安装环境: ubuntu 16.04 php 7.2.2
php代码放置位置: /var/www
第一步:安装依赖包
nginx依赖于zlib,pcre,ssl 这三个模块,再安装nginx之前,我们必须安装这三个模块,如果已经安装,请忽略这个步骤。
wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install
wget http://exim.mirror.fr/pcre/pcre-8.38.tar.gz
tar -zxvf pcre-8.38.tar.gz
cd pcre-8.38
./configure
make && make install
wget http://distfiles.macports.org/openssl/openssl-1.0.2n.tar.gz
tar -zxvf openssl-1.0.2n.tar.gz
cd openssl-1.0.2n
./config
make && make install
第二步,安装nginx
wget http://nginx.org/download/nginx-1.13.9.tar.gz
tar -zxvf nginx-1.13.9.tar.gz
cd nginx-1.13.9
./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=/usr/local/nmp/pcre-8.38 \
--with-zlib=/usr/local/nmp/zlib-1.2.11 \
--with-openssl=/usr/local/nmp/openssl-1.0.2n
make && make install
注:--with-pcre、--with-zlib和--with-openssl的目录是源码的目录而不是安装的目录。
编译安装完成之后,启动nginx
/usr/local/nginx/nginx
查看下端口
打开浏览器,出现如下的画面,说明安装成功.
第三步,安装php
wegt http://php.net/get/php-7.2.2.tar.gz/from/a/mirror
tar -zxvf mirror
cd php-7.2.2
./configure --prefix=/usr/local/php \
--with-mysqli=mysqlnd \ (php 配置选项)
--with-pdo-mysql=mysqlnd \
--with-gd \
--enable-gd-jis-conv
--enable-fpm
make && make install
本次安装的php配置选项比较的少,如果各位看官嫌弃少的话,请自行查阅PHP文档,并自行添加或者查看下面的配置。在这里补充一个小的知识点,nginx和Apache安装是的区别
nginx: --enable-fpm => 独立进程
apache: --with-apxs2 => apache模块
php配置选项(参考):
./configure
--prefix=/usr/local/php/ \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/conf.d \
--enable-soap \
--with-openssl \
--with-mcrypt \
--with-pcre-regex \
--with-sqlite3 \
--with-zlib \
--enable-bcmath \
--with-iconv \
--with-bz2 \
--enable-calendar \
--with-curl \
--with-cdb \
--enable-dom \
--enable-exif \
--enable-fileinfo \
--enable-filter \
--with-pcre-dir \
--enable-ftp \
--with-gd \
--with-openssl-dir \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-gettext \
--with-gmp \
--with-mhash \
--enable-json \
--enable-mbstring \
--disable-mbregex \
--disable-mbregex-backtrack \
--with-libmbfl \
--with-onig \
--enable-pdo \
--with-pdo-mysql \
--with-zlib-dir \
--with-pdo-sqlite \
--with-readline \
--enable-session \
--enable-shmop \
--enable-simplexml \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-libxml-dir \
--with-xsl \
--enable-zip \
--enable-mysqlnd-compression-support \
--with-pear \
--with-mysqli \
--enable-fpm
编译安装之后,由于php是没有生成配置文件的,因此我们要在源码中拷贝一份。
cd /usr/local/php/lib
cp /usr/local/nmp/php-7.2.2/php.ini-development php.ini
错误:(由于配置的少,出现少依赖的就少,如果你在配置选项写多的话,出现的问题就不单单只有这些,到时候在自行百度)
错误一:configure: error: xml2-config not found. Please check your libxml2 installation.
解决方案:apt-get install libxml2-dev
错误二:configure: error: png.h not found.
解决方案:apt-get install libpng-dev
第四步,php与nginx
1.开启php-fpm
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
cd php-fpm.d
cp cp www.conf.default www.conf
groupadd nobody
/usr/local/php/sbin/php-fpm
开启php-fpm并不是一帆风顺的,如果缺少以上步骤是会报错的。
2.修改nginx配置(/usr/local/nginx/nginx.conf)
location / {
root /var/www/;
index index.php index.html index.htm;
}
location ~ \.php$ {
root /var/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
3.重启nginx
/usr/local/nginx/nginx -s reload(平滑升级)
4.运行如下操作,生成phpinfo页面,查看php的详情情况.
echo "<?php echo phpinfo();?>" >> /var/www/index.php
5.根据如上操作,出现了空白页的现象,这是因为nginx与php-fpm的问题所造成的,静态页面(*.html)都可以访问,但是php文件(*.php)却出现了空白页的情况,原因是nginx无法将php文件的地址传递给php-fpm去解析,造成了请求一个不存在的文件,从而造成了空白页的现象。解决方案,在/usr/local/nginx/fastcgi_params最后添加如下
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
重启nginx
/usr/local/nginx/nginx -s reload(平滑升级)
6.运行结果
第五步,安装mysql
由于mysql的源文件有点大,所以这里采用的是
apt-get install mysql-server
执行操作,根据提示填写密码即可安装成功。
----------------------------------------------------------------------------------------------------------------------------------
安装扩展
如果想添加扩展,则可以使用phpize和pcre这两种方式进行安装。
1.phpize的安装(以下是安装redis扩张的示例)
git clonehttps://github.com/phpredis/phpredis.git
cd phpredis
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
在上诉操作中,最关键的一点是--with-php-config这个是指定扩展安装在哪个php版本下,详情,请查阅文档。
安装完成之后,我们可以在/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/中看到我们安装的redis.so扩张,然后我们在配置文件/usr/local/php/lib/php.ini中进行添加如下
extension=redis.so
重启php-fpm
killall php-fpm
/usr/local/php/sbin/php-fpm
然后在phpinfo中可以查看如些结果:
错误:Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
原因:缺少m4和autoconf依赖
解决: apt-get install m4
apt-get install autoconf
2.pecl安装(以下是安装swoole扩张的示例)
例子:安装swoole扩展,进入https://pecl.php.net/网站进行查找,如下.
/usr/local/php/bin/pecl install swoole-2.1.0
extension=swoole.so
重启php-fpm
killall php-fpm
/usr/local/php/sbin/php-fpm
然后在phpinfo中可以查看如些结果: