Centos 6编译安装lamp

平台

	Centos 6.10

软件版本

	httpd:2.4.25,编译安装
	mariadb-server:5.5.47,编译安装
	mysql:5.1.73,yum安装
	php:5.6.23,编译安装
	wordpress:4.5.3
	phpMyAdmin:4.9.5

一、编译安装httpd2.4.25

1、安装编译环境组“Development Tools”:
	#yum groupinstall “Development Tools” -y
2、各软件官网下载对应版本的源码包;
3、安装httpd所需的依赖包:apr、apr-util、pcre、openssl
	a、安装apr(yum源提供的apr-devel包版本为1.3.9,需求版本1.4.0及以上
		需到官网下载源码包编译安装):
		# wget https://archive.apache.org/dist/apr/apr-1.5.0.tar.gz ;此处选用1.5.0
			的版本
		# tar xf apr-1.5.0.tar.gz ;解压源码包
		# cd apr-1.5.0 ;进入源码包目录
		# ./configure --prefix=/usr/local/apr-1.5.0 ;仅设置安装目录
		# make && make install;编译并安装
		# cd /usr/local/ &&ln -sv apr-1.5.0 apr && cd - ;设定apr到apr-1.5.0的软链
	b、安装apr-util(选择等同或高于apr版本的包,此处选择1.5.1的版本):
		# wget https://archive.apache.org/dist/apr/apr-util-1.5.1.tar.bz2
		# tar xf apr-util-1.5.1.tar.bz2
		# cd apr-util-1.5.1
		# ./configure --prefix=/usr/local/apr-util-1.5.1 --with-apr=/usr/local/apr
		# make && make install
		# cd /usr/local && ln -sv apr-util-1.5.1 apr-util && cd -
	c、安装pcre(yum源中的包版本符合安装需求,直接yum安装):
		# yum install pcre-devel -y
	d、安装openssl (同上):
		# yum install openssl-devel -y
4、#tar xf httpd-4.2.25.tar.bz2 ;解压源码包
 	 #ln -sv httpd-4.2.25 httpd ;创建源码包的软链
 	 #cd httpd;进入目录
 	 #./configure --prefix=/usr/local/httpd-2.4.25 ; 指定安装目录
 	 				    --enable-modules=all ;编译所有可用模块
 	 				    --enable-mods-shared=all ;允许所有模块共享
 	 				    --enable-deflate ;允许deflate压缩传输
 	 				    --enable-proxy ;允许代理模块
 	 				    --enable--proxy-http ;允许http代理模块
 	 				    --enable-proxy-ftp ;允许ftp代理模块
 	 				    --enable-proxy-fcgi ;允许fastCGI代理模块
 	 				    --enable-ssl ;允许ssl加密模块
 	 				    --enable-mpms-shared ;允许mpm动态加载
 	 				    --enable-rewrite ;允许URL重写
 	 				    --with-mpm=event ;设置mpm默认为event
 	 				    --with-apr=/usr/local/apr;设置apr的安装路径
 	 				    --with-apr-util=/usr/local/apr-util;设置apr-util的安装路径
 	 				    --with-libxml2 ;允许xml解析的开发工具包(系统中已安装)
 	 	其他选项涉及的相关功能如需对应包的支持,如果系统中未安装或版本
 	 	不符合要求,则要自行安装符合版本的安装包,并在编译程序找不到其
 	 	安装路径时,指定其安装路径;
 	# make -j4
 	# make install
 	# cd /usr/local && ln -sv httpd-2.4.25 httpd
