手动编译安装LNMP

准备1、安装编译器gcc

一般VPS都是最小化安装的,没有安装编译器
# yum -y update
# yum -y install gcc gcc-c++ automake
# yum install -y openssl-devel

这一步只所以没有用源码装,试因为GCC牵扯到很多关联模块,并和系统kernel有关,搞得不好,VPS就无法使用了,所以不建议去编译GCC
在这里只给出yum的安装方式,如果有童鞋有兴趣研究GCC的编译方式,建议先去看LFS或者编译内核一类的。

准备2、设置库文件路径
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig

准备3、安装libtool
# wget http://ftp.gnu.org/gnu/libtool/libtool-2.4.tar.gz
# tar xvf libtool-2.4.tar.gz
# cd libtool-2.4
# ./configure
# make && make install
# cd ..

一、MYSQL-5.1.54

1.1、nucrse
# wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.7.tar.gz
# tar xvf ncurses-5.7.tar.gz
# cd ncurses-5.7
# ./configure --with-shared --without-debug
# make && make install
# cd ..

1.2、mysql-5.1.54
# wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.54.tar.gz/from/http://mysql.he.net/
# tar xvf mysql-5.1.54.tar.gz
# cd mysql-5.1.54
# ./configure --prefix=/usr/local/mysql \
--with-unix-socket-path=/var/lib/mysql/mysql.sock \
--localstatedir=/var/lib/mysql/data \
--with-charset=utf8 --with-collation=utf8_general_ci \
--with-extra-charsets=all --enable-assembler --with-pthread

# make
# make install

# groupadd mysql
# useradd mysql -s /sbin/nologin -g mysql -M
# cp support-files/my-medium.cnf /etc/my.cnf

修改my.cnf
在skip-locking这句前面加上#号,添加
skip-external-locking

# chown mysql.root -R /usr/local/mysql
# cd /usr/local/mysql/

# bin/mysql_install_db --user=mysql
# chown mysql.mysql -R /var/lib/mysql/
# ln -s /usr/local/mysql/bin/* /usr/local/bin

重要:
# ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# chmod 700 /etc/init.d/mysqld


mysql的启动和关闭
/etc/init.d/mysqld start
/etc/init.d/mysqld stop

二、PHP-5.3.5

回到我们的编译目录
# cd /opt/software

2.1、ZLIB

# wget http://zlib.net/zlib-1.2.5.tar.gz
# tar xvf zlib-1.2.5.tar.gz
# cd zlib-1.2.5
# ./configure --prefix=/usr/local/
# make && make install
# cd ..

2.2、LIBPNG
# wget http://sourceforge.net/projects/libpng/files/libpng15/1.5.0/libpng-1.5.0.tar.gz/download
# tar xvf libpng-1.5.0.tar.gz
# cd libpng-1.5.0
# ./configure --prefix=/usr/local/
# make && make install
# cd ..

2.3、FREETYPE
# wget http://download.savannah.gnu.org/releases/freetype/freetype-2.1.10.tar.bz2
# tar xvf freetype-2.1.10.tar.bz2
# cd freetype-2.1.10
# ./configure --prefix=/usr/local/  --enable-shared
# make && make install
# cd ..

2.4、LIBJPEG
# wget http://freshmeat.net/urls/6228c609a20bb6f87b2fef4fd4b6a30c
# tar xvf jpegsrc.v8b.tar.gz
# cd jpeg-8b/
# ./configure --prefix=/usr/local --enable-shared --enable-static
# make
# make test
# make install
# cd ..

2.5、LIBICONV
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
# tar xvf libiconv-1.13.1.tar.gz
# cd libiconv-1.13.1
# ./configure --prefix=/usr/local/
# make && make install
# cd ..

2.6、GD
# wget http://www.libgd.org/releases/gd-latest.tar.gz
# tar xvf gd-latest.tar.gz
# cd gd-2.0.34
# ./configure --with-png --with-freetype --with-jpeg
# make
# make install
# cd ..

2.7、libevent
# wget http://monkey.org/~provos/libevent-2.0.10-stable.tar.gz
# tar xvf libevent-2.0.10-stable.tar.gz
# cd libevent-2.0.10-stable
# ./configure --prefix=/usr/local/
# make
# make install
# cd ..

2.8、libxml2
# wget ftp://xmlsoft.org/libxml2/libxml2-2.7.8.tar.gz
# tar xvf libxml2-2.7.8.tar.gz
# cd libxml2-2.7.8
# ./configure --prefix=/usr/local/
# make && make install
# cd .. 2.9-2.15为可选安装

2.9、安装curl
# wget http://curl.haxx.se/download/curl-7.21.3.tar.gz
# tar xvf curl-7.21.3.tar.gz
# cd curl-7.21.3
# ./configure --prefix=/usr/local/ --enable-shared
# make && make install
# cd ..

2.10、安装net-snmp
# wget http://sourceforge.net/projects/net-snmp/files/net-snmp/5.6.1/net-snmp-5.6.1.tar.gz/download
# cd net-snmp-5.6.1
# ./configure --prefix=/usr/local/
然后一路回车下去,到了这里Default version of SNMP to use (3): 笔者输入的是2
其他都用默认的,开始config
# make && make install
# cd ..

