系统版本:centos6.4最小化

网络环境:无网络,本地yum源

编译环境:yum -y groupinstall "Development tools" "Server Platform Development"

nginx:nginx-1.10.0.tar.gz


tar xf nginx-1.10.0.tar.gz

cd nginx-1.10.0

./configure --prefix=/usr/local/nginx \

--sbin-path=/usr/sbin/nginx \

--conf-path=/etc/nginx/nginx.conf \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx/nginx.lock \

--user=nginx \

--group=nginx \

--with-http_ssl_module \

--with-http_flv_module \

--with-http_stub_status_module \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/tmp/nginx/client/ \

--http-proxy-temp-path=/var/tmp/nginx/proxy \

--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi/ \

--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \

--http-scgi-temp-path=/var/tmp/nginx/scgi \

--with-pcre

报错如下:

./configure: error: the HTTP rewrite module requires the PCRE library.

You can either disable the module by using --without-http_rewrite_module

option, or install the PCRE library into the system, or build the PCRE library

statically from the source with nginx by using --with-pcre=<path> option.

查看系统中的pcre库

[root@huang nginx-1.10.0]# rpm -qa *pcre*

pcre-7.8-6.el6.x86_64

于是

[root@huang ~]# yum -y install pcre-devel-7.8-6.el6.x86_64.rpm

然后重新编译configure

成功解决报错问题

make && make install


mysql:mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz


[root@huang ~]# tar xf mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz -C /usr/local/

[root@huang ~]# cd /usr/local/

[root@huang local]# ls

bin  etc  games  include  lib  lib64  libexec  mysql-5.6.30-linux-glibc2.5-x86_64  nginx  sbin  share  src

[root@huang local]# ln -sv mysql-5.6.30-linux-glibc2.5-x86_64/ /usr/local/mysql

"/usr/local/mysql" -> "mysql-5.6.30-linux-glibc2.5-x86_64/"


[root@huang local]# groupadd -r mysql

[root@huang local]# useradd -g mysql -r -s /sbin/nologin -M mysql

[root@huang local]# id mysql

uid=498(mysql) gid=498(mysql) 组=498(mysql)

[root@huang local]# mkdir /mydata/data -pv

mkdir: 已创建目录 "/mydata"

mkdir: 已创建目录 "/mydata/data"

[root@huang local]# chown -R mysql:mysql /mydata/data/

[root@huang local]# cd /usr/local/mysql

[root@huang mysql]# chown -R root:mysql ./*

[root@huang mysql]# rm -f /etc/my.cnf

[root@huang mysql]# scripts/mysql_install_db --user=mysql --data=/mydata/data/

简单修改下my.cnf,添加如下:

datadir = /mydata/data

socket = /tmp/mysql.sock

innodb_file_per_table = on

[root@huang mysql]# cp support-files/mysql.server /etc/init.d/mysqld

[root@huang mysql]# vi /etc/profile.d/mysql.sh

添加如下:

export PATH=$PATH:/usr/local/mysql/bin

[root@huang mysql]# . /etc/profile.d/mysql.sh

[root@huang mysql]# chkconfig --add mysqld

[root@huang mysql]# chkconfig mysqld on

[root@huang mysql]# service mysqld start

Starting MySQL... SUCCESS! 

[root@huang mysql]# mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.6.30 MySQL Community Server (GPL)


Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> 


vi /etc/ld.so.conf.d/mysql.conf:导出一下mysql库文件

添加/usr/local/mysql/lib

ldconfig -v:生效

导出mysql的头文件include:

ln -sv /usr/local/mysql/include /usr/include/mysql


php:php-5.5.34.tar.gz

[root@huang php-5.5.34]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sysvshm --enable-sockets --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl --with-mhash --with-mcrypt

提示错误如下:

configure: error: xml2-config not found. Please check your libxml2 installation.

检查系统版本:

[root@huang php-5.5.34]# rpm -qa *libxml2*

libxml2-2.7.6-8.el6_3.4.x86_64