5、编写服务脚本:根据httpd rpm包提供的脚本文件修改一份简单的脚本文件;
	#cat < /etc/init.d/httpd24
	#!/bin/bash
	#chkconfig: - 85 15
	source /etc/init.d/functions
	HTTPD_LANG=C
	httpd=/usr/local/httpd/bin/httpd
	prog=httpd
	pidfile=/usr/local/httpd/logs/httpd.pid
	lockfile=/var/lock/subsys/httpd24
	RETVAL=0
	STOP_TIMEOUT=10

  	start() {
  		echo -n $"starting $prog: "
  		LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd
	    RETVAL=$?
	     [ $RETVAL = 0 ] && touch ${lockfile}
    	return $RETVAL
		}

	stop() {
   		if [[ -f /usr/local/httpd/logs/httpd.pid ]]; then
           	 echo -n $"Stopping $prog: "
           	 killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
    	else
            echo -n $"Stopping $prog: "
            success
   		fi
    	RETVAL=$?
    	[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
		}

 	reload() {
		echo -n $"Reloading $prog: "
		 if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
    		RETVAL=6
    		echo $"not reloading due to configuration syntax error"
    		failure $"not reloading $httpd due to configuration syntax error"
		else
   		 # Force LSB behaviour from killproc
   		LSB=1 killproc -p ${pidfile} $httpd -HUP
    	RETVAL=$?
    	if [ $RETVAL -eq 7 ]; then
       		 failure $"httpd shutdown"
    	fi
		fi
		}
	
	case "$1" in
	  start)
    			start
   		 	;;
  		stop)
        		stop
        	;;
  		status)
       		 	status -p ${pidfile} $httpd
        		RETVAL=$?
       		;;
  		restart)
        		stop
        		start
        	;;
  		condrestart|try-restart)
        		if status -p ${pidfile} $httpd >&/dev/null; then
                stop
                start
	       		fi
        	;;
  		force-reload|reload)
        		reload
        	;;
		graceful|help|configtest|fullstatus)
        		$apachectl $@
        		RETVAL=$?
       		;;
  		*)
        		echo $"Usage: $prog {start|stop|restart|condrestart|try-restart
        		|force-reload|reload|status|fullstatus|graceful|help|configtest}"
        		RETVAL=2
	esac
	exit $RETVAL
	EOF
	# chkconfig --add httpd24
	# chkconfig --list httpd24
6、依据需求修改配置文件,启动服务;
	# vi /usr/local/httpd/conf/httpd.conf ;主配置文件
 	# service httpd24 start ;启动httpd服务
7、浏览器访问主机,页面显示‘it works’,服务启动成功

二、编译安装miriadb-5.5.47

1、由于php的编译安装是基于以安装的httpd和mariadb进行的,所有后两者要先
	于php进行安装;
2、# tar xf mariadb-5.5.47.tar.gz ;解压压缩包
	 # less mariadb-5.5.47/BUILD-CMAKE ;查看源码包内编译安装说明文件
	 # yum install cmake ;安装文件要求安装cmake编译器(此包包含在
	 	“Development Tools”包组内,但安装包组时默认未安装此包,需额外安装)
	 # yum install ncurses-devel ;
	 	编译要求curses库
	 # mkdir mariadb-make && cd mariadb-make ;
	 	创建编译目录,进入目录(保证源码包的纯净)
	 # cmake -LH ../mariadb-5.5.47 ;显示编译选项
	 	CMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql ;
	 	默认安装目录为/usr/local/mysql
	 #  cmake ../mariadb-5.5.47
	 	默认编译
	 # make 
	 # make-install
3、# mv /usr/local/mysql /usr/local/mariadb-5.5.47
	修改目录为对应的软件版本号
   # ln -sv /usr/local/mariadb-5.5.47 /usr/local/mariadb
    创建mariadb软链到当前版本目录
   # cd /usr/local/mariadb
    进入程序目录
   # less INSTALL-BINARY
    查看程序安装说明,建议如下步骤:
    shell> groupadd -r mysql
	shell> useradd -g mysql -r mysql
	shell> chown -R mysql .
	shell> chgrp -R mysql .
	shell> scripts/mysql_install_db --user=mysql
	shell> chown -R root .
	shell> chown -R mysql data
	shell> bin/mysqld_safe --user=mysql &
4、复制安装目录中的脚本文件到/etc/init.d目录下,并添加服务
	#cp /usr/local/mariadb/support-files/mysql.server /etc/init.d/mariadb-server
		依据需求修改mariadb-server文件中的相关变量
	#chkconfig --add mariadb-server
		添加服务
	#chkconfig --list mariadb-server 
		查看服务是否添加成功
5、复制/usr/loca/maraidb/sr/loca/maraidb/support-files/的适用配置文件到/etc/
	目录下:
	#cp /usr/local/mariadb/support-files/my.huge.cnf /etc/my.cnf
	修改配置文件中你所需要修改的参数并保存
