CentOS编译安装LAMP
LAMP组合的编译安装:httpd+php
modules: 把php编译成httpd的DSO对象;
prefork: libphp5
event, worker: libphp5-zts
在使用event和worker模型时,在编译php时,要加入此选项--enable-maintainer-zts。
cgi
fpm(fastcgi):php作为独立的服务
httpd对fastcgi协议的支持:
httpd-2.2: 需要额外安装fcgi模块;
httpd-2.4: 自带fcgi模块;
安装次序:
httpd, MariaDB, php。
编译安装httpd:
前提:安装好Development tools、Server Platform Development这两个工具包组。在此处,编译安装的为httpd-2.4。
第一步需要安装pcre-devel这个包,可能会有依赖关系。
1
# yum install pcre-devel
第二步:获取apr、apr-util以及httpd这三个源代码包。
第三步:解压并安装apr包。
1
2
3
4
# tar xf apr-1.5.0.tar.bz2 #解压该源代码包
# cd apr-1.5.0 #切换到解压之后的目录下
# ./configure --prefix=/usr/local/apr #安装目录/usr/local/apr
# make && make install #根据makefile文件,构建应用程序
第四步:解压并安装apr-util包。
1
2
3
4
5
# tar xf apr-util-1.5.3.tar.bz2#解压该源代码包
# cd apr-util-1.5.3 #切换到解压之后的目录下
# ./configure -prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#指定安装目录为/usr/local/apr-util,并且其依赖的apr包的安装位置为/usr/local/apr
# make && make install #根据makefile文件,构建应用程序
第五步:解压并安装httpd包。
1
2
3
4
# tar xf httpd-2.4.10.tar.bz2
# cd httpd-2.4.10
# ./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
# make && make install #根据makefile文件,构建应用程序
对安装过程中个选项的解释:
--prefix=/usr/local/apache:httpd的安装路径
--sysconfdir=/etc/httpd24:配置文件的路径
--enable-so --enable-ssl --enable-cgi:支持so模块,支持ssl协议,支持cgi协议
--enable-rewrite --with-zlib --with-pcre:支持重写,支持浏览网页进行压缩传输,需要使用到pcre
--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util:所依赖到的apr和apr-util包安装路径
--enable-modules=most:支持大多数的模块
--enable-mpms-shared=all --with-mpm=event:所有的mpm共享支持,默认的mpm类型为event
第六步:安装完成,提供服务相关的配置。
(1)将/usr/local/apache/bin/apachectl文件复制到/etc/init.d下,并且命名为httpd;
1
# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
(2)修改/etc/init.d/httpd文件,添加如下两行;
1
2
# chkconfig: - 85 15#此处指定服务的启动顺序
# description: Apache is a World Wide Web server.It is used to serve \
(3)添加该服务到系统服务;
1
# chkconfig --add httpd
(4)添加PATH环境变量;
在/etc/profile.d/目录下创建httpd.sh,内容如下:
export PATH=/usr/local/apache/bin/:$PATH
添加环境变量并不是必须的,如果不添加该内容,则在运行/usr/local/apache/bin/下边的所有相关命令的时候,必须使用绝对路径运行,反之,则可以使用命令本身进行运行,不用写绝对路径。
第七步:启动服务,并且测试。
1
2
3
# service httpd start
httpd (pid 35925) already running
# ss -tnl
编译安装marirdb:
使用通用二进制包进行mariadb的安装。
1、新建用户,创建一个数据目录/mydata/data,指定其所属的组为mysql,所用的shell为/sbin/nologin,账户登陆时所用的家目录为/mydata/data。、
1
2
3
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
# chown -R mysql:mysql /mydata/data
2、解压通用二进制mrdiadb包,将其解压至/usr/local目录下。并为其创建一个软连接mysql指向解压之后的文件夹。
1
2
3
# tar xf mariadb-5.5.45-linux-x86_64.tar.gz -C /usr/local
# cd /usr/local
# ln -sv mariadb-5.5.45-linux-x86_64mysql
3、切换至/usr/local/mysql目录下,改变当前目录的属主和属组为mysql。初始化mysql,指明其数据目录为/mydata/data,用户为mysql。
1
2
3
# cd mysql/
# chown -R mysql:mysql
# scripts/mysql_install_db --datadir=/mydata/data --user=mysql
4、改变当前目录的属主为root,并为其提供配置文件。
1
2
# chown -R root. #不要省略这个点号
# cp support-files/my-large.cnf/etc/my.cnf
如果在系统上已经存在/etc/my.cnf配置文件,可以直接覆盖。当然,先备份一份,出问题可以及时修复。
5、编辑/etc/my.cnf该配置文件时,要加入以下内容:
1
2
3
datadir=/mydata/data #指明数据的存储目录
innodb_file_per_table=on#指明默认使用的数据引擎
skip_name_resolve=on#跳过DNS名称解析
6、为mysql服务提供服务脚本,并且为该脚本提供执行权限。并添加至服务列表。
1
2
3
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
7、输出mysql的头文件至系统头文件路径/usr/include,输出mysql的库文件给系统库查找路径,让系统重新载入系统库。
1
2
3
# ln -sv /usr/local/mysql/include/usr/include/mysql
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
# ldconfig
添加PATH环境变量;
在/etc/profile.d/目录下创建mysqld.sh,内容如下:
export PATH=/usr/local/mysql/bin/:$PATH
添加环境变量并不是必须的,如果不添加该内容,则在运行/usr/local/mysql/bin/下边的所有相关命令的时候,必须使用绝对路径运行,反之,则可以使用命令本身进行运行,不用写绝对路径。
进行安全初始化:
第一种:添加了PATH环境变量:
直接执行mysql_secure_installation就可以,然后进行自己选择要修改的项即可。
第二种:没有修改PATH变量:
1
# /usr/local/mysql/bin/mysql_secure_installation
测试启动mysql服务:
测试使用mysql客户端连接mysql服务器:
由于当时进行了安全初始化,所以在登录的时候要指定密码才能登录。
mysql允许远程登录:
1
2
3
4
5
6
7
MariaDB [(none)]> create user 'lcs'@'172.16.%.%' identified by 'linux';
Query OK, 0 rows affected (0.17 sec)
#创建lcs这个用户,并允许其在172.16这个网段中的主机上都可以远程登录,其登录密码为linux。
MariaDB [(none)]> grant all on *.* to 'lcs'@'172.16.%.%';
Query OK, 0 rows affected (0.05 sec)
#为lcs这个用户授权,允许其操作数据库中的所有内容。
编译安装php:
第一种:直接当作模块编译进httpd中。
首先解决依赖关系,安装bzip2-devel libmcrypt-devel libxml2-devel这三个包。注意,在配置yum源的时候,要配置系统安装源及epel源。
1、解压php源码包,同时使用configure命令,进行配置。
1
2
3
# tar xf php-5.4.40.tar.bz2
# cd php-5.4.40
# ./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
configure命令中所使用的选项的意义为:
--prefix=/usr/local/php#指定其安装目录
--with-openssl --with-mysql=/usr/local/mysql #支持ssl协议,其所依赖的mysql的安装目录为/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--enable-mbstring --with-freetype-dir #支持mbstring模块
--with-jpeg-dir --with-png-dir --with-zlib #支持jpeg、png格式,以及页面压缩传输
--with-libxml-dir=/usr --enable-xml #其xml库目录为/usr,支持xml格式
--enable-sockets --with-apxs2=/usr/local/apache/bin/apxs #支持套接字
--with-mcrypt--with-config-file-path=/etc #其配置文件的在/etc目录下
--with-config-file-scan-dir=/etc/php.d --with-bz2
--enable-maintainer-zts #由于在编译httpd使用了event模式,所以在此处使用此选项使得php支持event模型。
注:为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。
2、使用make和make install命令进行安装。
3、编辑apache的配置文件。
1
# vim /etc/httpd/httpd.conf
进行如下的设置。
1
2
3
AddType application/x-httpd-php.php #支持php结尾的文件
AddType application/x-httpd-php-source.phps#支持phps结尾的文件
DirectoryIndex index.php index.html
4、通过以上配置,就将php作为模块编译进httpd了。使用命令httpd -M可查看已安装的模块。
5、在服务器的根目录下,创建一个index.php,作为测试。127.0.0.1可用localhost代替。
1
2
3
4
5
6
7
8
9
<?php
phpinfo();
$link = mysql_connect('127.0.0.1','root','linux');
if ($link)
echo "Success...";
else
echo "Failure...";
mysql_close();
?>
第二种:以fpm的方式编译php。
首先解决依赖关系,安装bzip2-devel libmcrypt-devel libxml2-devel这三个包。注意,在配置yum源的时候,要配置系统安装源及epel源。
1、解压php源码包,同时使用configure命令,进行配置以及安装。
1
2
3
# cd php-5.4.40
# ./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 --enable-fpm --with-mcrypt--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
# make && make install
由于要以fpm的模式运行,所以要加入--enable-fpm该选项。就是将php作为一个单独的服务运行。
2、为php提供配置文件。
1
# cp php.ini-production /etc/php.ini
3、为php-fpm提供系统启动脚本。
1
2
3
4
# 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#开启该服务
4、为php-fpm提供配置文件,并编辑相关设置。
1
2
3
4
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
# cd /usr/local/php/etc/
# vim php-fpm.conf #编辑配置文件
# service php-fpm start #启动php服务
编辑配置文件,修改如下内容:
1
2
3
4
5
pm.max_children = 50#修改
pm.start_servers = 5#修改
pm.min_spare_servers = 2#修改
pm.max_spare_servers = 8#修改
pid = /usr/local/php/var/run/php-fpm.pid#添加
启动测试:
1、使用# ps aux | grep php-fpm进行查看,若有几个php-fpm进程就说明编译安装成功。
2、使用# netstat -tnlp | grep php-fpm查看,默认情况下,fpm监听在127.0.0.1的9000端口。
5、编辑/etc/http/httpd.conf,进行修改如下内容,使httpd支持php。
1
2
3
AddType application/x-httpd-php.php
AddType application/x-httpd-php-source.phps
DirectoryIndex index.php index.html
6、编辑/etc/http/httpd.conf,进行修改如下内容,使httpd支持fastcgi协议。在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载。
1
2
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
7、配置中心主机支持FastCGI。同样的,在相对应的虚拟主机添加如下内容就可。其中,/PATH/TO/DOCUMENT_ROOT/指代的为DocumentRoot所在的目录。
1
2
ProxyRequests Off #关闭正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。
编译安装httpd配置https服务:
在配置文件中,要把ssl模块给加入进去。同时要把ssl的配置文件以及vhosts的配置文件include进入httpd.conf文件中。
1
2
3
LoadModule ssl_module modules/mod_ssl.so
Include /etc/httpd/extra/httpd-ssl.conf
Include /etc/httpd/extra/httpd-vhosts.conf
页:
[1]