2.11、安装LIBXSLT
# wget ftp://xmlsoft.org/libxml2/libxslt-1.1.25.tar.gz
# tar xvf libxslt-1.1.25.tar.gz
# cd libxslt-1.1.25
# ./configure --prefix=/usr/local/ --enable-shared
# make && make install
# cd ..

2.12、libmcrypt
# wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
# tar xvf libmcrypt-2.5.7.tar.gz
# cd libmcrypt-2.5.7
# ./configure --prefix=/usr/local/
# make
# make check
# make install
# cd ..

2.13、mhash
# wget http://ncu.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2
# tar xvf mhash-0.9.9.9.tar.bz2
# cd mhash-0.9.9.9
# ./configure --prefix=/usr/local
# make
# make check
# make install
# cd ..

2.14、mcrypt
# wget http://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz/download
# tar xvf mcrypt-2.6.8.tar.gz
# cd mcrypt-2.6.8
# LD_LIBRARY_PATH=/usr/local/lib ./configure --prefix=/usr/local/
# make
# make check
# make install
# cd ..

2.15、GETTEXT
# wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.1.1.tar.gz
# tar xvf gettext-0.18.1.1.tar.gz
# cd gettext-0.18.1.1
# ./configure --prefix=/usr/local/ --enable-shared
# make && make install
# cd ..

(以上可选部分结束)

2.16、安装php-5.3.3
# wget http://www.php.net/get/php-5.3.5.tar.bz2/from/this/mirror
# tar xvf php-5.3.5.tar.bz2
# cd php-5.3.5

如果没有安装可选部分的话,使用如下参数编译

# ./configure --prefix=/usr/local/php \
--with-mysql=/usr/local/mysql \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-gd --with-freetype-dir=/usr/local --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-zlib-dir=/usr/local \
--enable-fpm \
--disable-debug \

如果安装了可选部分的话,使用如下参数编译
./configure --prefix=/usr/local/php \
--with-mysql=/usr/local/mysql --with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-gd --enable-gd-native-ttf --enable-gd-jis-conv \
--with-freetype-dir=/usr/local --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-zlib --with-zlib-dir=/usr/local \
--with-curl --with-curlwrappers --with-pic --enable-bcmath \
--with-xsl -with-openssl --with-pdo-mysql --with-gettext --with-iconv \
--with-mcrypt --with-mhash --with-snmp --enable-xml --enable-mbstring \
--enable-sockets --enable-inline-optimization --enable-calendar --enable-dba \
--enable-exif --enable-ftp --enable-soap --enable-zip --enable-sysvsem \
--enable-fpm \

# make
# make install

# cp php.ini-production /usr/local/php/lib/php.ini
# ln -s /usr/local/php/bin/* /usr/local/bin/
# cd ..

2.17、安装php加速器

# wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
# tar jxvf eaccelerator-0.9.6.1.tar.bz2
# cd eaccelerator-0.9.6.1
# phpize
# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
# make
# make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
#

vi /usr/local/php/lib/php.ini

在最后的; End:前面加入

[eaccelerator]
extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
extension="eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

# mkdir /tmp/eaccelerator
# chmod 777 /tmp/eaccelerator
# cd ..

2.18、配置php-fpm
# cd /usr/local/php/etc/
# cp php-fpm.conf.default php-fpm.conf

编辑php-fpm.conf
[global]
pid = run/php-fpm.pid
error_log = log/php-fpm.log
log_level = notice
[www]

pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35

将以上语句前面的注释符去掉即可。


启动php
# /usr/local/php/sbin/php-fpm
# ps -ef|grep php-fpm

如果看到有php-fpm的话,说明成功

# killall -9 php-fpm
# cp /opt/software/php-5.3.5/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
#

现在可以通过/etc/init.d/php-fpm start|stop 来启动和关闭phpfpm了

三、nginx-0.8.53

3.1、安装pcre
回到我们的安装目录
# cd /opt/software
# wget http://sourceforge.net/projects/pcre/files/pcre/8.11/pcre-8.11.tar.gz/download
# tar xvf pcre-8.11.tar.gz
# cd pcre-8.11
# ./configure --prefix=/usr/local/
# make && make install
# cd ..

3.2、安装nginx
# wget http://nginx.org/download/nginx-0.8.53.tar.gz
# tar xvf nginx-0.8.53.tar.gz
# cd nginx-0.8.53
# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# make && make install

3.3、PHP整合fpm
修改/usr/local/nginx/conf/nginx.conf,将server段 关于php部分前面的注视符号#全部去掉,如下:
        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;
        }

修改/usr/local/nginx/conf/fastcgi_params
在这一段
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;

完整的如下:
# cat fastcgi_params

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  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

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 only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;


在/usr/local/nginx/html目录下建立一个info.php文件,内容如下:
<?php
phpinfo();
?>

启动所有服务:
# /etc/init.d/mysql start(或者restart)
# /etc/init.d/php-fpm start(或者restart)
# /usr/local/nginx/sbin/nginx

通过浏览器查看http://ip(你的VPS商分配给你的IP地址)/info.php,看到phpinfo的信息说明全部正确

测试用的:
http://64.34.205.27/
http://64.34.205.27/info.php

开机自动启动:
#chkconfig --level 345 mysqld on
#chkconfig --level 345 php-fpm on
#echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local

至此,LNMP安装工作全部完成

猜你喜欢

转载自whxhz.iteye.com/blog/1084490