经验之谈——源码编译配置lnmp环境

0.默认环境

已经安装好了make、gcc、g++等基本编译工具。
如果未安装
在Ubuntu下,使用如下命令

 apt-get install build-essential
 apt-get install libtool

在centos下,使用如下命令

 安装make:
 yum -y install gcc automake autoconf libtool make
 安装g++:
 yum install gcc gcc-c++

1.选定源码目录

你开心就好,随便选一个,只要不会因为误操作导致系统启动不了就行,
这里我选择的是/usr/local/src(不知道是不是我选的路径太棒了,几乎每一步操作都要加上sudo,不然就会出现permission denied)

 cd usr/local/src

2.安装PCRE库(2~4步骤根据需求选择)

(一下步骤的版本选择同这一步)ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载你想要的版本(有一点得注意,如果你选择pcre2-xxx版本的话,在nginx编译的时候会提示找不到pcre.h文件,暂时没有找到解决办法,所以我安装的是pcre-xxxx版本的),使用下面命令下载编译和安装 PCRE 包:

 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-             8.34.tar.gz 
 tar -zxvf pcre-8.34.tar.gz
 cd pcre-8.34
 ./configure
 make
 make install

你可以先到ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre看一下想要哪个版本,再把链接换成相应的版本号,上面的是pcre-8.34版tar.gz文件,如果选择bz2格式的文件是无法用tar解压的,你执行tar -zxvf pcre-8.34.tar.gz这个命令会报错。

3.安装zlib库

 cd /usr/local/src
 wget http://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

4.安装ssl

这一步在Ubuntu和centos上有软件源,安装openssl或按下面(不需要编译)

 cd /usr/local/src
 wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
 tar -zxvf openssl-1.0.1c.tar.gz

5.安装nginx

 cd /usr/local/src
 wget http://nginx.org/download/nginx-1.12.1.tar.gz
 tar -zxvf nginx-1.12.1.tar.gz
 cd nginx-1.12.1

 ./configure --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/src/pcre-8.34 \
 --with-zlib=/usr/local/src/zlib-1.2.11 \
 --with-openssl=/usr/local/src/openssl-1.0.1c

 make
 make install

把pcre-xxx等指令换成你选择的版本号
编译的configure选项可以参考《Nginx安装》的底部
如果我没记错,到这里nginx就安装完了
如果选择和我相同的安装路径,使用如下命令就能启动nginx

 sudo /usr/local/nginx/nginx

打开http://localhost就能看到欢迎页了

6.安装php-fpm

简单省事的方法在Ubuntu16.04与centos7上的软件源都有php7.0,直接安装,或者使用如下命令编译源码安装。
首先,来装一波库,不然等会执行configure时总是会失败的。
Ubuntu下

 sudo apt-get install make bison flex gcc patch autoconf subversion locate  
 sudo apt-get install libxml2-dev libbz2-dev libpcre3-dev libssl-dev zlib1g-dev libmcrypt-dev libmhash-dev libmhash2 libcurl4-openssl-dev libpq-dev libpq5 libsyck0-dev

centos下(暂时没试,不知道会不会缺库)

开始安装php7(php5的操作类似,不过5.4以下可能得再安装相应的补丁)

 wget http://hk1.php.net/get/php-7.0.22.tar.gz/from/this/mirror
 tar zvxf php-7.0.22.tar.gz
 cd php-7.0.22
 
 ./configure --prefix=/usr/local/php  --enable-fpm --with-mcrypt \
 --enable-mbstring --disable-pdo --with-curl --disable-debug  --disable-rpath \
 --enable-inline-optimization --with-bz2  --with-zlib --enable-sockets \
 --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
 --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \
 --with-gd --with-jpeg-dir

 make all install

这里我使用的是香港的镜像,你可以到官网寻找适合自己的镜像(早上还用的是大陆的镜像,刚刚去看发现没了)
这一步会比较慢,你可以使用make -j n指令,(n代表你想要用的cpu核数),比如我是4核的cpu,嫌弃编译慢的话,可以使用make all install -j 4来加速编译(以上几个步骤用到make的地方同样适用,不过存在依赖比较多的情况下还是单核编译比较好)

配置php

 cp php.ini-development /usr/local/php/php.ini
 cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
 cp sbin/fpm/php-fpm /usr/local/bin

第三行命令中,官方文档是cp sbin/fpm/php-fpm /usr/local/bin,但是我安装的php下没有asbin,而是在sbin中。
php7默认使用的user与grounp是www-data,你可以使用如下操作修改

vim /usr/local/etc/php-fpm.conf

通过/usr/local/bin/php-fpm来启动php-fpm
停止php-fpm使用/usr/local/bin/php-fpm -s stop来停止

配置nginx

 vim /usr/local/nginx/conf/nginx.conf
 修改默认的 location 块,使其支持 .php 文件:

 location / {
	 root   html;
     index  index.php index.html index.htm;
 }

下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为下面的内容:

 location ~* \.php$ {
     fastcgi_index   index.php;
     fastcgi_pass    127.0.0.1:9000;
     include         fastcgi_params;
     fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
     fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
 }

重启 Nginx。

 sudo /usr/local/nginx/sbin/nginx -s stop
 sudo /usr/local/nginx/sbin/nginx

创建测试文件。

 rm /usr/local/nginx/html/index.html
 echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php

再进入http://localhost/index.php或者http://yourip/index.php就能成功看到你的php信息了

posted @ 2017-08-07 17:45  ZackBee  阅读(291)  评论(0编辑  收藏  举报