于是:

[root@huang Packages]# yum -y install libxml2-devel-2.7.6-8.el6_3.4.x86_64.rpm

继续

[root@huang php-5.5.34]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sysvshm --enable-sockets --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl --with-mhash --with-mcrypt

继续报错如下:

configure: error: Please reinstall the BZip2 distribution

检查系统版本

[root@huang php-5.5.34]# rpm -qa *bzip*

bzip2-libs-1.0.5-7.el6_0.x86_64

bzip2-1.0.5-7.el6_0.x86_64

于是:

[root@huang Packages]# yum -y install bzip2-devel-1.0.5-7.el6_0.x86_64.rpm

继续

[root@huang php-5.5.34]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sysvshm --enable-sockets --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl --with-mhash --with-mcrypt

继续报错如下:

configure: error: Please reinstall the libcurl distribution -

    easy.h should be in <curl-dir>/include/curl/

解决:

[root@huang Packages]# yum -y install libcurl-devel-7.19.7-35.el6.x86_64.rpm

继续

[root@huang php-5.5.34]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sysvshm --enable-sockets --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl --with-mhash --with-mcrypt

继续报错如下:

configure: error: mcrypt.h not found. Please reinstall libmcrypt.

解决:

tar xf libmcrypt-2.5.7.tar.gz

cd libmcrypt-2.5.7

./configure --prefix=/app/libs/

make && make install

vi /etc/ld.so.conf

添加:

/app/libs/lib

ldconfig -v


继续configure

[root@huang php-5.5.34]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --enable-sysvshm --enable-sockets --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl --with-mhash --with-mcrypt

将--with-mcrypt改为--with-mcrypt=/app/libs

于是成功编译完成,接下来

make && make install


为php提供配置文件:

cp php.ini-production /etc/php.ini


为php-fpm提供脚本,并添加到服务列表,生成自启动项

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm脚本在源代码编译目录下

chmod +x /etc/init.d/php-fpm

chkconfig --add php-fpm

chkconfig php-fpm on



为php-fpm提供配置文件

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf


编辑php-fpm.conf配置文件:(配置文件也有错误日志的定义)

配置fpm相关的选项为你所需要的值,并启用pid文件

pm.max_children = 50(最大子进程个数)

pm.start_servers = 5(刚开始启动的进程数)

pm.min_spare_servers = 2

pm.max_spare_servers = 8

pid = /usr/local/php/var/run/php-fpm.pid

service php-fpm start

整合nginx和php-fpm:启用如下

1、编辑/etc/nginx/nginx.conf,启用入戏选项

location ~ \.php$ {

root  html;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index   index.php;

fastcgi_param   SCRIPT_FILENAME   /scripts$fastcgi_script_name;

include         fastcgi_params;

}

2、编辑/etc/nginx/fastcgi_params,将其内容更改为如下:

fastcgi_param GATEWAY_INTERFACE       CGI/1.1;cgi接口common gateway interface

fastcgi_param SERVER_SOFTWARE nginx;服务器端的软件程序

fastcgi_param QUERY_STRING $query_string;

fastcgi_param REQUEST_METHOD $request_method;

fastcgi_param CONTENT_TYPE $content_type;

fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

fastcgi_param REQUEST_URI $request_uri;

fastcgi_param DOCUMENT_URI         $document_uri;

fastcgi_param DOCUMENT_ROOT $document_root;

fastcgi_param SERVER_PROTOCOL $server_protocol;

fastcgi_param REMOTE_ADDR $remote_addr;

fastcgi_param REMOTE_PORT $remote_port;

fastcgi_param SERVER_ADDR $server_addr;

fastcgi_param SERVER_PORT $server_port;

fastcgi_param SERVER_NAME $server_name;

并在所支持的主页面格式中添加php格式的主页

location / {

root   html;

index index.php index.html index.htm;

}

平滑启动nginx:

编辑下面的php测试页面:

vi index.php

<?php

phpinfo();

?>

至此lnmp环境搭建完成