漫漫运维路——编译安装实现LAMP

LAMPLinux+Apache+MySQL|MariaDB+PHP组合实现动态php站点搭建的实现方式,在实现apache作为WEB服务器的情况下,Apache本身只负责处理静态页面相关的内容,如一段文字、一张图片、一张表格等静态内容,如果想要实现提供动态页面的功能,那么就得结合PHP或者python等程序的解释器才行。

一次客户端和服务器的交互去掉其建立通信的过程可大致要经过如下步骤,首先服务器端接收到客户端发送来的请求,然后分析其中所包含的内容,如有多少动态页面,有多少静态页面,然后把静态页面发送给后端的解释器,或者调用相关的解释模块来执行动态内容。由于解释器负责解释的动态内容是一个程序,而程序的执行往往就需要输入和输出,输入则需要数据,所以当解释器需要数据时又向数据库提出请求,从数据库中提取数据,然后解释器完成程序的执行反馈给apache服务器,最后由apache把执行的结果发送给客户端,从而完成一次响应过程。

搭建LAMP平台,可以以多种方式,可以把PHP编译为Apache的模块,也可以以fpm的机制,让PHP工作为一个独立的守护进程,在此将分别以这两种方式进行演示。

Modules方式实现

准备环境:

主机

IP

所安装平台

A

192.168.2.115

Apache+php

B

192.168.2.116

MySQL

实验步骤:

配置主机A

一、环境准备

首先在主机A上进行如下配置

确保网络通畅且YUM仓库配置正确后,安装编译环境

[root@bogon apr-1.5.0]# yum groupinstall "Development Tools" "Server Platform"


二、安装Apache

下载如下源码包:apr-1.5.0.tar.bz2  apr-util-1.5.3.tar.bz2  httpd-2.2.29.tar.gz

1、首先安装apr

解压apr-1.5.0.tar.bz2后切换至目录,依次执行以下步骤

[root@bogon apr-1.5.0]# ./configure --prefix=/usr/local/apr
[root@bogon apr-1.5.0]# make &&make install


2、安装apr-util

解压后切换至apr-util目录

[root@bogon apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@bogon apr-util-1.5.3]# make && make install


3、安装httpd

[root@bogon httpd-2.2.29]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --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 --with-apxs2=/usr/local/apache/bin/apxs
[root@bogon httpd-2.2.29]# make && make install


4、为http服务指定进程文件,并为其提供服务脚本

1)指定进程文件则在配置文件路径下编辑配置文件(当前环境的配置文件路径为/etc/httpd24/httpd.conf)添加如下一行

PidFile  "/var/run/httpd.pid"

2)为httpd服务提供服务脚本

新建文件/etc/rc.d/init.d/httpd,其内容如下

#!/bin/bash
#
# httpd Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#        HTML files and CGI.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd.pid
 
# 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"}
 
# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""
 
# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server
# with the thread-based "worker" MPM; BE WARNED that some modules may not
# work correctly with a thread-based MPM; notably PHP will refuse to start.
 
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
 
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 10 $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=$?
        echo $"not reloading due to configuration syntax error"
        failure $"not reloading $httpd due to configuration syntax error"
    else
        killproc -p ${pidfile} $httpd -HUP
        RETVAL=$?
    fi
    echo
}
 
# See how we were called.
case "$1" in
  start)
  start
  ;;
  stop)
  stop
  ;;
  status)
        status -p ${pidfile} $httpd
  RETVAL=$?
  ;;
  restart)
  stop
  start
  ;;
  condrestart)
  if [ -f ${pidfile} ] ; then
    stop
    start
  fi
  ;;
  reload)
        reload
  ;;
  graceful|help|configtest|fullstatus)
  $apachectl $@
  RETVAL=$?
  ;;
  *)
  echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
  exit 1
esac
 
exit $RETVAL


3)把apache的安装路径加入到PATH环境变量中,方便查找

/etc/profile.d目录下新建http.sh文件,并提供以下内容,然后重读配置文件

export  PATH=/usr/local/php/bin:/usr/local/apache/bin:$PATH


