Centos7 编译安装lamp

CentOS7编译安装LAMP

引言

在CentOS7上可以直接使用yum安装LAMP(Linux+Apache[httpd]+Mysql+PHP),比手动编译安装LAMP要简单的多,但在实际的生产环境中都会手动编译LAMP,使用手动编译LAMP有以下几个优点

  • 方便扩展模块,如添加PHP的扩展模块、http扩展模块等,可根据实际需求进行配置;
  • 可以自由的选择安装较适合的版本,系统自带的httpd、mysql或者PHP的版本可能较低不能满足某些应用需求;
  • 可以以fpm的方式运行PHP,一般系统自带的PHP都是以httpd模块的形式运行的,若需要让PHP已fpm的方式运行,必须手动编译安装httpd和PHP;

apache早期是一个提供web软件的小组,现在已演变成了apache基金会,httpd就是apache基金会提供的一个web服务器,通常LAMP中的apache就是指httpd。

安装MySQL

这里使用二进制的方式安装mysql,手动安装mysql,需要主要以下几个方面:
① 手动添加mysql组和mysql用户;
② 导出mysql的应用程序;
③ 导出mysql的库文件;
④ 导出mysql的头文件;
⑤ 创建mysql的配置文件;

添加mysql用户和组

groupadd -r mysql
useradd -g mysql -r -s /sbin/nologin mysql
id mysql //检查mysql用户添加是否成功

解压mysql

tar zxvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz -C /usr/local
ln -sv mysql-5.7.16-linux-glibc2.5-x86_64  mysql

技巧:这里创建mysql软连接的好处是,当升级mysql的版本时,只需要更改mysql的软链接即可,不需要修改导出的库文件、应用程序、头文件等的路径。

导出mysql的应用程序

vim /etc/profile.d/mysql.sh,添加以下内容
export PATH=/usr/local/mysql/bin:$PATH
. /etc/profile.d/mysql.sh

导出mysql的头文件:

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

导出mysql的库文件

vim /etc/ld.so.conf.d/mysql.conf
添加:/usr/local/myql/lib

ldconfig //重新读取lib
ldconfig -p |grep mysql //查看mysql的lib是否导入成功

创建数据目录并初始化mysql库

mkdir /data/mydata   
chown -R  root.mysql /data/mydata //修改数据目录的属组
/usr/local/mysql/bin/mysqld --user=mysql --datadir=/data/mydata --initialize

导出启动脚本和配置文件

// 导出启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --list mysqld

// 导出配置文件并启动mysql
cp  /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
在mysqld段添加:datadir=/data/mydata
service mysqld start //启动mysql

修改mysql密码默认密码

修改默认密码前会提示错误;”You must reset your password using ALTER USER statement before executing this statement.”

mysql -uroot -p"安装mysql时自动生成的密码"
// 设置root用户密码
set password=PASSWORD('lamp');
flush privileges;

// 设置mysql.sys用户密码
use mysql;
update user set authentication_string=password('lamp') where User='mysql.sys';
select user,host,authentication_string from user;
flush privileges;

编译安装httpd2.4

httpd运行需要依赖arp,apr-util,apr现在已经成为apache基金会下的一个开源项目。
其他需要依赖的库,如pcre-devel、openssl-devel等,可以在执行./configure后,根据需要进行安装。

下载

apr-1.5.2.tar.gz
apr-util-1.5.4.tar.gz
httpd-2.4.23.tar.gz

安装依赖软件

安装依赖库

yum install -y pcre-devel
yum install -y openssl-devel

安装apr

tar zxvf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr
make && make install

安装apr-util

tar zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install

安装httpd2.4

配置、编译和安装

cd httpd-2.4.23
./configure --help  // 根据需要选择对应的模块
./configure \
--prefix=/usr/local/apache \
--sysconfdir=/etc/httpd \
--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  //指定httpd的MPM方式,分别是prefork、event和worker

make && make install

导出启动脚本

复制2.2的启动脚本,修改
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}

chkconfig --add httpd
chkconfig --list httpd
chkconfig httpd on

导出应用程序

vim /etc/profile.d/httpd.sh,添加以下内容
export PATH=/usr/local/apache/bin:$PATH

导出头文件

ln -sv /usr/local/apache/include /usr/include/apache

