LAMP+LVS+KEEPALIVED(一)

1、apache工作模式及参数说明

(1)prefork模式

prefork是Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较大。

(2)worker模式

worker使用多个子进程,每个子进程有多个线程,每个线程在某个确定的时间只能维持一个连接,内存占用量比较小,适合高流量的http服务器。缺点是假如一个线程崩溃,整个进程就会连同其任何线程一起"死掉",所以要保证一个程式在运行时必须被系统识别为"每个线程都是安全的"。

(3)参数说明


2、源码安装lamp

(1)安装httpd-2.4.12

#安装过程缺少依赖的包提示:

#缺少apr-devel

configure: error: APR not found.  Please read the documentation


#缺少apr-util-devel

configure: error: APR-util not found.  Please read the documentation


#缺少pcre-devel

configure: error: pcre-config for libpcre not found


#使用yum来安装:

yum -y install apr-devel apr-util-devel pcre-devel

#或者源码安装apr-1.5.1和apr-util-1.5.4

cd apr-1.5.1

./configure && make && make install

cd ../apr-util-1.5.4

./configure  --with-apr=/usr/local/apr/ && make && make install


#安装openssl-1.0.2a

yum -y install libgcrypt-devel.x86_64

./config && make && make install


#安装httpd-2.4.12

./configure--prefix=/usr/local/apache2 --enable-so

--enable-ssl=static --with-ssl=/usr/local/ssl/

--enable-mods-shared=all

--with-apr=/usr/local/apr/

--with-apr-util=/usr/local/apr/

make && make install


#默认会安装到/usr/local/apache2/下

#可以在./configure 时添加--prefix=/mypath

#可以通过./configure --help来查看相关编译参数,根据需求调整


(2)安装php-5.6.8


#安装过程缺少依赖包:

#缺少gcc

configure: error: no acceptable C compiler found in $PATH


#缺少libxml2-devel

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


#使用yum来安装:

yum -y install gcc gcc-c++ libxml2-devel


#安装php-5.6.8

#apxs是在安装php时生成动态连接模块工具,如果不指明路径,apache就无法调用php

#一定要添加--with-apxs2=/usr/local/apache2/bin/apxs

#php安装完成后,可以看到会在httpd.conf文件添加"LoadModule php5_module modules/libphp5.so"

#动态加载php来完成解析

./configure --prefix=/usr/local/php --with-config-file-path=/etc --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache2/bin/apxs


make && make install


#默认会安装到/usr/local/php/下

#可以在./configure 时添加--prefix=/mypath 更改安装路径

#可以通过./configure --help来查看相关编译参数,根据需求调整


(3)安装mysql-advanced-5.6.23-linux-glibc2.5-x86_64

#具体安装和应用方法查看之前的mysql文档

#具体可以参考目录下的INSTALL-BINARY文件


#安装mysql,将mysql压缩解压到/usr/local

tar zxvf mysql-advanced-5.6.23-linux-glibc2.5-x86_64.tar.gz -C /uar/local/

cd /usr/local

ln -s mysql-advanced-5.6.23-linux-glibc2.5-x86_64 mysql

cd mysql


#添加mysql用户和群组

groupadd mysql

useradd -r -g mysql mysql


#修改相关目录和文件属主和所属群组

chown -R mysql .

chgrp -R mysql .

或者:chown -R mysql:mysql .


#将目录属主更改为root,避免mysql用户将目录删除

chown -R root .

chown -R mysql data


#使用mysql用户权限来初始化数据库

scripts/mysql_install_db --user=mysql


#会提示缺少perl-modules

#FATAL ERROR: please install the following Perl modules before executing scripts/mysql_install_db

yum -y install perl-Module-Install.noarch


#缺少依赖包libaio

#error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

yum -y install libaio-devel


#将mysql添加为服务

cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld


#将mysql的bin目录加入到PATH环境变量

#在/etc/profile最后面添加

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

source /etc/profile


#脚本初始化已经添加mysqld脚本,如果没有直接cp /etc/init.d/mysqld

/etc/rc.d/init.d/mysqld


#启动mysql

/usr/local/mysql/bin/mysqld_safe &


#更改mysql root密码提示

#error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock'


/usr/local/mysqladmin -u root -p password --socket=/var/lib/mysql/mysql.sock

#或者

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock


#在/etc/my.cnf 文件socket参数指定为/tmp/mysql.sock

socket=/tmp/mysql.sock


3、lamp连接测试

(1)设置service方式启动apache

#将启动脚本复制为/etc/init.d/httpd

cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd

LAMP+LVS+KEEPALIVED(一)_第1张图片

#可以这样来停止、启动和重启apache

service httpd stop/start/restart

/etc/init.d/httpd stop/start/restart

/usr/local/apache2/bin/apachectl stop/start/restart


#或许是因为兼容性不好,无法使用chkconfig设置开机启动

chkconfig add httpd

#但是可以使用下面的方式设置为开机启动apache

LAMP+LVS+KEEPALIVED(一)_第2张图片

(2)复制php.ini文件

cp php.ini-development /etc/php.ini

#不需要进行手动更改就可以让apache调用php

#php在编译的时候会修改httpd.conf配置文件,添加如下一行

LoadModule php5_module        modules/libphp5.so

#如果在编译的时候没有指定--with-apxs2=/usr/local/apache2/bin/apxs,则apache无法加载php