修改上一步httpd24文件权限,

[root@bogon httpd-2.2.29]# chmod +x /etc/rc.d/init.d/httpd24


(4)重启服务器测试

wKioL1VOw9mQugygAADInKMH0Zc534.jpg

三、安装php

1.解压php包后切换目录至php目录

[root@bogon php-5.4.40]# ./configure --prefix=/usr/local/php --with-openssl --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 --with-config-file-path=/usr/local/php/

[root@bogon php-5.6.8]# make && make install

2、调整apache参数,

1)在配置文件里(/etc/httpd24/httpd.conf)加入以下参数

wKioL1VOxBihxPe9AAFuef2Luvc113.jpg

2)定位至DirectoryIndex并添加如下项

wKiom1VOwrehRRzHAACA53wfFhc086.jpg

 

3)为php提供配置文件

[root@bogon php-5.6.8]# cp php.ini-production /etc/php/php.ini#
:
/etc/php
目录需要事先创建


4)提供测试页面

切换目录至:/usr/local/apache/htdocs目录。新建文件,其内容如下所示:

wKiom1VOwxyBKD97AAT3NXoCko0652.jpg 

(5)重启服务,测试

 

wKioL1VOxMODskvyAADeYmalLD4416.jpg

 

配置主机B

安装MairaDB,在此使用通用二进制格式安装

1.下载解压MairaDB

  解压后的目录下文件详解:

bin:二进制文件存放位置    

COPYING.LESSER  

EXCEPTIONS-CLIENT  

INSTALL-BINARY  

man:帮助文件         

README:安装指南   

share:共享文件路径      

support-files:提供支持功能的文件

COPYING  

data:默认数据存放位置            

include:头文件            

lib:库文件存放位置             

mysql-test:测试组件  

scripts:补充性样例性脚本

sql-bench:压力测试所用

2.MairaDB提供数据存放文件,运行所用用户和组,并修改相关权限

[root@localhost mariadb-5.5.40-linux-x86_64]# useradd -r -g 300 mysql
[root@localhost mariadb-5.5.40-linux-x86_64]# mkdir /data/mydata -pv
[root@localhost mariadb-5.5.40-linux-x86_64]# chown -R mysql:mysql /data/mydata/


3.MariaDB提供配置文件:查找顺序:/etc/my.cnf-->/etc/mysql/my.cnf-->~/.my.cnf

support-files目录下提供了相关配置文件样例

my-huge.cnf:内存较大文件所用

[root@localhost mariadb-5.5.40-linux-x86_64]# mkdir /etc/mysql
[root@localhost mariadb-5.5.40-linux-x86_64]# cp my-large.cnf /etc/mysql/my.cnf


修改配置文件/etc/mysql/my.cnf

[mysqld]段下添加如下内容

datadir = /data/mydata/

innodb_file_per_table = on

4.初始化mysql

在解压目录下的scripts目录下有个初始化脚本mysql_install_db

[root@localhost mariadb-5.5.40-linux-x86_64]# ./scripts/mysql_install_db --datadir=/data/mydata/ --user=mysql --skip-name-resolve


5.MariaDB提供服务文件,并修改环境变量PATH

[root@localhost mariadb-5.5.40-linux-x86_64]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost mariadb-5.5.40-linux-x86_64]# chmod +x /etc/rc.d/init.d/mysqld


/etc/profile.d/目录下新建文件mysql.sh

添加如下内容

export /usr/local/mysql/bin:$PATH

[root@localhost mariadb-5.5.40-linux-x86_64]#  . /etc/profile.d/mysql.sh 
:重读配置文件


复制源码包到/usr/local/并更名为mysql

[root@localhost tmp]# cp mariadb-5.5.40-linux-x86_64 /usr/local/mysql -r


6、重启服务并测试



wKioL1VOxSCwCxbEAAEsIxovIrM067.jpg

 

7、新建数据库discuz,并授权主机A可以使用test用户,helloword密码来链接

1)新建数据库

mysql> CREATE DATABASE discuz;


(2)授权


 wKioL1VOxZaQc4klAAEsIxovIrM374.jpg

