您的位置:首页 > 运维架构 > 网站架构

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

2014-03-25 07:49 246 查看
在生产环境中,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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LAMP+FastCGI+xcache