6、启动服务:
	# service mariadb-server start
	# ss -tanl |grep 3306 ;mysqld服务监听的端口号为3306
7、使用mysql命令连接数据库,成功登陆则服务启动成功
	修改root用户的空密码;
	删除用户名为空的用户;
	刷新授权;
Tip:
	1、root用户密码忘记无法登陆时:
		首先停止服务;
		然后使用如下命令启动服务:
			/usr/local/mariadb/bin/mysqld_safe --skip-grant-tables --skip-networking
		最后登陆mysql服务器修改密码:
			#mysql 
			

三、编译安装php

1、# tar xf php-5.6.23.tar.gz ;解压php源码包;
   # cd php-5.6.23 ;进入源码目录;
   # less INSTALL ;查看安装说明
   # ./configure --help |less ;查看编译选项;
2、编译源码包:
	#./configure 
		--prefix=/usr/local/php-5.6.23;设定安装目录
		--with-apxs2=/usr/local/httpd/bin/apxs;编译php为httpd的动态模块所需的
			httpd的扩展编译和安装工具
		--enable-fpm ;允许fpm模式
		--with-fpm-user=php-fpm ;运行fpm的用户(事先创建php-fpm系统用户和组)
		--with-fpm-group=php-fpm ;运行fpm的组
		--with-config-file-path=/usr/local/php-5.6.23 ;配置文件存放位置
		--with-config-file-scan-dir=/usr/local/php-5.6.23/php.d ;其他配置文件目录
		--with-pcre-regex;支持pcre(需安装pcre-devel包)
		--with-openssl;支持openssl(需安装openssl-devel包)
		--with-zlib ;支持zlib压缩(需安装zlib-devel包)
		--with-mysqli=/usr/local/mariadb/bin/mysql_config;mysqli连接器的编译工具位置
		--with-mysql-sock=/tmp/mysql.sock ;mysqld进程sock文件位置(一般在
				my.cnf中有设置)
		--enable-mbstring;支持多字节字符串(针对中文网站)
		--with-jpeg-dir ;支持jpeg格式
		--with-freetype-dir ;支持freetype格式
		--with-png-dir ;支持png格式
		--enable-sockets ;套接字支持
		--with-libxml-dir ;支持libxml2(需安装libxml2-devel包)
		--with-bz2 ;支持bz2 (需安装bzip2-devel包)
		--with-mcrypt ;支持mcrypt (需安装libmcrypt-devel包)
		--enable-maintainer-zts ;支持httpd线程模式的php模块
	#make 
	#make install