(3)关闭防火墙,在主机A上测试

wKiom1VOw8TADQ-zAAI-Va3_nMA542.jpg 

(4).新建mysql测试页面。在/usr/local/apache/htdocs目录下新建mysql.php,其内容如下

wKiom1VOw-vSoULyAADuPq5n23Y811.jpg

 

重启服务器测试则无法显示页面有如下提示:


wKioL1VOxi6T50FnAAEdFbJF7Pk299.jpg

 

导致此原因是因为没有安装相关的mysql扩展,接下来就将演示安装mysql扩展过程。

2.添加mysql扩展

安装mysql客户端,在此直接用yum安装即可,

[root@bogon php-5.4.40]# yum install mysql mysql-devel -y


切换目录至php源码释放目录下的ext目录下的mysql目录,

[root@bogon php-5.4.40]# cd /tmp/by/php-5.4.40/ext/mysql


执行命令

[root@bogon mysql]# /usr/local/php/bin/phpize 
,出现如下提示信息


wKioL1VOxqDjY9KUAAETeiUtOLA948.jpg

 

进行mysql扩展编译

[root@bogon mysql]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql
[root@bogon mysql]# make && make install


切换到目录/usr/local/php/lib/php/extensions/no-debug-zts-20100525下用ls查看,如果出现mysql.so文件,则编译成功

wKioL1VOxr_z69pRAACvdrDTvEI004.jpg

 

修改php配置文件,增加如下一行

wKiom1VOxV_x-G-GAAISo3RFDkQ091.jpg

 

重启httpd测试

wKioL1VOxvLhFeR0AAI-GoFsTQE457.jpg

 

然后关闭主机B上的MySQL服务测试

wKiom1VOxdnBvHIuAAHyeNu3fqk502.jpg

 

此时平台搭建成功

四、安装ucenterdiscuz

1.下载 UCenter_1.5.2_SC_GBK.zipDiscuz_X2_SC_GBK.zip。解压

[root@localhost htdocs]# unzip -d /discuz Discuz_X2_SC_GBK.zip 
[root@localhost htdocs]# unzip -d /ucenter UCenter_1.5.2_SC_GBK.zip 
[root@localhost htdocs]# mkdir ucenter bbs


2.移动文件到相关目录

[root@localhost htdocs]# mv /discuz/upload/ ./bbs/
[root@localhost htdocs]# mv /ucenter/upload/ ./ucenter/


3.更改相关文件的权限

[root@localhost htdocs]# cd ucenter/
[root@localhost ucenter]# chown -R daemon ./data/
[root@localhost ucenter]# cd ../bbs/
[root@localhost bbs]# chown -R daemon *


4.修改php配置文件,在第一个short_open_tag的值改为On,表示启用短标签功能

[root@localhost htdocs]# vim /usr/local/php/php.ini


wKiom1VOxh7xCRn4AAOO0KJFmnY040.jpg

 

5.重启apache服务器安装测试

[root@localhost bbs]# service httpd24 restart


在物理机的浏览器中输入以下地址http://192.168.2.115/ucenter/install/index.php若出现以下界面。则成功


wKioL1VOx8WRgb1BAAHwT9YbngI942.jpg

 

 

根据提示安装

wKiom1VOxmbw9s3iAAIeP1AO6hk838.jpg

 

安装

wKioL1VOx_ug1oUEAAICW45xf18736.jpg

 

进入后台界面

wKiom1VOxp6CObEXAAEO-HXcsaA947.jpg

 

后台

 

wKiom1VOxtOzDyrCAANy5kLzxKc142.jpg


Ucenter至此安装成功下面安装discuz

6.安装discuz

在浏览器输入urlhttp://192.168.2.115/bbs/install

 

wKioL1VOyIejVydkAAPMGc48VBI602.jpg


 

根据提示安装即可

wKiom1VOxyaTRok8AANSBIF7c2Q918.jpg

 

安装后测试

wKioL1VOyLmzmaZ-AAMI8zlSqak480.jpg

 

至此discuz论坛基于LAMP安装成功


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章