lnmp源码编译安装以及安装php扩展

安装环境: 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.

原因:缺少m4autoconf依赖

解决: 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
执行上面操作,就能安装swoole 2.1.0版本的扩展,pecl会自动编译安装,安装好的扩张也在/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/下面。我们需要在配置文件中添加
extension=swoole.so

重启php-fpm 

killall php-fpm  
/usr/local/php/sbin/php-fpm

然后在phpinfo中可以查看如些结果:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值