centos 6 编译安装lamp
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos 6 编译安装lamp相关的知识,希望对你有一定的参考价值。
Centos 6 系统上编译安装lamp
所有操作都是关闭防火墙和selinex的前下提先进行的
httpd和php的组合方式:
Modules:把php编译成httpd的DSO对象;
Prefork:需要libphp5的支持
Event、worker:需要libphp5-zts的支持。
所以如果pmp之间需要切换工作方式的化需要有相应的库支持。
Cgi:很少使用
Fmp(fastcgi):php作为独立的模块服务
我们做httpd+php用两种方法组合:
1、将php编程成httpd的模块
2、将php作为独立的模块运行
我们用的是httpd2.4的版本:需要apr-1.4、apr-util-1.4以上的版本支持
安装顺序为 httpd 、 mariadb 、php
注意php需要最后安装原因如下:
1、编译安装如果是把php编译进httpd的模块需要知道httpd的位置。
2、php编译连接mariadb的驱动需要知道mariadb的位置
准备好安装包:
apr-1.5.0.tar.bz2
apr-util-1.5.3.tar.bz2
httpd-2.4.6.tar.bz2
mariadb-5.5.59-linux-x86_64.tar.gz
php-5.4.26.tar.bz2
phpMyAdmin-4.0.10.20-all-languages.zip
xcache-3.1.0.tar.bz2
一、开始编译安装
1、tar xf apr-1.5.0.tar.bz2
Cd arp-1.5.0
./configure --prefix=/usr/local/apr
Make && make install
Tar xf apr-util-1.5.3.tar.bz2
Cd apr-util-1.5.3
./configure --prefix=/usr/loca/apr --with-apr=/usr/local/apr
Make && make install
2、安装httpd是需要依赖pcre-devel包所以先安装
yum install pcre-devel
Tar xf httpd-2.4.6.tar.bz2
cd httpd-2.4.6
./configure --prefix=/usr/local/apache --sysconf=/etc/httpd2.4 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=event
Make && make install
3、给编译安装的httpd2.4提供一个服务脚本。因为我的centos6系统上有httpd的服务脚本所以我就直接复制一个拿出来更改成httpd2.4的服务脚本
Cp /etc/rc.d/init.d/httpd/etc/rc.d/init.d/httpd2.4
更改vim /etc/rc.d/init.d/httpd2.4
上图中的
将httpd2.4添加到服务列表中去:chkconfig --add httpd2.4
检查下httpd 2.4 开机是否会自动启动 chkconfig --list httpd2.4
添加开机自动启动在345模式下:chkconfig --level 345 httpd2.4 on
清除缓存:Hash -r
注意:因为本机安装的centos6系统自带了httpd2.2 所以现在如果启动httpd还是httpd2.2的版本,并不是我们安装的httpd2.4。所以我们需要修改环境变量:让httpd2.4的先运行。
方法为:vim /etc/profile.d/httpd2.4.sh
Export PATH=/usr/local/apache/bin:$PATH
重读下 . /etc/profile.d/httpd2.4.sh
检查httpd语法: httpd -t
我们更改下/etc/httpd2.4/conf/httpd.conf配置文件
添加ServerName localhost:80 解决下上面的AH0058问题
启动服务:service httpd2.4 start
Ss -tnl 查看端口是否处于监听状态
Netstat -aux|grep httpd
Httpd -M :查看已装载的模块
很到模块都没有装载,可以在/etc/httpd2.4/conf/httpd.conf中启用
4、编译mariadb-5.5.59-linux-x86_64.tar.gz
Tar xf mariadb-5.5.59-linux-x86_64.tar.gz -C /usr/local
创建mysql用户:useradd -r mysql
创建 数据库的存储目录:mkdir -pv /mydata/data
更改目录属主属组:chown mysql.mysql /mydata/data
Cd /usr/local
建立软链接:
更改mysql目录下的属组为mysql
执行scripts目录下的mysql_install_db初始化数据库
提供配置文件:
Mkdir /etc/mysql
Cp support-files/my-large.cnf /etc/mysql/my.cnf
更改配置文件Vim /etc/mysql/my.cnf
添加三行:datadir = /mydata/data #指明数据库存储位置
Innodb_file_per_table = on #每个innnodb表都使用单个文件
Skip_name_resolve = on #跳过主机名解析
为mariadb提供启动服务的脚本:
Service mysqld start 启动服务
Ss -tnl查看3306端口是否处于监听状态
添加个环境变量:/etc/profile.d/mysqld.sh
重读下 . /etc/profile.d/mysqld.sh
安装成功
5、安装 php-5.4.26.tar.bz2
解决依赖关系:
请配置好yum源(系统安装源及epel源)后执行如下命令:
yum -y install bzip2-devel libmcrypt-devel
yum install libxml2-devel
Cd php-5.4.26
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
说明:
1、这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。
2、如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。
./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
make
make test
make intall
为php提供配置文件:
cp php.ini-production /etc/php.ini
3、 编辑apache配置文件httpd.conf,以apache支持php
vim /etc/httpd/httpd.conf
1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
2、定位至DirectoryIndex index.html
修改为:
DirectoryIndex index.php index.html
而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。
测试页面index.php示例如下:
<?php
$link = mysql_connect(‘127.0.0.1‘,‘root‘,‘‘);
if ($link)
echo "Success...";
else
echo "Failure...";
mysql_close();
?>
通过客户端访问
此时编译安装lamp完成
7、下面安装phpMyAdmin-4.0.10.20-all-languages
Unzip phpMyAdmin-4.0.10.20-all-languages
mv phpMyAdmin-4.0.10.20-all-languages /usr/local/apache/htdocs/pma
cp config.sample.inc.php config.inc.php
现在没有密码不能登入:所以要给mysql的root用户设置密码
默认的数据库有两个匿名用户是不安全的现在我们将其删除:
drop user ‘‘@‘localhost‘;
drop user ‘‘@‘localhost.localdomain‘;
然后service mysqld reload就可以登入了
8、压力测试:ab -c 10 -n 100 http://192.168.2.106/pma/index.php
9、编译安装xcache给php加速 安装版本为xcache-3.1.0.tar.bz2
Tar xf # tar xf xcache-3.0.3.tar.gz
cd xcache-3.0.3
/usr/local/php/bin/phpize (这个是为了使./configure生效)
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make && make install
编辑php.ini,整合php和xcache:
首先将xcache提供的样例配置导入php.ini
mkdir /etc/php.d
cp xcache.ini /etc/php.d
说明:xcache.ini文件在xcache的源码目录中。
接下来编辑/etc/php.d/xcache.ini,找到zend_extension开头的行,修改为如下行:
zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
注意:如果php.ini文件中有多条zend_extension指令行,要确保此新增的行排在第一位。
重启服务 service httpd2.4 restart 生效
在访问下测试页 可以看到我们安装的xcache信息
10、下面我们再次进行压力测试:看看
整个过程完毕!!!
三、下面将php作为独立的模块安装方法
1、在上面的基础上重新编译php,首先删除刚才解压的rm php-5.4.26 -rf
2、重新解压 Tar xf rm php-5.4.26.tar.bz2
3、Cd php-5.4.26
4、./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php5.d --with-bz2
5、Make && make install
6、Service httpd2.4 stop
7、重新修改httpd.conf的配置文件
8、Mkdir /etc/php5{,.d}
9、Cp php.ini-production /etc/php5/php.ini
10、添加php-fpm 的服务脚本 : cp sapo/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
Chmod +x /etc/rc.d/init.d/php-fpm
Chkconfig --add php-fpm
Chkconfig --level 345 php-fpm on
11、fpm-php的主配置文件为/usr/local/php5/etc/php-fpm.conf
12、cp php-fpm.conf.default php-fpm.conf
修改pid路径
13、然后启动service fpm-php start
启动成功
14、启用httpd的相关模块
在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为 mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都 要加载
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改为:DirectoryIndex index.php index.html
15、ProxyRequests Off:关闭正向代理
ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需 要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参 数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。
配置虚拟主机支持使用fcgi
在相应的虚拟主机中添加类似如下两行。
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
例如:
<VirtualHost *:80>
DocumentRoot "/www/pingan.com"
ServerName pingan.com
ServerAlias www.pingan.com
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/pingan.com/$1
<Directory "/www/pingan.com">
Options none
AllowOverride none
Require all granted
</Directory>
</VirtualHost>
16、现在进行压力测试:ab -c 10 -n 100 http://192.168.2.106/pma/index.php
17、我们安装xcache然后在进行压力测试。
由于我们已经安装过了所以现在先删除root家目录下的rm -rf xcache-3.1.0
tar xf xcache-3.1.0.tar.bz2
cd xcache-3.1.0
/usr/local/php5/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php5/bin/php-config
make && make install
安装结束时,会出现类似如下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
18、编辑php.ini,整合php和xcache:
首先将xcache提供的样例配置导入php.ini
cp xcache.ini /etc/php5.d
说明:xcache.ini文件在xcache的源码目录中。
接下来编辑/etc/php5.d/xcache.ini,找到zend_extension开头的行,修改为如下行:
zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
注意:如果php.ini文件中有多条zend_extension指令行,要确保此新增的行排在 第一位。
18、接下来重启service php-fpm restart
19、做压力测试:ab -c 10 -n 100 http://192.168.2.106/pma/index.php
发现效果明显提升了2倍以上
20、整个测试完毕
以上是关于centos 6 编译安装lamp的主要内容,如果未能解决你的问题,请参考以下文章