编辑配置文件

编辑主配置文件:vim /etc/httpd/httpd.conf,添加

ServerRoot "/usr/local/apache"
PidFile="/var/run/httpd/http.pid"

启动httpd:apachectl start

安装php

安装依赖库

yum install -y libxml2-devel
yum install php-mcrypt libmcrypt libmcrypt-devel

若无法找到mcrypt源,可以执行
wget http://www.atomicorp.com/installers/atomic
sh ./atomic

编译安装PHP

./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  \  # 非fpm方式,以apache的模块方式运行
--with-mcrypt \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-bz2 \
--enable-maintainer-zts 

若出现无法找到libmysqlclient_r.so的问题,可以建立一个软连接 ln -s
/usr/local/mysql/lib/libmysqlclient.so.20.0.0
/usr/local/mysql/lib/libmysqlclient_r.so

若本机未安装mysql时,编译php时,可使用以下参数,PHP版本需要大于5.4
–with-mysql=mysqlnd \
–with-pdo-mysql=mysqlnd \
–with-mysqli=mysqlnd

make && make install

复制配置文件

cp php.ini-production /etc/

编辑httpd的配置文件

vim /etc/httpd/http.conf

添加以下内容:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

DirectoryIndex index.php index.html

此时,一个基本的lamp环境就搭建完成了。应用程序部署到httpd的htdocs目录下,即可通过浏览器访问网站了,但是生产环境中,通常需要安装xcache,xcahce是php的一个中间代码缓存器,xcache可将访问的速度提高3倍左右,同时,生产环境中一般将php程序独立出来,以fpm的方式运行,即php独立成一个服务,而不是作为httpd模块的方式运行,以fpm方式运行的php,可以和httpd分离,部署到不同的主机之上。

安装xcache

xcache官网: http://xcache.lighttpd.net/wiki/Release-3.0.4

下载xcache,并解压xcache之后,进入xcache所在目录:

/usr/local/php/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make && make install

编译xcache时,若出现编译错误,可以尝试换一个xcache的版,重新解压编译。

编译后生成的xcache模块的目录:/usr/local/php/lib/php/extensions/no-debug-zts-20131226/

复制并编辑xcache配置文件:

cp xcache.ini /etc/php.d/xcache.ini
vim /etc/php.d/xcache.ini
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20131226/xcache.so

可以通过以下测试程序,查看php、mysql、xcache是否安装成功:


    $link = mysql_connect('localhost','root','lamp');
    if ($link)
        echo "mysql connect success";
    else
        echo "mysql connect failed";
    echo phpinfo();
?> 

也可以下载,安装phpmyadmin来测试:
下载phpmyadmin:phpMyAdmin-4.4.11

unzip phpMyAdmin_4.4.11_all_languages.1437381213.zip
mv phpMyAdmin-4.4.11-all-languages /usr/local/apache/htdocs/pma

访问:http://localhost//pma

安装php-fpm (>5.3)

编译安装

cd php-5.6.28
./configure \
--prefix=/usr/local/php-fpm \   # fpm时,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 \
--enable-fpm   \        # 使用fpm方式,去除了--with-apxs2
--with-mcrypt \
--with-config-file-path=/etc/php-fpm \
--with-config-file-scan-dir=/etc/php-fpm.d \
--with-bz2

make && make install

配置文件

导出php的配置文件

cd php-5.6.28
cp php.ini-production /etc/php-fpm/

导出php-fpm的启动文件

cp sapi/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 php-fpm on

导出php-fpm的配置文件

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

pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = /var/run/php-fpm.pid
listen = 127.0.0.1:9000

httpd中的配置

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
#LoadModule php5_module        modules/libphp5.so

ProxyRequests Off  # 关闭httpd正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.0:9001/usr/local/php-fpm/htdocs/$1

启动php-fpm: service php-fpm start

压力测试

可以通过apache提供的ab压力测试工具,对比未安装xcache之前和安装xcache之后网站的性能提升,同时也可以比较使用fpm方式和使用非fpm方式时,网站的性能。

ab -c 700 -n 10000 http://localhost/pma/index.php

注意并发量比较大时,需要修改ulimit, 如:ulimit -n 3000

你可能感兴趣的:(php)