3、配置php
	1、复制php主配置文件php.in到安装目录
		#cp php.ini-production /usr/local/php-5.6.23 (编译时指定的配置文件路径)
		#cd /usr/local && ln -sv php-5.6.23 php && cd php
		#mkdir php.d (编译时指定的配置文件目录)
	2、配置作为httpd服务的模块使用:
		php编译完成后在httpd服务的模块路径生成libphp5.so模块:
			/usr/local/httpd/modules/libphp5.so
		并在httpd主配置文件中添加一行模块加载指令:
			LoadModule php5_mod modules/libphp5.so
		需要编译httpd主配置文件httpd.conf:
			补充DirectoryIndex指令:
				DirectoryIndex index.html index.php
			添加httpd对php文件类型的支持:
				AddType application/x-httpd-php 	.php
				AddType application/x-httpd-php-source	.phps
		# /usr/local/httpd/bin/httpd -t ;测试配置文件语法
		# service httpd24 reload ;重载配置文件
			(首次reload可能会失败,可以使用restart)
		#/usr/local/httpd/bin/httpd -M|grep php;结果显示php模块已加载
	3、配置使用php-fpm服务
		配置php-fpm:
			# cp etc/php-fpm.conf.default etc/php-fpm.conf ;复制etc目录下的默认
				配置文件为php-fpm.conf,并修改其中配置
			# cp /tmp/make/php-5.6.23/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm;
				复制编译目录中使用于centos 6的服务脚本到/etc/init.d目录中,并
				修改相关配置
			# chmod +x /etc/init.d/php-fpm ;服务脚本添加执行权限
			# chkconfig --add php-fpm ;添加服务
			# chkconfig --list php-fpm;查看服务是否添加成功
		配置httpd:
			编辑httpd.conf主配置文件:
				#LoadModule php_mod modules/libphp5 ;取消加载php模块
				AddType application/x-httpd-php .php
				AddType application/x-httpd-php-source .phps
				Include conf/conf.d/*.conf ;在/usr/local/httpd/conf目录下创建conf.d目录
						并包含进主配置文件中
			编辑conf/conf.d/php-fpm.conf文件:
				#cat  < conf/conf.d/php-fpm.conf
				

四、测试页测试lamp连通性

1、#cat < /usr/local/httpd/htdocs/index.php
	
	EOF
	创建httpd连接php和mysqld的测试页;
2、分别使用php-module和php-fpm配置,访问服务器主页index.php;
	显示success和php信息页,则lamp服务部署成功

五、部署wordpress(博客网站)

1、tar xf wordpress-4.5.3-zh_CN.tar.gz -C /www/html ;
	解压wordpress包,获得wordpress-4.5.3-zh_CN目录
2、ln -sv wordpress-4.5.3-zh_CN /usr/local/httpd/htdocs/wordpress ;
	在httpd的站点目录下创建到wordpress站点文件的软链
3、检查wordpress目录及文件的权限是否满足web访问;
4、在/usr/local/httpd/conf/conf.d目录下配置wordpress.conf文件
	#cat < /usr/local/httpd/conf/conf.d/wordpress.conf
	#
		Options Indexes FollowSymLinks
		AllowOverride none
		Require all granted
	
	EOF
5、连入mysqld,创建wordpress账号及数据库:
	#mysql -uroot -ppassword
	

六、部署phpMyAdmin(mysqld的web-gui管理工具)

1、unzip phpMyAdmin-4.9.5-all-languages.zip;
	解压文件得到phpMyAdmin-4.9.5-all-languages目录
2、ln -sv phpMyAdmin-4.9.5-all-languages /usr/local/httpd/htdocs/phpMyAdmin
	创建phpMyAdmin文件目录在httpd站点目录下的软链;
3、修改phpMyAdmin的配置文件
	# cd /usr/local/httpd/htdocs/phpMyAdmin
	# cp config.sample.inc.php config.inc.php
	修改config.inc.php文件中的下列字段:
		$cfg['blowfish_secret'] = '';在‘’中填入一定数量的随机字符串
		$cfg['blowfish_secret'] = 'dc740d3df57bbea26fd83298605e6514';
4、在/usr/local/httpd/conf/conf.d配置文件目录中创建phpMyAdmin配置文件
	# cat << EOF > /usr/local/httpd/conf/conf.d/phpMyAdmin.conf
	
		Options Indexes FollowSymLinks
		AllowOverride none
		Require ip 127.0.0.1
	
	EOF
5、重载httpd服务
	# /usr/local/httpd/bin/httpd -t ;测试配置文件语法
	# service httpd24 reload;
6、访问phpMyAdmin主页:
	http://localhost/phpMyAdmin

七、注入xcache模块

php也支持类似apache的扩展模块的使用,来丰富其功能;
xcache:php的缓存扩展,加速动态内容的访问
1、可以在使用xcache之前,先进行动态网页的访问测试:
	#ab -c 100 -n 1000 localhost/phpmyadmin/index.php
	*	Requests per second:    64.96 [#/sec] (mean)
		Time per request:       15.393 [ms] 
	*	Requests per second:    66.62 [#/sec] (mean)
		Time per request:       15.010 [ms]
2、下载适用php-5.6.23的xcache版本源码并编译安装:
	#wget https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz
	#tar xf xcache-3.2.0.tar.gz 
	#cd xcache-3.2.0
	#less INSTALL ;查看源码包下安装说明文件
	#/usr/local/php/bin/phpize --clean ;
	#/usr/local/php/bin/phpize ;执行PHP安装目录下的phpize命令
	#./configure --help |less ;查看配置选项
	#./configure
		 --prefix=/usr/local/xcache-3.2.0 ;安装路径
		 --with-php-config=/usr/local/php/bin/php-config ;php拓展的编译入口
		 --enable-xcache ;允许xcache扩展
	#make -j4 ;
	#make install ;安装完成在php安装路径的lib/php/extensions/no-debug
		-zts-20131226目录下生成opcache.so和xcache.so模块
3、配置PHP使用xcache模块:
	复制编译目录中的xcache.ini配置文件到php的扩展配置文件目录php.d中
	并在xcache.ini中添加或修改以下指令:
		extension=/usr/local/php/lib/php/extensions/no-debug-zts-
			20131226/xcache.so
	重启php-fpm服务
		# service php-fpm restart
	访问phpinfo信息页,查看xcache是否配置成功;
4、再次进行动态网页的访问测试:
	#ab -c 100 -n 1000 localhost/phpMyAdmin/index.php
	*	Requests per second:    151.80 [#/sec] (mean)
		Time per request:       6.588 [ms]
	*	Requests per second:    165.50 [#/sec] (mean)
		Time per request:       6.042 [ms]
	对比使用xcache扩展之前,由于缓存的存在,速度有较大的提升;

八、配置lamp+php-fpm的https访问

lamp的https访问和静态网页的https访问设置是一样的,因为https
是在tcp连接建立之前双方先进行ssl会话协定加密信息,然后使用协定
的加密信息对后续tcp连接传输的数据进行数据加密,保证数据安全性。
所以并不对静态内容请求或动态内容请求的处理过程造成干扰。

1、mod_ssl模块:
	httpd要支持https访问,需要载入ssl_mod模块,在yum安装时,该模块
	包含在安装包mod_ssl中;在编译安装httpd时,使用--enable-ssl选项
	会在安装目录modules目录下生产mod_ssl模块,如编译时未使用此选项
	则需要单独编译该模块,并复制到modules下
2、配置使用:
	mod_ssl模块的配置使用包括:模块装载指令、ssl vhosts配置文件
	yum安装时,自动生成了此两个配置文件,分别为:
		/etc/httpd/conf.modules.d/ssl.conf配置文件,包含以下指令:
			 LoadModule ssl_module modules/mod_ssl.so
		/etc/httpd/conf.d/ssl.conf配置文件,该文件配置了包括:
			Listen、session、sslcryption、cert、key等指令,以及基于443端口的
			虚拟机配置
		对该配置文件稍作修改,重载httpd服务即可进行https访问
	编译安装时,假如编译选项包含了--enable-ssl,则在安装目录下modules目录
	中包含了mod_ssl模块,在conf/extra目录下包含了httpd-ssl.conf配置文件,我
	们需要进行以下操作来使用他们:
		#echo “ LoadModule ssl_module modules/mod_ssl.so” > 			  
		conf/conf.d/mod_ssl.conf ;创建conf/conf.d/mod_ssl.conf文件,并配置
				指令加载mod_ssl模块
		#cp conf/extra/httpd-ssl.conf conf/conf.d/ssl.conf ;复制httpd-ssl.conf
				配置文件到httpd配置文件搜索目录中;
		修改ssl.conf配置文件中需要修改的部分,如网站证书及ssl会话密钥文
		件位置(自用证书的签署和颁发参见openssl 命令详解)
		# httpd -t ;检查配置文件语法
		# service httpd reload ;重载服务以生效配置

	配置中的小问题:保持设定的一致性
		创建了目录httpd2.4.25的软链httpd;
		配置文件的配置路径用的软链httpd;
		而复制的编译目录下的httpd-ssl.conf文件,却使用的httpd2.4.25路径;
		从而导致80端口可以访问,而443端口访问却提示权限拒绝;
		修改httdp-ssl.conf文件中httpd2.4.25为httpd后访问正常
		Tip:软链的权限设定应该就是原目录的权限设定,但不懂为什么权限拒绝;
			文件路径的配置最好保持一致,已避免出错;

九、配置80端口访问默认转向443访问

1、在主配置文件httpd.conf中,启用mod_rewrite模块:
	LoadModule rewrite_module modules/mod_rewrite.so
2、在conf.d目录中添加虚拟机配置文件80-to-443-vhost.conf,内容如下:
	
		ServerName test.ijia.com
		RewriteEngine on
		RewriteCond %{SERVER_PORT} !~^443$
		RewriteRule ^/?(.*)$ https://${SERVER_NAME}/$1 [R]
	
3、重载httpd服务:
	#httpd -t ;测试配置文件语法;
	#service httpd reload ;重载httpd服务
4、打开浏览器访问80端口会被转向到443端口

你可能感兴趣的:(笔记)