经验之谈——源码编译配置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信息了