继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

搭建高性能LAMP架构:LAMP+FastCGI

largeQ
关注TA
已关注
手记 960
粉丝 92
获赞 585


在生产环境中,Apache、MySQL、PHP通常都分别工作在不同的主机上,而且使用的是高可用集群,以分担单个服务器的压力,同时避免单点故障,所以,我今天向大家介绍的就是位于不同主机上的LAMP架构,使我们的操作更贴近生产环境

1、搭建前规划

操作系统Centos6.4 x86_64位

Apache ------> 172.16.251.77 (static IP)

MySQL -------> 172.16.251.78 (static IP)

PHP ---------> 172.16.251.79 (static IP)

2、环境准备

(1)配置yum网络源;

# cd /etc/yum.repos.d/

# mkdir bak

# mv *.repo bak

# cd

# vim /etc/yum.repos.d/CentOS-Base.repo

# CentOS-Base.repo

[base]

name=CentOS-$releasever - Base

baseurl=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/

enable=1

gpgcheck=1

gpgkey=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/RPM-GPG-KEY-CentOS-6

cost=1000

[fedora-epel]

name=Fedora EPEL

baseurl=http://172.16.0.1/fedora-epel/6/x86_64/

enable=1

gpgcheck=0

cost=2000

(2)系统时间同步:最好的做法是添加定时任务,每隔一定时间同步一次

# crontab -e

*/5 * * * * /sbin/hwclock -s &>/dev/null

# crontab -l

*/5 * * * * /sbin/hwclock -s &>/dev/null

# hwclock -s

(3)关闭防火墙(iptables和selinux)

清除链规则:iptables -F

关闭selinux:setenforce 0

查看selinux的状态:getenforce

3、Apache端:

(1)下载Apache相关源码包

[root@station123 ~]# mkdir tools  #创建一个目录,用于存放源码包,方便管理

[root@station123 ~]# cd tools/

[root@station123 tools]# ls

apr-1.5.0.tar.bz2  apr-util-1.5.3.tar.bz2  httpd-2.4.9.tar.bz2

[root@station123 ~]# lftp 172.16.0.1/pub

lftp 172.16.0.1:/pub> cd Sources/sources/httpd/

lftp 172.16.0.1:/pub/Sources/sources/httpd> mget apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2 httpd-2.4.9.tar.bz2

lftp 172.16.0.1:/> exit

(2)卸载系统自带的lamp软件包 

rpm -e `rpm -q mysql` --nodeps &>/dev/null

rpm -e `rpm -q httpd` --nodeps  &>/dev/null

rpm -e `rpm -q php` --nodeps  &>/dev/null

(3)安装编译所需依赖包:

yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel  krb5-devel libidn libidn-devel openssl openssl-devel pcre pcre-devel libtermcap  libtermcap-devel  gcc gcc-c++

(4)编译安装apr(1.5.0版本)和apr-util(1.5.3版本)

[root@station123 tools]# tar xf apr-1.5.0.tar.bz2 

[root@station123 tools]# cd apr-1.5.0

[root@station123 apr-1.5.0]# ./configure --prefix=/usr/local/apr

[root@station123 apr-1.5.0]# make && make install

[root@station123 apr-1.5.0]# cd ..

[root@station123 tools]# tar xf apr-util-1.5.3.tar.bz2 

[root@station123 tools]# cd apr-util-1.5.3

