1、概述
php
首先,如标题所示我接下来的实验就是搭建一个LAMP平台而后实现一个Blog站点的实现,那"Php基于Apache的模块实现"这又是神马意思呢,咱们知道Apache与Php的结合方式有常见的三种:基于module、基于CGI、基于Fast-CGI;html
基于Module,指的就是Php在Apache编译时就直接编译成模块,以模块化的方式进行工做的,而当Apache须要解析Apache脚本时,它将直接调用这个模块的功能就能够了,它做为Apache的一个子进程来工做,而无需启动一个单独的进程,这里的前提就是Apache必须先装载Php模块;
前端
基于CGI,Common Gateway Interface通用网关接口,它是一种特殊的协议;例如客户端请求了资源,httpd自己是没法解析脚本的,它也不可能将脚本执行之后返还给客户端,所以若是咱们想在服务器端当用户请求一些特定资源时,将这种资源不是直接返还给客户端,而是让这个资源在服务器上先执行,把结果交给httpd,最后再回复给客户端,因而再详细点说就是:httpd自己不具有任何资源的解析功能,那就只能让httpd基于CGI协议将去调用客户请求的资源相对应的须要执行程序所拥有的执行环境来解析(例如这里提到的Php脚本资源),环境再将执行的结果返还给httpd,最后再将结果响应给客户端;因此CGI是能让咱们的httpd服务能跟某一个应用程序执行环境进行通讯而且能从这个环境获取执行结果的协议;全部可以基于CGI协议工做的协议都可以用做开发动态网站;可是CGI协议过于粗糙和简陋而且基于这种模式通讯时它要求后端应用程序为了到达某种目的、获取某种资源必需要以管理员的身份去运行,这样一来就又有安全隐患了;因而基于CGI这样的模式逐渐淘汰了....因此如今有不少动态网站与前端通讯时都再也不基于CGI,好比Php的SAPI机制、Python的UWSGI的机制等等...它们使得这些脚本在执行时无需使用系统资源权限,而是在本身的程序环境中运行,对某些目录有操做权限就足够了;
mysql
基于Fast-CGI,上面我已经提到了基于模块时Php的工做模式,若是httpd启动的进程都运行Php代码,因此它会启动多个Php进程,对于httpd来讲这些进程之后还须要关闭、收回、管理等等这样就变得很是的麻烦了,因而我为何不让Php本身运行为一个服务,相似于httpd的prefork工做模式同样:启动时生成多少个子进程、最大空闲进程、最小空闲进程等等,当httpd须要运行Php代码时基于套接字链接Php这个服务所监听的端口上,将Php代码发送给Php由它其中的一个进程响应并解释运行后将结果返回给httpd,基于这样的机制,Php和httpd通讯就须要一种协议了,这种协议就是Fast-CGI,因而这样一来Php做为一个单独的服务能够运行了,那咱们就能够将它独立出来运行在不一样的主机上了;
linux
一、apache是服务器基础,php和mysql都须要他来协调工做,注意,客户端的请求只是对Apache,而且Apache不会和MYSQL之间直接通讯,而是基于某个应用程序链接到数据库sql
二、php是脚本解释语言,负责httpd服务器发过来须要解析Php脚本的功能,若是不用php那么apache出来的东西就只是静态的内容,完成解析后结果将返回httpd,最后返回给客户端,后端的话Php经过一个mysql_connect于MYSQL建链接关系数据库
三、mysql是数据库,彻底能够单独使用,可是和另外两个一块儿,则是由php代码调用mysql接口,而Php就负责解释php代码,让他能真正地实现对mysql的调用apache
这三者的关系放在这里,大概能够这样理解成这样vim
上图只是说明三者之间的关系,可是我要基于php模块来搭建的话就将HTTP与PHP整合到一台主机上了,让MYSQL独立出来,下面是拓扑图:
如今稍微理清了下思绪,咱们开始来进行实验吧,
1、实验说明:
一、启动两台Centos6.5_X86-64系统的虚拟机,分别做为HTTP+PHP(fastcgi)、MYSQL;
HTTP+PHP(fastcgi) IP -> 172.16.41.1
ServerName -> www.maoqiu.com
MYSQ IP -> 172.16.41.2
ServerName -> mysql.maoqiu.com
二、Client使用个人Windows;并在hosts文件中填入httpd服务器的IP及主机名对应关系;
172.16.41.1 www.maoqiu.com
实验准备:
1.由于要用到yum,因此请事先确保好yum源的配置是否已经稳当
2.开发工具的支持
[root@www ~]# yum groupinstall -y "Development tools" [root@www ~]# yum groupinstall -y "Server Platform Development"
实验步骤:
2、源码编译安装httpd-2.4.9
一、安装httpd依赖包pcre-devel(yum安装便可)
[root@www ~]# yum install -y pcre-devel
二、解压已获取到的httpd-2.4.9,apr,apr-util软件包,并安装:
#→解压安装apr [root@www ~]#tar -xf apr-1.5.0.tar.bz2 -C /usr/src/ [root@www ~]# cd /usr/src/apr-1.5.0 [root@www apr-1.5.0]# ./configure \ > --prefix=/usr/local/apr #→指定其安装位置 [root@www apr-1.5.0]# make && make install #→解压安装apr-util [root@www ~]#tar -xf apr-util-1.5.3.tar.bz2 -C /usr/src/ [root@www ~]# cd /usr/src/apr-util-1.5.3 [root@www apr-util-1.5.3]# ./configure \ > --prefix=/usr/local/apr-util \ #→指定其安装位置 > --with-apr=/usr/local/apr #→指定apr安装在哪一个位置的 [root@www apr-util-1.5.3]# make && make install #→解压安装httpd [root@www ~]#tar -xf httpd-2.4.9.tar.bz2 -C /usr/src [root@www ~]# cd /usr/src/httpd-2.4.9 [root@www httpd-2.4.9]# ./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=most --with-mpm=event 说明 --prefix=/usr/local/apache2 #→指定其安装位置 --sysconfdir=/etc/httpd2 #→指定配置文件安装位置 --enable-so #→启用基于DSO的方式动态加载模块 --enable-ssl #→启用基于https协议的功能 --enable-cgi #→启用基于cgi协议的功能 --enable-rewrite #→启用支持URL重写的功能 --with-zlib #→指定支持在互联网上发送数据报文时,通用的压缩库的API --with-pcre #→指定支持poll的cgi --with-apr=/usr/local/apr #→指定par的安装路径 --with-apr-util=/usr/local/apr-util/ #→指定par-util的安装路径 --enable-modules=most #→启用大多数经常使用的模块 --enable-mpms-shared=all #→启用加载全部的mpm模块 --with-mpm=event #→指定接下来httpd的工做模式是event [root@www httpd-2.4.9]# make && make install
补充:
(1)构建MPM为静态模块
在所有平台中,MPM均可以构建为静态模块。在构建时选择一种MPM,连接到服务器中。若是要改变MPM,必须从新构建。为了使用指定的MPM,请在执行configure脚本 时,使用参数 --with-mpm=NAME。NAME是指定的MPM名称。编译完成后,可使用 ./httpd -l 来肯定选择的MPM。 此命令会列出编译到服务器程序中的全部模块,包括 MPM.
(2)构建 MPM 为动态模块
在Unix或相似平台中,MPM能够构建为动态模块,与其它动态模块同样在运行时加载。 构建 MPM 为动态模块容许经过修改LoadModule指令内容来改变MPM,而不用从新构建服务器程序。在执行configure脚本时,使用--enable-mpms-shared选项便可启用此特性。当给出的参数为all时,全部此平台支持的MPM模块都会被安装。还能够在参数中给出模块列表。默认MPM,能够自动选择或者在执行configure脚本时经过--with-mpm选项来指定,而后出如今生成的服务器配置文件中。编辑LoadModule指令内容能够选择不一样的MPM.
三、修改httpd的主配置文件,设置其Pid文件的路径
#编辑/etc/httpd/httpd.conf,添加以下行便可: PidFile "/var/run/httpd.pid"
四、提供SysV服务脚本/etc/rc.d/init.d/httpd,内容以下:
#此服务脚本咱们复制之前系统自带的httpd服务的脚本,而后作下修改 [root@www httpd]# cp /etc/rc.d/init.d/httpd /etc/rc.d/init.d/httpd2 [root@www httpd]# vim /etc/rc.d/init.d/httpd2 # processname: httpd # config: /etc/httpd/conf/httpd.conf # config: /etc/sysconfig/httpd # pidfile: /var/run/httpd.pid # ### BEGIN INIT INFO # Provides: httpd # Required-Start: $local_fs $remote_fs $network $named # Required-Stop: $local_fs $remote_fs $network # Should-Start: distcache # Short-Description: start and stop Apache HTTP Server # Description: The Apache HTTP Server is an extensible server # implementing the current HTTP standards. ### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions if [ -f /etc/sysconfig/httpd ]; then . /etc/sysconfig/httpd fi # Start httpd in the C locale by default. HTTPD_LANG=${HTTPD_LANG-"C"} INITLOG_ARGS="" apachectl=/usr/local/apache2/bin/apachectl #→改变一下咱们编译安装后的程序路径 httpd=${HTTPD-/usr/local/apache2/bin/httpd} #→改变一下咱们编译安装后的程序路径 prog=httpd pidfile=${PIDFILE-/var/run/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd} RETVAL=0 STOP_TIMEOUT=${STOP_TIMEOUT-10} start() { echo -n $"Starting $prog: " LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS RETVAL=$? echo [ $RETVAL = 0 ] && touch ${lockfile} return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd RETVAL=$? echo [ $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 echo } # See how we were called. 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 #为此服务脚本赋予执行权限并加入开机启动项: [root@www httpd]# chmod +x /etc/rc.d/init.d/httpd2 [root@www httpd]# chkconfig --add httpd2 [root@www httpd]# chkconfig --list httpd2 httpd2 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@www httpd]# chkconfig httpd2 on [root@www httpd]# chkconfig --list httpd2 httpd2 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@www httpd]# #注意:这时候必定要把系统自动的那个httpd服务给停掉!
五、验证咱们的编译安装是否成功了
#启动我源码编译安装的httpd服务 [root@www httpd]# service httpd2 start Starting httpd: [ OK ] [root@www httpd]# [root@www httpd]# ps -elFH 1 S root 1037 1 0 80 0 - 18186 poll_s 2180 0 01:17 ? 00:00:00 /usr/local/apache2/bin/httpd 5 S daemon 1039 1037 0 80 0 - 104251 pipe_w 4076 0 01:17 ? 00:00:00 /usr/local/apache2/bin/httpd 5 S daemon 1040 1037 0 80 0 - 104251 pipe_w 4080 0 01:17 ? 00:00:00 /usr/local/apache2/bin/httpd 5 S daemon 1041 1037 0 80 0 - 104251 pipe_w 4088 0 01:17 ? 00:00:00 /usr/local/apache2/bin/httpd #看到上面的数据没有,默认启动了三个进程,工做在event模式下的 #网页访问一下: [root@www httpd]# echo "<h1>Source Apache.<h1>" >/usr/local/apache2/htdocs/index.html [root@www httpd]# service httpd2 reload #→重载一下配置文件 Reloading httpd: [root@www httpd]#
OK!个人Apache编译安装测试成功...告一段落!
3、二进制编译安装MYSQL
注意开发环境的支持,按照上面的安装就好了,这里我直接就开始解压安装了
一、准备数据存放的文件系统
#新建一个逻辑卷,并将其挂载至特定目录,至于为何要用逻辑卷,后面详说 [root@mysql ~]# fdisk /dev/sda [root@mysql ~]# mke2fs -t ext4 /dev/sda3 [root@mysql ~]# mkdir -p /databases/data [root@mysql ~]# vim /etc/fstab /dev/sda3 /databases/ ext4 defaults 0 0 [root@mysql ~]# mount -a
二、新建用户以安全方式运行进程
[root@mysql ~]# groupadd -r mysql [root@mysql ~]# useradd -g mysql -r -s /sbin/nologin -M -d /databases/data mysql [root@mysql ~]# chown -R mysql:mysql /databases/data
三、安装并初始化mysql-5.5.33
[root@mysql ~]# cd /usr/local/ [root@mysql local]# ln -sv mysql-5.5.33-linux2.6-x86_64 mysql `mysql' -> `mysql-5.5.33-linux2.6-x86_64' [root@mysql local]# cd mysql [root@mysql mysql]# chown -R mysql:mysql ./* [root@mysql mysql]# scripts/mysql_install_db --user=mysql --datadir=/databases/data [root@mysql mysql]# chown -R root ./*
四、为mysql提供主配置文件
[root@mysql mysql]# cp support-files/my-large.cnf /etc/my.cnf #并修改此文件中thread_concurrency的值为你的CPU个数乘以2,好比这里使用以下行: thread_concurrency = 2 #另外还须要添加以下行指定mysql数据文件的存放位置: datadir = /databases/data
五、为mysql提供sysv服务脚本
[root@mysql ~]# cd /usr/local/mysql [root@mysql mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld [root@mysql mysql]# chmod +x /etc/rc.d/init.d/mysqld [root@mysql mysql]# chkconfig --add mysqld [root@mysql mysql]# chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@mysql mysql]#
六、修改PATH环境变量,让系统能够直接使用mysql的相关命令
[root@mysql mysql]# vim /etc/profile.d/mysqld.sh export PATH=/usr/local/mysql/bin:$PATH #加入此行 [root@mysql mysql]# source /etc/profile.d/mysqld.sh
七、启动服务并测试
[root@mysql mysql]# service mysqld start Starting MySQL... [ OK ] [root@mysql mysql]# mysql [root@mysql mysql]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.5.33-log MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> #→成功登陆! #→为root用户设密码,并删除没必要要的用户 mysql> use mysql Database changed mysql> select host,user,password from user; +------------------+------+----------+ | host | user | password | +------------------+------+----------+ | localhost | root | | | mysql.maoqiu.com | root | | | 127.0.0.1 | root | | | ::1 | root | | | localhost | | | | mysql.maoqiu.com | | | +------------------+------+----------+ 6 rows in set (0.00 sec) mysql> DELETE FROM user WHERE User = '' ; #→删除用户为空的条目 Query OK, 2 rows affected (0.00 sec) mysql> DELETE FROM user WHERE User = '::1' ; #→删除IPV6相关的这个条目 Query OK, 0 rows affected (0.00 sec) mysql> select host,user,password from user; +------------------+------+----------+ | host | user | password | +------------------+------+----------+ | localhost | root | | | mysql.maoqiu.com | root | | | 127.0.0.1 | root | | +------------------+------+----------+ 3 rows in set (0.00 sec) mysql> FLUSH PRIVILEGES; #→作了操做必定要记得刷新数据库 Query OK, 0 rows affected (0.01 sec) mysql> UPDATE user SET password = PASSWORD('guo.150019') WHERE password = ''; Query OK, 3 rows affected (0.01 sec) Rows matched: 3 Changed: 3 Warnings: 0 mysql> select host,user,password from user; +------------------+------+-------------------------------------------+ | host | user | password | +------------------+------+-------------------------------------------+ | localhost | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | | mysql.maoqiu.com | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | | 127.0.0.1 | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | +------------------+------+-------------------------------------------+ 3 rows in set (0.00 sec) mysql> #→作了操做必定要记得刷新数据库
八、为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还须要进行以下步骤
#输出mysql的man手册至man命令的查找路径: [root@mysql mysql]# vim /etc/man.config MANPATH /usr/local/mysql/man #→添加此行便可 #输出mysql的头文件至系统头文件路径/usr/include: [root@mysql mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql #→经过简单的建立连接实现 #输出mysql的库文件给系统库查找路径: [root@mysql mysql]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf [root@mysql mysql]#ldconfig #→让系统从新载入系统库:
好了,个人MYSQL源码编译安装告一段落!
4、编译安装PHP-5.4.26
好,回到咱们的httpd服务器上面去继续安装php...
注意开发环境的支持,除了按照上面安装那些开发工具包以外咱们还须要添加几个:
[root@www ~]# yum -y groupinstall "Desktop Platform Development" [root@www ~]# yum -y install bzip2-devel libmcrypt-devel
就好了,这里我直接就开始解压安装了
一、解压已获取到的php-5.4.26软件包,并安装
[root@www ~]# cd /usr/src/php-5.4.26/ [root@www php-5.4.26]# ./configure--prefix=/usr/local/php --with-openssl --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --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/apache2/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts #说明: --prefix=/usr/local/php #→指定其安装位置 --with-openssl #→指定支持openssl功能 --with-mysql=mysqlnd #→指定与mysql服务器的连接 --with-mysqli=mysqlnd #→指定与mysql服务器的连接 --with-pdo-mysql=mysqlnd #→指定与mysql服务器的连接 --enable-mbstring #→支持多字节string --with-freetype-dir #→指定安装的字体库头文件 --with-jpeg-dir #→指定jpeg类型的库 --with-png-dir #→指定支持png类型的库 --with-zlib #→支持互联网上通用压缩库,先压缩再传送,减小带宽 --with-libxml-dir=/usr #→指定xml库文件的路径 --enable-xml #→启用支持xml功能 --enable-sockets #→启用php支持套接字功能 --with-apxs2=/usr/local/apache2/bin/apxs #→基于apxs实现让php编译成apache模块 --with-mcrypt #→支持额外的加密库 --with-config-file-path=/etc #→指定php配置文件放置路径 --with-config-file-scan-dir=/etc/php.d #→指定php配置文件的分段文件放置路径 --with-bz2 #→指定支持压缩库 --enable-maintainer-zts #→当apache使用worker或event这两个MPM,编译时使用该选项 [root@www php-5.4.26]# make && make test && make install
说明:
(1)这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。
(2)若是使用PHP5.3以上版本,为了连接MySQL数据库,能够指定mysqlnd,这样在本机就不须要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,能够编译时绑定到它(而不用和具体的MySQL客户端库绑定造成依赖),但从PHP 5.4开始它就是默认设置了。
--with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd
[root@www php-5.4.26]# cp php.ini-production /etc/php.ini
三、编辑apache配置文件httpd.conf,以apache支持php
[root@www ~]# vim /etc/httpd2/httpd.conf #添加如下两行 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps #定位至DirectoryIndex index.html #修改成: #DirectoryIndex index.php index.html
四、添加测试文件,并测试
#我先在mysql服务器上面创建一个mysql的远程管理账号 [root@mysql ~]# mysql -uroot -pguo.150019 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 47 Server version: 5.5.33-log MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> GRANT ALL PRIVILEGES ON *.* TO 'guomaoqiu'@'%' IDENTIFIED by 'guo.150019'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; #→必定要记得刷新数据库哦! Query OK, 0 rows affected (0.00 sec) mysql> use mysql; Database changed mysql> select host,user,password from user; +------------------+-----------+-------------------------------------------+ | host | user | password | +------------------+-----------+-------------------------------------------+ | localhost | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | | mysql.maoqiu.com | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | | 127.0.0.1 | root | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | | % | guomaoqiu | *736C3B5499F163A84CCB2C0F176F3ABC93410FB5 | +------------------+-----------+-------------------------------------------+ 4 rows in set (0.00 sec) #在个人httpd服务器上面添加一个测试页面,看PHP和MYSQL是否能正常工做了 [root@www ~]# cd /usr/local/apache2/htdocs/ [root@www htdocs]# mv index.html index.php [root@www htdocs]# vim index.php <?php $link = mysql_connect('172.16.41.2','guomaoqiu','guo.150019'); if ($link) echo "Connect to Mysql server success!"; else echo "Connect to Mysql server failure!"; mysql_close(); phpinfo(); ?> [root@www htdocs]# service httpd2 reload Reloading httpd: [root@www htdocs]#
我在浏览器里面访问一下:
OK!如今个人php和mysql都能工做了,下面我再把mysql的图形化管理工具phpMyAdmin给安装上
5、搭建phpMyadmin管理平台以及wordpress我的博客系统
为了phpMyadmin这个工具经过单独的一个页面服务的方式来访问外,等下咱们还有一个博客系统也须要本身的文档目录因此我这里将使用虚拟机的方式来搭建各个站点:
一、搭建phpMyadmin管理平台
(1)在http服务器上关闭中心主机,启用虚拟主机
#编辑主配置文件 [root@www ~]# vim /etc/httpd2/httpd.conf #定位到下面这行后将此行添加注释 DocumentRoot "/usr/local/apache2/htdocs" #DocumentRoot "/usr/local/apache2/htdocs" #定位到下面这行后将此行取消注释 #Include /etc/httpd2/extra/httpd-vhosts.conf Include /etc/httpd2/extra/httpd-vhosts.conf
(2)编辑虚拟主机文件启用虚拟主机
[root@www ~]# vim /etc/httpd2/extra/httpd-vhosts.conf #我如今把中心主机也给定义到这里面来 <VirtualHost *:80> ServerAdmin guomaoqiu@sina.com #→HTTP管理员邮箱 DocumentRoot "/usr/local/apache2/htdocs" #→中心主机的DocumentRoot ServerName www.maoqiu.com CustomLog "logs/access_log" combined ErrorLog "logs/error_log" <Directory "/usr/local/apache2/htdocs"> #→这里定义的是要对该目录受权,这是httpd2.4的大改变之一 Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>
(3)安装phpMyadmin工具
[root@www ~]# mkdir /usr/local/apache2/htdocs/phpmyadm #→建立的根目录 [root@www ~]# tar xf phpMyAdmlin-3.4.10.1-all-languages.tar.bz2 [root@www ~]# cp -r phpMyAdmin-3.4.10.1-all-languages/* /usr/local/apache2/htdocs/phpmyadm/ #→将该工具的全部文件拷贝至文至这个工具的根目录 [root@www htdocs]# cp config.sample.inc.php config.inc.php [root@www htdocs]# vim config.inc.php #这行两个冒号之间咱们须要一串cookie码,随机生成一个填在里面 $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ $cfg['Servers'][$i]['host'] = '172.16.41.2'; #→这是mysql服务器地址 [root@www htdocs]# openssl rand -hex 10 #→经过openssl生成一串随机码 ddf5bab147f6cfaef020 $cfg['blowfish_secret'] = 'ddf5bab147f6cfaef020'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
(4)测试我phpMyadmin可否正常工做了
在浏览器中输入http://www.maoqiu.com/phpmyadm
能够访问了...如今登陆一下试试
OK!phpMyadmin可使用了,下面我把wordpress搭建起来
二、搭建wordpress我的博客系统
(1)解压安装wordpress
[root@www ~]# unzip wordpress-3.3.1-zh_CN.zip [root@www ~]# cd wordpress #为其提供配置文件 [root@www wordpress]# cp wp-config-sample.php wp-config.php #我以前不是说过这个博客系统须要另一台虚拟主机来实现的吗,因此下面建立一个做为博客系统根的目录 [root@www wordpress]# mkdir -p /web/blog/wordpress/htdocs #再将我如今所在目录下的文件所有移动到那个目录中去 [root@www wordpress]# mv ./* /web/blog/wordpress/htdocs/
(2)配置虚拟主机
[root@www ~]# vim /etc/httpd2/extra/httpd-vhosts.conf #添加如下内容: <VirtualHost *:80> DocumentRoot "/web/blog/wordpress/htdocs" #→这是wordpress博客系统的根目录 ServerName www.wordguo.org #→这是它的主机名 CustomLog "logs/blog-access_log" combined #→访问日志 ErrorLog "logs/blog-error_log" #→错误日志 <Directory "/web/blog/wordpress/htdocs"> #→定义对于这个文档根目录的一个访问权限 Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost> #保存退出!
(4)配置数据库,咱们都知道博客系统的帐户都是存在后端的数据库中的,故此现须要建立一个博客的数据库
[root@mysql ~]# mysql -uroot -pguo.150019 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.5.33-log MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE DATABASE worddb; #→这是博客系统的数据库 Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON worddb.* TO 'worduser'@'%' IDENTIFIED BY 'guo.150019'; #→我受权worduser用户对该数据库具备管理权限,而且它能够在任何远程主机上登录该数据库操做 Query OK, 0 rows affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | | worddb |#→已经建立好了 +--------------------+ 5 rows in set (0.00 sec) mysql> FLUSH PRIVILEGES; #→千万要记得刷新数据库 Query OK, 0 rows affected (0.00 sec) mysql>
(3)修改wordpress配置文件
[root@www ~]# vim /web/blog/wordpress/htdocs/wp-config.php #修改下面四项便可 define('DB_NAME', 'worddb'); #→WordPress 数据库的名称 define('DB_USER', 'worduser'); #→MySQL 数据库用户名 define('DB_PASSWORD', 'guo.150019'); #→MySQL 数据库密码 define('DB_HOST', '172.16.41.2'); #→MySQL 主机 #保存退出!
(3)从新加载配置文件
[root@www ~]# service httpd2 reload Reloading httpd: [root@www ~]#
(4)测试,在客户端浏览器中输入http://www.wordpress.org 便可!
(注意,我这里并无搭建DNS,故此处的名称解析将在客户端hosts文件中定义)
OK!看到出来了吧,此时我已经把我的博客的资料填写好了直接点击“安装wordpress”
点击“登陆” 输入用户名和密码,再点“登陆”
OK! 我登陆以后由于第一次安装wordpress这个系统,直接就到后台管理页面了,我点击首页便可!
6、总结
以上实验介绍了httpd、php以及mysl的编译安装,构建了一个简单的LAMP平台,实现了HTTP+Apache+Mysql+Php+Wordpress/Phpmyadmin的一个简易场景;在实验过程中也由于本身的马虎有许多配置都错了 ,不得不反复的测试,反复的修改,最终才搭建出来上面这样的环境;
在整个实验过程当中用到的知识点有如下几点:
一、当客户端对httpd服务器发起了一个Php脚本请求时,咱们的httpd服务器自身不能解析执行该Php脚本文件的,因而它将此请求交予Php解释环境来执行;
二、httpd除了基于CGI和Php通讯外,还有多种方式(后面会有实验案例);
三、httpd是模块化的,有core+module构成,咱们能够将Php编译成httpd的一个模块,让它在httpd启动的同时加载该模块,此时就成为了httpd的一个子进程、子功能来运行;
四、若是使用PHP5.3以上版本,为了连接MySQL数据库,能够指定mysqlnd,这样在本机就不须要先安装MySQL或MySQL开发包了。mysqlnd从php5.3开始可用,能够编译时绑定到它(而不用和具体的MySQL客户端库绑定造成依赖),但从PHP 5.4开始它就是默认设置了。编译php时,若是须要驱动mysql,使用--with-mysql=mysqlnd等几个选项;
五、客户端与httpd之间基于HTTP/HTTPS协议通讯、httpd与Php通讯时它已经成为了httpd的一部分,在其内部就完成工做、而Php与Mysql之间通讯则经过API基于mysql协议来实现;
六、若是mysql与其余应用程序不在一主机上那就须要受权具备远程链接访问权限的mysql用户账号;
OK!自此为止...下篇将介绍 分离式LAMP+NFS的平台搭建小生能力有限,各位大牛多多指点!