搭建LAMP

一个完整的LAMP的web架构由linux + http + mysql + php四部分搭建组成。

一、编译安装apache,使用httpd-2.4.6版

1、准备编译安装环境,解决依赖关系;

[root@localhost ~]# yum gruoplist
[root@localhost ~]# yum gruopinstall "Development tools" "Server Platfrom Development"

2、下载搭建httpd的软件包,apr、apr-util、httpd;

[root@localhost ~]# lftp 172.16.0.1
lftp 172.16.0.1:~> cd pub/Sources/sources/httpd/
lftp 172.16.0.1:/pub/Sources/sources/httpd> ls
.......
lftp 172.16.0.1:/pub/Sources/sources/httpd> mget apr-1.4.6.tar.bz2 apr-util-1.5.2.tar.bz2 httpd-2.4.6.tar.bz2
6428879 bytes transferred                             
Total 3 files transferred


[root@localhost ~]# ls
anaconda-ks.cfg    apr-util-1.5.2.tar.bz2  install.log
apr-1.4.6.tar.bz2  httpd-2.4.6.tar.bz2     install.log.syslog

3、编译安装apr;

[root@localhost ~]# tar xf apr-1.4.6.tar.bz2
[root@localhost ~]# cd apr-1.4.6
[root@localhost apr-1.4.6]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.4.6]# make && make install

4、编译安装apr-util;

[root@localhost ~]# tar xf apr-util-1.5.2.tar.bz2
[root@localhost ~]# cd apr-util-1.5.2
[root@localhost apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@localhost apr-util-1.5.2]# make && make install

5、编译安装httpd;

l

[root@localhost ~]# tar xf httpd-2.4.6.tar.bz2
[root@localhost ~]# cd httpd-2.4.6
[root@localhost httpd-2.4.6]# yum -y install pcre-devel
[root@localhost httpd-2.4.6]# yum -y install openssl-devel
[root@localhost httpd-2.4.6]# ./configure --prefix=/usr/local/apache  --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
[root@localhost httpd-2.4.6]# make && make install

6、提供httpd Sysv 服务脚本,修改httpd的配置文件,设置其pid文件的路径;

[root@localhost httpd-2.4.6]# cp build/rpm/httpd.init /etc/rc.d/init.d/httpd
cp: overwrite `/etc/rc.d/init.d/httpd'? y
[root@localhost httpd-2.4.6]# vim /etc/rc.d/init.d/httpd
prog=httpd
httpd=${HTTPD-/usr/local/apache/bin/httpd}
pidfile=${PIDFILE-/usr/local/apache/logs/${prog}.pid}
lockfile=${LOCKFILE-/var/lock/subsys/${prog}}
RETVAL=0
# check for 1.3 configuration
check13 () {
        CONFFILE=/usr/local/apache/conf/httpd.conf


[root@localhost httpd-2.4.6]# vim /usr/local/apache/conf/httpd.conf ServerName 172.16.20.5:80

7、为httpd服务添加环境变量;

[root@localhost ~]# echo "PATH=/usr/local/apache/bin/:$PATH" > /etc/profile.d/httpd.sh
[root@localhost ~]# source /etc/profile.d/httpd.sh

8、将httpd服务加入列表,将其启动。

[root@localhost ~]# chkconfig --add httpd
[root@localhost ~]# chkconfig httpd on
[root@localhost ~]# chkconfig --list httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@localhost ~]# service httpd start
Starting httpd:                                            [  OK  ]

二、编译安装mysql,使用mysql-5.5.28

1、准备编译安装环境,创建用于存储数据的文件系统,并下载解压mysql的通用二进制软件包;

[root@localhost ~]# mkdir -pv /mysql/mydata
mkdir: created directory `/mysql'
mkdir: created directory `/mysql/mydata'
[root@localhost ~]# lftp 172.16.0.1
lftp 172.16.0.1:~> cd pub/Sources/6.x86_64/mysql/
lftp 172.16.0.1:/pub/Sources/6.x86_64/mysql> ls
-rw-r--r--    1 0        0        186839926 Aug 22 04:37 mysql-5.5.33-linux2.6-x86_64.tar.gz
-rw-r--r--    1 0        0        307062424 Aug 22 05:15 mysql-5.6.13-linux-glibc2.5-x86_64.tar.gz
lftp 172.16.0.1:/pub/Sources/6.x86_64/mysql> get mysql-5.5.33-linux2.6-x86_64.tar.gz
186839926 bytes transferred in 21 seconds (8.31M/s)


[root@localhost ~]# tar  xf mysql-5.5.33-linux2.6-x86_64.tar.gz  -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ls
apache  apr-util  etc    include  lib64    mysql-5.5.33-linux2.6-x86_64  share
apr     bin       games  lib      libexec  sbin                          src
[root@localhost local]# ln -sv mysql-5.5.33-linux2.6-x86_64/ mysql
`mysql' -> `mysql-5.5.33-linux2.6-x86_64/'
[root@localhost local]# cd mysql
[root@localhost mysql]# ls
bin      data  include         lib  mysql-test  scripts  sql-bench
COPYING  docs  INSTALL-BINARY  man  README      share    support-files

2、创建mysql用户,并以安全方式运行;

[root@localhost mysql]# chown -R mysql:mysql *
[root@localhost mysql]# ll
total 200
drwxr-xr-x  2 mysql mysql   4096 Sep 11 22:32 bin
-rw-r--r--  1 mysql mysql  17987 Jul 15 20:01 COPYING
drwxr-xr-x  3 mysql mysql   4096 Sep 11 22:33 data
drwxr-xr-x  2 mysql mysql   4096 Sep 11 22:32 docs
drwxr-xr-x  3 mysql mysql   4096 Sep 11 22:33 include
-rw-r--r--  1 mysql mysql 134493 Jul 15 20:01 INSTALL-BINARY
drwxr-xr-x  3 mysql mysql   4096 Sep 11 22:33 lib
drwxr-xr-x  4 mysql mysql   4096 Sep 11 22:33 man
drwxr-xr-x 10 mysql mysql   4096 Sep 11 22:33 mysql-test
-rw-r--r--  1 mysql mysql   2496 Jul 15 20:01 README
drwxr-xr-x  2 mysql mysql   4096 Sep 11 22:33 scripts
drwxr-xr-x 27 mysql mysql   4096 Sep 11 22:33 share
drwxr-xr-x  4 mysql mysql   4096 Sep 11 22:33 sql-bench
drwxr-xr-x  3 mysql mysql   4096 Sep 11 22:33 support-files
[root@localhost ~]# useradd mysql
[root@localhost ~]# chown -R mysql:mysql /mysql/mydata
[root@localhost ~]# chmod -R 755 /mysql/mydata/

3、编译安装mysql,并进行初始化;

[root@localhost mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/mysql/mydata

4、为mysql服务添加环境变量;

[root@localhost mysql]# echo "PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysqld.sh
[root@localhost mysql]# source /etc/profile.d/mysqld.sh


5、为mysql服务提供主配置文件;

[root@localhost mysql]# cp support-files/my-large.cnf /etc/my.cnf
cp: overwrite `/etc/my.cnf'? y
[root@localhost mysql]# vim /etc/my.cnf
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 4
datadir = /mysql/mydata

6、为mysql服务提供Sysv服务脚本;

[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

7、赋权服务脚本,将服务加入列表,并启动mysql服务。

[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld
[root@localhost mysql]# chkconfig --add mysqld
[root@localhost mysql]# chkconfig mysqld on
[root@localhost mysql]# chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@localhost mysql]# service mysqld start
Starting MySQL..                                           [  OK  ]

三、编译安装php-fpm,使用php 5.4.19

1、基于开发编译环境,还需要额外解决相关的关系;

[root@localhost ~]# yum -y install libxml2-devel curl-devel bzip2-devel libmcrypt libmcrypt-devel

2、下载并编译安装php;

[root@localhost ~]# lftp 172.16.0.1
lftp 172.16.0.1:/pub/Sources/sources/php> mget php* xcache-3.0.3.tar.bz2
[root@localhost ~]# tar xf php-5.4.19.tar.bz2
[root@localhost ~]# cd php-5.4.19
[root@localhost php-5.4.19]# ./configure --prefix=/usr/local/php  --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl  --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml  --with-mhash --with-mcrypt  --with-config-file-path=/etc  --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl --enable-maintainer-zts --enable-fpm
[root@localhost php-5.4.19]# make and make install

3、为php服务提供主配置文件;

[root@localhost php-5.4.19]# cp php.ini-production /etc/php.ini
[root@localhost php-5.4.19]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@localhost php-5.4.19]# cd /etc/rc.d/init.d/
[root@localhost init.d]# cp init.d.php-fpm php-fpm
[root@localhost php-5.4.19]# cd /usr/local/php/etc/
[root@localhost etc]# cp  php-fpm.conf.default php-fpm.conf
[root@localhost etc]# vim php-fpm.conf
listen = 172.16.20.5:9000

4、为php服务添加环境变量

[root@localhost php-5.4.19]#  echo "PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH" >/etc/profile.d/php-fpm.sh
[root@localhost php-5.4.19]# source /etc/profile.d/php-fpm.sh

5、编辑apache的主配置文件,以apache支持php


[root@localhost ~]# vim /usr/local/apache/conf/httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
.............
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

6、将php-fpm服务加入列表,并启动php-fpm服务;

[root@localhost ~]# chmod +x /etc/rc.d/init.d/php-fpm
[root@localhost ~]# chkconfig --add php-fpm
[root@localhost ~]# chkconfig php-fpm on
[root@localhost ~]# chkconfig --list php-fpm
php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@localhost ~]# service php-fpm start
Starting php-fpm  done

7、重新启动httpd服务,并配置相关页面文件,访问相关web页面进行测试。