[root@station123 apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/

[root@station123 apr-util-1.5.3]# make && make install

[root@station123 apr-util-1.5.3]# cd ..

(5)编译安装Apache(httpd 2.4.9版本)

[root@station123 tools]# tar xf httpd-2.4.9.tar.bz2 

[root@station123 tools]# cd httpd-2.4.9

[root@station123 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=all --with-mpm=event

[root@station123 httpd-2.4.9]# make && make install

(6)修改httpd的主配置文件,设置其Pid文件的路径

编辑/etc/httpd/httpd.conf,添加如下行即可:

PidFile  "/var/run/httpd.pid"

(7)将httpd添加为系统服务,可使用service启动,并可使用chkconfig加载服务列表

[root@station123 ~]# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

[root@station123 ~]# vim /etc/init.d/httpd #添加如下两行(在第3行添加即可)

# chkconfig: - 85 15

# description: Apache is a World Wide Web server. 

[root@station123 ~]# chkconfig --add httpd

[root@station123 ~]# chkconfig --list httpd

httpd              0:off    1:off    2:off    3:off    4:off    5:off    6:off

[root@station123 ~]# chkconfig --level 35 httpd on

[root@station123 ~]# service httpd start

[root@station123 ~]# ss -tnl|grep ":80"

LISTEN     0      128                      :::80                      :::* 

(8)导出头文件,库文件和apache man 帮助信息

输出apache的头文件至系统头文件路径/usr/include:

这可以通过简单的创建链接实现:

[root@station123 httpd-2.4.9]# ln -sv /usr/local/apache/include /usr/include/apache

`/usr/include/apache' -> `/usr/local/apache/include'

输出apache的库文件给系统库查找路径:(我没看到),可先忽略它

[root@station123 ~]# ldconfig

导出apache的man帮助信息

[root@station123 ~]# vim /etc/man.config

MANPATH /usr/local/apache/man

测试httpd服务能否成功运行:

[root@station123 ~]# cd /usr/local/apache/htdocs #默认站点

[root@station123 htdocs]# ls

index.html

在浏览器输入http://172.16.251.77/看是否会出现"It Works"字样

我的在这里是ok的,参考截图httpd1-ok

至此,apache的配置告一段落

3、MySQL端:

(1)下载MySQL源码包

[root@station25 ~]# mkdir tools

[root@station25 ~]# cd tools/

[root@station25 tools]# lftp 172.16.0.1/pub/Sources

lftp 172.16.0.1:/pub> cd Sources/

lftp 172.16.0.1:/pub/Sources> cd 6.x86_64/

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 37 seconds (4.79M/s)                                       lftp 172.16.0.1:/pub/Sources/6.x86_64/mysql> exit

(2)创建运行mysql数据库的系统用户和系统组mysql

[root@station25 ~]# groupadd -r mysql

[root@station25 ~]# useradd -g mysql -r -s /sbin/nologin mysql

(3)编译安装mysql-5.5.33

[root@station25 tools]# tar xfz mysql-5.5.33-linux2.6-x86_64.tar.gz -C /usr/src

[root@station25 tools]# cd /usr/src/

[root@station25 src]# mv mysql-5.5.33-linux2.6-x86_64/ /usr/local/

[root@station25 src]# cd $_

[root@station25 local]# ln -sv mysql-5.5.33 mysql

`mysql' -> `mysql-5.5.33'

[root@station25 local]# ls

bin  etc  games  include  lib  lib64  libexec  mysql  mysql-5.5.33  sbin  share  src

(4)为数据库创建专门的数据存放目录和存储设备

[root@station25 ~]# mkdir /data #创建数据存放目录

[root@station25 ~]# fdisk /dev/sda  #创建磁盘分区

Command (m for help): n

Command action

  e   extended

  p   primary partition (1-4)

p

Partition number (1-4): 3

First cylinder (7859-15665, default 7859): 

Using default value 7859

Last cylinder, +cylinders or +size{K,M,G} (7859-15665, default 15665): +20G

Command (m for help): t

Partition number (1-4): 3 

Hex code (type L to list codes): 8e

Changed system type of partition 3 to 8e (Linux LVM)

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

echo -n -e "n\np\n3\n\n+20G\nt\n3\n8e\n\w\n" |fdisk /de/sda

执行操作1和操作2,以便新增磁盘分区可以系统快速识别

[root@station25 ~]# kpartx -af /dev/sda 操作1

device-mapper: reload ioctl on sda1 failed: Invalid argument

create/reload failed on sda1 

device-mapper: reload ioctl on sda2 failed: Invalid argument

create/reload failed on sda2

device-mapper: reload ioctl on sda3 failed: Invalid argument

create/reload failed on sda3

[root@station25 ~]# partx -a /dev/sda 操作2

BLKPG: Device or resource busy

error adding partition 1

BLKPG: Device or resource busy

error adding partition 2

查看新增的磁盘分区是否被系统识别

[root@station25 ~]# cat /proc/partitions 

major minor  #blocks  name

  8        0  125829120 sda

  8        1     204800 sda1

  8        2   62914560 sda2

  8        3   20979891 sda3  #sda3是我们刚才划分的,说明该分区此时已被系统识别

253        0   20971520 dm-0

253        1    2097152 dm-1

253        2   10485760 dm-2

253        3   20971520 dm-3

创建lvm卷,以应对数据库的快速增长

[root@station25 ~]# pvcreate /dev/sda3

 Physical volume "/dev/sda3" successfully created

[root@station25 ~]# vgcreate myvg /dev/sda3

 Volume group "myvg" successfully created

[root@station25 ~]# lvcreate -L 10G -n mydata myvg

Logical volume "mydata" created

查看系统当前的具有所有的lvs属性的逻辑卷

[root@station25 ~]# lvs

 LV     VG   Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert

 mydata myvg -wi-a---- 10.00g                                             

 root   vg0  -wi-ao--- 20.00g                                             

 swap   vg0  -wi-ao---  2.00g                                             

 usr    vg0  -wi-ao--- 10.00g                                             

 var    vg0  -wi-ao--- 20.00g  

格式化逻辑卷

[root@station25 ~]# mke2fs -t ext4 /dev/myvg/mydata

设置开机自动挂载

[root@station25 ~]# vim /etc/fstab 

/dev/myvg/mydata        /data                   ext4    defaults,noatime 0 0 

挂载/etc/fstab文件中所有支持自动挂载的文件系统/磁盘分区

[root@station25 ~]# mount -a

验证lvm设备是否挂载成功

[root@station25 ~]# mount|grep "/data"

/dev/mapper/myvg-mydata on /data type ext4 (rw,noatime)

[root@station25 ~]# cd /data/

[root@station25 data]# mkdir mydata

[root@station25 data]# chown -R mysql.mysql mydata/

[root@station25 data]# ll

total 20

drwx------ 2 root  root  16384 Mar 22 15:51 lost+found

drwxr-xr-x 2 mysql mysql  4096 Mar 22 15:55 mydata

初始化mysql

[root@station25 data]# cd /usr/local/mysql

[root@station25 mysql]# chown -R root.mysql ./*

[root@station25 local]# ln -sv mysql-5.5.33-linux2.6-x86_64 mysql

[root@station25 local]# cd mysql

[root@station25 mysql]# scripts/mysql_install_db --datadir=/data/mydata/ --user=mysql

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

[root@station25 mysql]# chkconfig --add mysqld

[root@station25 mysql]# chkconfig --list mysqld

mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:off

[root@station25 mysql]# cp support-files/my-large.cnf /etc/my.cnf

cp: overwrite `/etc/my.cnf'? y

[root@station25 mysql]# vim /etc/my.cnf

在[mysqld]自段下面添加

datadir = /data/mydata

并将thread_concurrency修改为CPU个数的2倍

thread_concurrency = 4

[root@station25 mysql]# service mysqld start

Starting MySQL.......                                      [  OK  ]

[root@station25 mysql]# ls /tmp/

ks-script-n4bQu7  ks-script-n4bQu7.log  mysql.sock  yum.log

将mysql命令添加至系统PATH变量

[root@station25 mysql]# vim /etc/profile.d/mysql.sh

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

[root@station25 mysql]# . $_

[root@station25 mysql]# mysql

mysql> select user,host,password from mysql.user;

+------+-------------------------+----------+

| user | host                    | password |

+------+-------------------------+----------+

| root | localhost               |          |

| root | station25.magelinux.com |          |

| root | 127.0.0.1               |          |

| root | ::1                     |          |

|      | localhost               |          |

|      | station25.magelinux.com |          |

+------+-------------------------+----------+

6 rows in set (0.01 sec)

mysql> use mysql

Database changed

mysql> update user set password=PASSWORD('123456') where user='root';

Query OK, 4 rows affected (0.04 sec)

Rows matched: 4  Changed: 4  Warnings: 0

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> drop user ''@'localhost';

Query OK, 0 rows affected (0.00 sec)

mysql> drop user ''@'station25.magelinux.com';

Query OK, 0 rows affected (0.00 sec)

mysql> exit

Bye

[root@station25 ~]# vim .my.cnf

[mysql]

user = root

host = localhost

password = 123456

导出头文件,且/usr/include/mysql不能写成/usr/include/mysql/这样的形式

[root@station25 ~]# ln -sv /usr/local/mysql/include/ /usr/include/mysql

`/usr/include/mysql' -> `/usr/local/mysql/include/'

[root@station25 ~]# vim /etc/ld.so.conf.d/mysql.conf

/usr/local/mysql/lib

[root@station25 ~]# ldconfig -p|grep mysql

   libtcmalloc_minimal.so.0 (libc6,x86-64) => /usr/local/mysql/lib/libtcmalloc_minimal.so.0

   libmysqlclient_r.so.16 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient_r.so.16

   libmysqlclient.so.18 (libc6,x86-64) => /usr/local/mysql/lib/libmysqlclient.so.18

   libmysqlclient.so.16 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.16

   libmysqlclient.so (libc6,x86-64) => /usr/local/mysql/lib/libmysqlclient.so

4、PHP端:

[root@station79 ~]# yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel  krb5-devel libidn libidn-devel openssl openssl-devel pcre pcre-devel libtermcap  libtermcap-devel  gcc gcc-c++

[root@station79 ~]# mkdir tools

[root@station79 ~]# cd tools/

[root@station79 tools]# lftp 172.16.0.1/pub/Sources/sources

cd ok, cwd=/pub                             

lftp 172.16.0.1:/pub/Sources/sources> cd php/

lftp 172.16.0.1:/pub/Sources/sources/php> mget php-5.4.26.tar.bz2 phpMyAdmin-4.0.5-all-languages.zip  xcache-3.0.3.tar.bz2

lftp 172.16.0.1:/pub/Sources/sources/php> exit

[root@station79 tools]# tar xf php-5.4.26.tar.bz2 

[root@station79 tools]# cd php-5.4.26

[root@station79 php-5.4.26]# ./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-mcrypt  --with-config-file-path=/etc  --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm

[root@station79 php-5.4.26]# make && make install

[root@station79 php-5.4.26]# cp php.ini-production /etc/php.ini

[root@station79 php-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

[root@station79 php-5.4.26]# chmod +x /etc/init.d/php-fpm 

[root@station79 php-5.4.26]# chkconfig --add php-fpm

[root@station79 php-5.4.26]# chkconfig php-fpm on

[root@station79 php-5.4.26]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

编辑php-fpm的配置文件:

# vim /usr/local/php/etc/php-fpm.conf

配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):

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 

说明:pid这里原本是一个相对路径,而且和我们编译安装的位置不一样,所以需要修改,但是,若你在编译php的时候,若没有指定pid文件的存放路径,那你怎么知道pid文件在哪呢?

方法:grep pid /etc/init.d/php-fpm

php_fpm_PID=${prefix}/var/run/php-fpm.pid 

其他无效信息已省略...

${prefix}指的是php编译安装的路径,即为/usr/local/php

启动php-fpm

[root@station79 php-5.4.26]# service php-fpm start

Starting php-fpm  done

使用如下命令来验正(如果此命令输出有中几个php-fpm进程就说明启动成功了):

[root@station79 php-5.4.26]# ps aux|grep "php-fpm"|grep -v "grep"

root      4278  0.0  0.4  69468  4604 ?        Ss   17:13   0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)                                                                    

nobody    4279  0.0  0.3  69468  3932 ?        S    17:13   0:00 php-fpm: pool www                                                                                                            

nobody    4280  0.0  0.3  69468  3936 ?        S    17:13   0:00 php-fpm: pool www                                                                                                            

nobody    4281  0.0  0.3  69468  3936 ?        S    17:13   0:00 php-fpm: pool www                                                                                                            

nobody    4282  0.0  0.3  69468  3936 ?        S    17:13   0:00 php-fpm: pool www                                                                                                            

nobody    4283  0.0  0.3  69468  3936 ?        S    17:13   0:00 php-fpm: pool www   

默认情况下,fpm监听在127.0.0.1的9000端口,也可以使用如下命令验正其是否已经监听在相应的套接字

[root@station79 php-5.4.26]# ss -tnl|grep ":9000"

LISTEN     0      128               127.0.0.1:9000                     *:*     

######################Starting##############################

Apache 77 

创建站点目录及测试页

# mkdir -p /web/{a.com,b.org}/htdocs

[root@station123 ~]# cd /etc/httpd/extra/

[root@station123 extra]# vim httpd-vhosts.conf

[root@station123 extra]# service httpd graceful

[root@station123 extra]# ss -tnl|grep ":80" |grep -v "grep"

LISTEN     0      128                      :::80                      :::*     

[root@station123 extra]# /etc/init.d/httpd -M  #查看已被编译安装的模块

Loaded Modules:  #主要是为了看proxy_module (shared),proxy_fcgi_module (shared)是否编译进去

core_module (static)

so_module (static)

http_module (static)

authn_file_module (shared)

authn_core_module (shared)

authz_host_module (shared)

authz_groupfile_module (shared)

authz_user_module (shared)

authz_core_module (shared)

access_compat_module (shared)

auth_basic_module (shared)

reqtimeout_module (shared)

filter_module (shared)

mime_module (shared)

log_config_module (shared)

env_module (shared)

headers_module (shared)

setenvif_module (shared)

version_module (shared)

proxy_module (shared)     

proxy_fcgi_module (shared)

mpm_event_module (shared)

unixd_module (shared)

status_module (shared)

autoindex_module (shared)

dir_module (shared)

alias_module (shared)

[root@station123 extra]# cd ..

[root@station123 httpd]# ls

conf.d  extra  httpd.conf  magic  mime.types  original

主配置文件相关的操作:

[root@station123 httpd]# vim httpd.conf

# 在httpd主配置文件中将中心主机用"#"注释掉,操作如下行:

#DocumentRoot "/usr/local/apache/htdocs"

# 在默认首页位置添加index.php,这样,服务器被访问的时候,就会先找到index.php,若该文件存在,就停止查找;若该文件不存在,就会继续向右查找,以此类推

<IfModule dir_module>

   DirectoryIndex  index.php  index.html

</IfModule>

# 因为在后面我要在/etc/httpd/extra/httpd-vhosts.conf中,即在扩展配置文件中定义虚拟主机,所以

需要开启Virtual hosts的功能,操作如下2行:

# Virtual hosts 此行是注释不用理会

Include /etc/httpd/extra/httpd-vhosts.conf  #此行默认是被注释掉的,要启用它,需将行首的#去掉

添加如下两行:

AddType application/x-httpd-php  .php

AddType application/x-httpd-php-source  .phps

作用:

#若proxy_module和proxy_fcgi_module模块已成功编译进httpd,那么在主配置文件中就会有下面这样两行,

#不过,这两行默认都未被启用,若想启用,将这两行行首的注释去掉

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

扩展配置文件相关的操作:

[root@station123 httpd]# cd extra

[root@station123 extra]# vim httpd-vhosts.conf

<VirtualHost *:80>

   ServerAdmin webadmin@a.com

   DocumentRoot "/web/a.com/htdocs"

   ServerName www.a.com

   ServerAlias a.com

   ErrorLog "logs/a.com-error_log"

   CustomLog "logs/a.com-access_log" combined

       <Directory "/web/a.com/htdocs">

               Options None

               Require all granted

       </Directory>

   ProxyRequests Off

   ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.251.79:9000/web/a.com/htdocs/$1

</VirtualHost>

<VirtualHost *:80>

   ServerAdmin webadmin@b.org

   DocumentRoot "/web/b.org/htdocs"

   ServerName www.b.org

   ServerAlias b.org

   ErrorLog "logs/b.org-error_log"

   CustomLog "logs/b.org-access_log" combined

       <Directory "/web/b.org/htdocs">

               Options None

               Require all granted

       </Directory>

   ProxyRequests Off

   ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.251.79:9000/web/b.org/htdocs/$1

</VirtualHost> 

向Apache端/etc/hosts文件中添加域名解析

172.16.251.77 www.a.com a.com  www.b.org b.org

因为我们待会要通过宿主机的浏览器,使用域名来访问我们的站点,所以我们也需要修改宿主机的hosts文件,以便支持域名解析功能,(若有DNS就更好了)

路径:C:\Windows\System32\drivers\etc

添加如下行

172.16.251.77 www.a.com www.b.org www.c.com www.d.org

有时候,宿主机上的防火墙可能会阻止我们修改此文件,暂时关闭宿主机上的防火墙即可

78 MySQL端,此时不用进行其他的配置

79 PHP端,配置如下:

[root@station79 ~]# vim /usr/local/php/etc/php-fpm.conf

# 修改监听的地址为PHP所在服务器IP,端口不变,默认是监听127.0.0.1:9000

listen = 172.16.251.79:9000

启动php-fpm服务

[root@station79 php-5.4.26]# service php-fpm restart

Gracefully shutting down php-fpm warning, no pid file found - php-fpm is not running ?

Starting php-fpm  done

查看监听的地址是否为本机IP(172.16.251.79),且端口为9000

[root@station79 php-5.4.26]# ss -tnl|grep ":9000"

LISTEN     0      128           172.16.251.79:9000              

创建站点目录

[root@station79 php-5.4.26]# mkdir -p /web/{a.com,b.org}/htdocs

[root@station79 php-5.4.26]# cd 

[root@station79 ~]# vim /web/a.com/htdocs/index.php

Wecome to www.a.com

<?php

   phpinfo();

?>

[root@station79 ~]# vim /web/b.org/htdocs/index.php

Wecome to www.b.org

<?php

   phpinfo();

?>

添加完测试页后,其实不需要重启php-fpm服务的

查看php-fpm脚本都支持哪些选项

[root@station79 htdocs]# service php-fpm 

Usage: /etc/init.d/php-fpm {start|stop|force-quit|restart|reload|status}

启动php-fpm服务

[root@station79 php-5.4.26]# service php-fpm reload

至此,所有配置工作已完成

现在,我们可通过宿主机的浏览器来访问刚刚我们新建的站点了

www.a.com/ 或 a.com

www.b.org 或 b.org

都可访问相应的站点

结果我已保存成网页,可供大家查看

   到目前为止,位于不同主机上的LAMP架构已搭建完毕,不过由于时间有限,我只能先介绍到这里,稍后,我会在此文的基础上继续为大家演示如何使用php加速插件,提高访问速度,以及LAMP架构的优化,使我们的站点逐渐健壮起来。

   歉意:此文,尚未仔细排版,有些粗糙,还请各位博友多多包涵,稍后我会对此文重新排版发布的....

下面我将为php程序安装一个加速插件,并使之生效

[root@station79 ~]# cd tools/

[root@station79 tools]# tar xf xcache-3.0.3.tar.bz2 

[root@station79 tools]# cd xcache-3.0.3

[root@station79 xcache-3.0.3]#  /usr/local/php/bin/phpize

[root@station79 xcache-3.0.3]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config

[root@station79 xcache-3.0.3]# make && make install

安装结束时,会出现类似如下行:

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

编辑php.ini,整合php和xcache:

首先将xcache提供的样例配置导入php.ini

# mkdir /etc/php.d

# cp xcache.ini /etc/php.d

说明:xcache.ini文件在xcache的源码目录中。

接下来编辑/etc/php.d/xcache.ini

早期的xcache版本,找到zend_extension开头的行,修改为如下行:

zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

xcache 3.0.3版本,操作如下:

[xcache-common]

;; non-Windows example:

extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

;; Windows example:

; extension = php_xcache.dll

注意:如果php.ini文件中有多条zend_extension(早期版本)或extension(新版本)指令行,要确保此新增的行排在第一位。

保存退出,并重启service php-fpm restart

访问测试已ok

©著作权归作者所有:来自51CTO博客作者文丑非良将的原创作品,谢绝转载,否则将追究法律责任

LAMP+FastCGI+xcacheLinux 高可用高性能集群


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP