LNMP
需要安装的包有:
development libraries、Development tools、X Software Development、gcc、openssl-devel
pcre-devel、zlib-devel、nginx、cmake、ncurses-devel、mysql、mhash、libmcrypt
libiconv、libxml2*、ncurses-decel
php要最后安装
一、安装源码
ngnix
#
yum -y groupinstall "Development libraries" "Development tools" "X Software Development"
#yum -y install gcc openssl-devel pcre-devel zlib-devel
# netstat -anptu | grep :80 (查看80端口是否被apache占用,如果占用先关闭)
# grep nginx /etc/passwd (进程所有者名)
# useradd -g nginx -s /sbin/nologin -M nginx (-M:不建立家目录)
# tar -zxf nginx-1.11.5.tar.gz
# cd nginx-1.11.5
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --without-http_rewrite_module
# make && make install
# /usr/local/nginx/sbin/nginx (启动nginx)
# /usr/local/nginx/sbin/nginx -s stop 停止nginx
# /usr/local/nginx/sbin/nginx -s reload 重启nginx
# elinks --dump http://localhost
Welcome to nginx!
# echo 123 > /usr/local/nginx/html/a.html
# elinks --dump http://localhost/a.html
123
-----------------------------------------------------------------------------
源码安装apache2.4.23
卸载apr:
# rpm -qa | grep apr
apr-1.3.9-5.el6_2.x86_64
apr-util-1.3.9-3.el6_0.1.x86_64
apr-util-ldap-1.3.9-3.el6_0.1.x86_64
# rpm -e --nodeps apr-1.3.9-5.el6_2.x86_64
# rpm -e --nodeps apr-util-1.3.9-3.el6_0.1.x86_64
# rpm -e --nodeps apr-util-ldap-1.3.9-3.el6_0.1.x86_64
下载最新源码包 apr-1.4.8.tar.gz apr-util-1.5.2.tar.gz,解压并简单安装。
# ./configure --prefix=/opt/apr && make && make insall
# ./configure --prefix=/opt/apr-util --with-apr=/opt/apr && make && make insall
注意:这两个包必须安装在/opt下,否则apache找不到apr。
下载pcre pcre-8.33.zip 解压并简单的安装
./configure --prefix=/usr/local/pcre make && make install
卸载apache:
# rpm -qa | grep httpd
httpd-2.2.15-54.el6.centos.x86_64
httpd-tools-2.2.15-54.el6.centos.x86_64
# rpm -e --nodeps httpd-2.2.15-54.el6.centos.x86_64
# rpm -e --nodeps httpd-tools-2.2.15-54.el6.centos.x86_64
解压后进入目录进行编译:
./configure --prefix=/usr/local/apache --enable-rewrite --enable-so --enable-headers --enable-expires --with-mpm=worker --enable-modules=most --enable-deflate --with-apr=/opt/apr --with-apr-util=/opt/apr-util --with-pcre=/usr/local/pcre/bin/pcre-config
--prefix=/usr/local/apache表示指定apache的安装路径。
--enable-rewrite提供URL规则的重写更嫩那个,即根据已知的URL地址,转换为其它想要的URL地址
--enable-so激活apache服务的DSO(Dynamic Shared Objects动态共享目标),即在以后可以以DSO的方式编译安装共享模块,这个模块本身不能以DSO方式编译。
--enable-headers提供允许对HTTP请求头的控制。
--enable-expires激活荀彧通过配置文件控制HTTP的“Expires:”和“Cache-Control:”头内容,即对网站图片、js、css等内容,提供客户端浏览器缓存的设置。这个是apache调优的一个重要选项之一。
--with-mpm=worker选择apache mpm的模式为worker模式。为worker模式原理是更多的使用线程来处理请求,所以可以处理更多的并发请求。而系统 资源的开销小玉基于进程的MPM prefork。如果不指定此参数,默认的模式是prefork进程模式。这个是apache调优的一个重要选项之一。
--enable-deflate提供对内容的压缩传输编码支持,一般是html、js、css等内容的站点。使用此参数会打打提高传输速度,提升访问者访问的体验。在生产环境中,这是apache调优的一个重要选项之一。
# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
# echo "/usr/local/apache/bin/apachectl start">>/etc/rc.local
# vim /etc/init.d/httpd 添加如下两行并保存:
#chkconfig: 2345 70 60
#description: apache
# chkconfig --add httpd 加入系统服务
# chkconfig httpd on 开机启动
# /etc/init.d/httpd start 或者 /usr/local/apache2/bin/httpd –k start
说明:
其实apache的启动是调用/usr/local/apache2/bin/httpd这个命令,查看/etc/init.d/httpd脚本便可知道。
chkconfig --add httpd 实际是把/etc/init.d/httpd加入到/etc/rc.d/rc0.d和/etc/rc.d/rc6.d目录下。
chkconfig: 2345 70 60中的2345是指脚本的运行级别,即在2345这4种模式下都可以运行,234都是文本界面,5是图形界面X。
70是指脚本将来的启动顺序号,如果别的程序的启动顺序号比70小(比如44、45),则脚本需要等这些程序都启动以后才启动。60是指系统关闭时,脚本的停止顺序号。
---------------------------------------------------------------------------------------------------------------------------
二.安装源码mysql (mysql-5.5.13 该版本需要cmake安装)
# tar -zxf cmake-3.7.0.tar.gz
# cd cmake-3.7.0
# ./bootstrap --prefix=/usr/local/cmake (./bootstrap 和./configure一样)
# make &&make install
# /usr/local/cmake/bin/cmake --version (查看版本号)
cmake version 3.7.0-rc2
rpm -qa | grep mysql
卸载查询出来的版本
# rm -rf CMakeCache.txt
# yum -y install ncurses-devel
# tar -zxf mysql-5.6.31.tar.gz
# useradd mysql
# cd mysql-5.6.31
/usr/local/cmake/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock -DMYSQL_USER=mysql -DEXTRA_CHARSETS=all -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
[root@clone1 mysql-5.5.13]# make && make install
初始化授权库(MySQL 源码包安装需要手动初始化授权库 )
# cd /usr/local/mysql
.
/scripts/mysql_install_db --user=mysql (初始化数据库,用相对路径安装,勿cd /scripts)
# cp support-files/my-default.cnf /etc/my.cnf
# /usr/local/mysql/bin/mysqld_safe --user=mysql & (启动数据库服务)
# netstat -anptu | grep :3306
# /usr/local/mysql/bin/mysql -hlocalhost -uroot -p 直接回车(数据库管理员从数据库服务器本机登录默认没有密码)
# pkill -9 mysql
# vim /etc/profile (把命令的路径添加到PATH)
export PATH=/usr/local/mysql/bin:$PATH
:wq
# Source /etc/profile
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chmod +x /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --list mysqld
mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
# service mysqld start
Starting MySQL [确定]
# netstat -anptu | grep :3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 36969/mysqld
设置数据库管理员从本机登录的密码
# mysqladmin -hlocalhost -uroot password "123"
# service mysqld stop
Shutting down MySQL. [确定]
# service mysqld start
Starting MySQL.. [确定]
#vim /etc/ld.so.conf 加入如下内容:
include ld.so.conf.d/*.conf
/usr/local/mysql/lib
#ldconfig -v //刷新
---------------------------------------------------------------------------------------------------------------------------
备注:在windows中所有的动态链接库(dll文件)存放在c:\windows\system32
Linux的库文件(so文件),一般会存放在/lib/,/usr/lib/,
提示:默认我们安装的mhash,libmcrypt,libiconv,生产的库文件存放在/usr/local/lib,因此为了让系统识别这些库,可以将/usr/local/lib/相关相关的库文件,做链接放到系统的库文件目录
#ln -sv /usr/local/lib/libmcrypt* /usr/lib/
# ln -sv /usr/local/lib/libmhash.* /usr/lib/
让系统识别到库文件的方法二:修改ldconfig配置文件
将库文件目录加入到/etc/ld.so.conf文件,添加完成后输入如下命令刷新:
ldconfig -v //刷新
--------------------------------------------------------------------------------------------------------------------------
三.安装源码php (不是服务,是用来解释php页面的程序)
安装拓展功能包
mhash-0.9.9.9.tar.gz hash算法
libmcrypt-2.5.8.tar.gz 加密
libiconv-1.13.tar.gz 字符编码转换
# tar -zxf mhash-0.9.9.9.tar.gz
# cd mhash-0.9.9.9
# ./configure
# make &&make install
# tar -zxf libmcrypt-2.5.8.tar.gz
# cd libmcrypt-2.5.8
# ./configure
# make && make install
# cd libltdl/
# ldconfig -v
# ./configure --with-gmetad --enable-gexec --enable-ltdl-install
# tar -zxf libiconv-1.13.tar.gz
# cd libiconv-1.13
# ./configure
# make && make install
# ln -sv /usr/local/lib/libmhash.* /usr/lib/
# ln -sv /usr/local/lib/libmcrypt* /usr/lib/
# ln -sv /usr/local/lib/libiconv.* /usr/lib/
#ln -sv /usr/local/lib/preloadable_libiconv.so /usr/lib/
# tar -zxf php-5.5.3.tar.gz
# cd php-5.4.9
-v显示链接内容
yum -y install libxml2*
# ./configure (一行一行的粘贴复制到命令行,或者写成脚本)
--prefix=/usr/local/php5
--with-mysql=/usr/local/mysql
--enable-fpm --enable-mbstring
--with-mcrypt --with-mhash
--with-config-file-path=/usr/local/php5/etc
--with-mysqli=/usr/local/mysql/bin/mysql_config
#make ZEND_EXTRA_LIBS='-liconv' (必须是大写)
# make install
# cp php.ini-production /usr/local/php5/etc/php.ini
四.配置nginx
1. 修改 fpm 配置文件(FastCGI)
#cd /usr/local/php5/etc
#cp php-fpm.conf.default php-fpm.conf
#vim /usr/local/php5/etc/php-fpm.conf
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 32 //最大值
pm.start_servers = 15 //初始化开几个进程
pm.min_spare_servers = 5 //最少空闲进程
pm.max_spare_servers = 32 //最大空闲进程
[root@clone1 /]# cd /root/桌面/lnmp+memcached/php-5.4.9/sapi/fpm/
[root@clone1 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
[root@clone1 fpm]# chmod +x /etc/init.d/php-fpm
[root@svr5 fpm]# /etc/init.d/php-fpm start
Starting php-fpm done
[root@svr5 fpm]# netstat -untlap | grep :9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 40342/php-fpm
Nginx+FastCGI
1. 修改Nginx(调用FastCGI(php-fpm)
#cd /usr/local/nginx/conf/
[root@clone1 conf]# vim nginx.conf
将以下内容的注释符#去掉
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_paramSCRIPT_FILENAME $docoument_root$fastcgi_script_name;
include fastcgi_params;
}
:wq
重新启动Nginx
[root@clone1 conf]# vim fastcgi_params
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
[root@clone1 conf]# vim /usr/local/nginx/html/test.php
<?php
phpinfo();
?>
[root@clone1 conf]# vim /usr/local/nginx/html/index.php
<?php
$links=mysql_connect("localhost","root","");
if($links){
echo "link db ok!!!";
}
else{
echo "link db no!!!";
}
?>
[root@clone1 html]# elinks --dump
http://localhost/linkdb.php
link db ok!!!