LAMP: 分布式 HTTP 2.4.25 + PHP 5.4.13 + MySQL 5.5.28 分离部署
目录
A. 环境说明:
B. 效果截图:
C. HTTP编译安装
D. MySQL二进制安装
E. PHP源码编译安装
F. PHP连接HTTP
G. PHP支持扩展功能xcache
H. PHP连接MySQL
I. 部署phpMyAdmin
A.环境说明:
- 系统: CentOS 6.6 x32
- 部署模式: 分离式(三个服务部署到三台服务器上)
- 版本: HTTP 2.4.25 + PHP 5.4.13 + MySQL 5.5.28
- IP规划: HTTP: 192.168.205.116 PHP: 192.168.205.117 MySQL: 192.168.205.115
B.效果截图:
C.HTTP编译安装:
1.编译安装apr
1) wget http://mirrors.hust.edu.cn/apache//apr/apr-1.5.2.tar.gz
2) tar xf apr-1.5.2.tar.gz
3) cd apr-1.5.2
4) ./configure
5) make && make install
2.编译安装apr-util
1) wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz
2) cd apr-util-1.5.4
3) tar xf apr-util-1.5.4.tar.gz
4) ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
5) make && make install
3.编译安装httpd
1) yum install pcre-devel -y
2) yum install openssl-devel -y
3) wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.25.tar.bz2
4) tar xf httpd-2.4.25.tar.bz2
5) cd httpd-2.4.25
6) ./configure \
--prefix=/usr/local/httpd \
--sysconfdir=/etc/httpd \
--enable-so \
--enable-rewrite \
--enable-ssl --enable-cgi \
--enable-cgid --enable-modules=most \
--enable-mpms-shared=all \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-ssl=/usr/local/openssl \
--enable-proxy \
--enable-proxy-fcgi
7) make && make install
4.关闭selinux和防火墙
1) setenforce 0
2) vim /etc/selinux/config
SELINUX=enforcing
3) getenforce
4) iptables -F && service iptables save
5.修改配置文件
1) vim /etc/httpd/httpd.conf
2) 添加 PidFile "/var/run/httpd.pid": 修改pid进程文件位置
6.服务启动验证
1) /usr/local/httpd/apachectl start
2) netstat -tnlp
7.创建启动文件
1) vim /etc/init.d/httpd
. /etc/rc.d/init.d/functions
#chkconfig:
# # pull in sysconfig settings
[ -f /etc/sysconfig/httpd ] && . /etc/sysconfig/httpd
HTTPD_LANG=${HTTPD_LANG-"C"}
INITLOG_ARGS=""
#apachectl=/usr/local/apache/bin/apachctl
#httpd=${HTTPD-/usr/local/apache/bin/httpd}
httpd=${HTTPD-/usr/local/httpd/bin/apachectl}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL= start()
{
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq ] && touch $lockfile
return $RETVAL
} stop()
{
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d $httpd
RETVAL=$?
# if we are in halt or reboot runlevel kill all running sessions
# so the TCP connections are closed cleanly
echo
[ $RETVAL -eq ] && 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
} restart() {
stop
start
} case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $httpd
RETVAL=$?
;;
restart)
restart
;;
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
esac exit $RETVAL
httpd
2) 添加执行权限
a) chmod +x /etc/init.d/httpd
3) 加入到启动服务列表中
a) chkconfig --add httpd
b) chkconfig httpd on
c) chkconfig --level 35 httpd on
4) 处理报错信息
a) vim /etc/httpd/httpd.conf
ServerName localhost:80
8.添加环境变量
1) vim /etc/profile.d/httpd.sh
export PATH=$PATH:/usr/local/httpd/bin/
2) . /etc/profile.d/httpd.sh #读取环境变量
D.MySQL二进制安装:
1.下载安装
a) wget https://downloads.mysql.com/archives/get/file/mysql-5.5.28-linux2.6-i686.tar.gz (32位系统)
b) wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz (64位系统)
1) 解压到指定目录
a) tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local/
2) 切换到该目录下
a) cd /usr/local/
3) 做链接
a) ln -sv mysql-5.5.28-linux2.6-i686/ mysql
4) 添加用户, 修改属主, 属组
a) groupadd -r -g 306 mysql
b) useradd -g 306 -r -u 306 mysql
c) chown -R root.mysql /usr/local/mysql/*
2.制作逻辑卷并将数据库文件指定至逻辑卷
1) 制作逻辑卷
a) fdisk /dev/sdb
b) pvcreate /dev/sdb5
c) vgcreate myvg /dev/sdb5
d) lvcreate -n mydata -L 5G myvg
e) lvs
f) mke2fs -j /dev/myvg/mydata
2) 数据库数据存放至逻辑卷
a) mkdir /mydata/
b) mount /dev/myvg/mydata /mydata/
3) 修改/etc/fstab文件
a) /dev/myvg/mydata /mydata ext3 defaults 0 0
b) mount -a
4) 修改数据存储文件夹权限
a) chown -R mysql.mysql data/
b) chmod o-x /mydata/data/
3.初始化数据库
1) yum install -y libaio: 初始化时报错的解决办法
2) cd /user/local/mysql
3) scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
4.创建开机自启
1) 修改启动文件
a) cp support-files/mysql.server /etc/init.d/mysqld
2) 添加入开机启动
a) chkconfig --add mysqld
b) chkconfig mysqld on
5.添加配置文件
1) cp /usr/local/mysql-5.5.28-linux2.6-i686/support-files/my-huge.cnf /etc/my.cnf
2) vim /etc/my.cnf
a) datadir = /mydata/data/mysql
b) thread_concurrency = 8
c) mysql中一个cpu提供2个线程
i) 查看当前系统有几个cpu:cat /proc/cpuinfo
ii) 所以这里最多有2个线程,修改为2
6.添加PATH环境变量执行mysql命令
1) vim /etc/profile.d/mysqld.sh
a) export PATH=$PATH:/usr/local/mysql/bin
2) . /etc/profile.d/mysqld.sh #读取环境变量
7.开启服务测试
1) service mysqld start
E.PHP源码编译安装:
1.编译安装libmcrypt
1) wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.6.tar.gz
2) tar xf libmcrypt-2.5.6.tar.gz
3) cd libmcrypt-2.5.6
4) ./configure --prefix=/usr/local/libmcrypt
5) make && make install
2.编译安装PHP
1) wget http://museum.php.net/php5/php-5.4.13.tar.bz2
2) yum install gcc openssl-devel libxml2-devel bzip2-devel -y
3) cd php-5.4.13
4) 编译安装
./configure \
--prefix=/usr/local/php \
--enable-fpm \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-libxml-dir=/usr \
--with-openssl \
--with-zlib \
--with-bz2 \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--enable-mbstring \
--with-mcrypt \
--enable-sockets \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-maintainer-zts \
--with-mcrypt=/usr/local/libmcrypt
5) make && make install
3.设置启动项
1) cp php.ini-production /etc/php.ini
2) 为php-fpm提供Sysv init脚本, 并将其添加至服务列表
a) cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
b) chmod +x /etc/init.d/php-fpm
c) chkconfig --add php-fpm
d) chkconfig php-fpm on
4.为php-fpm提供配置文件
1) cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
2) 编辑php-fpm的配置文件
a) vim /usr/local/php/etc/php-fpm.conf
b) 配置fpm的相关选项为你所需要的值, 并启用pid文件
i) pm.max_children = 50
ii) pm.start_servers = 5
iii) pm.min_spare_servers=2
iv) pm.max_spare_servers=8
v) pid=/usr/local/php/var/run/php-fpm.pid
5.启动服务
1) service php-fpm start
2) netstat -tnlp
F.PHP连接HTTP:
1) 修改php服务器配置php-fpm的文件vim /usr/local/php/etc/php-fpm 定位到listen =192.168.205.117:9000
2) 在该主机上新建虚拟主机目录用于存放网页文件
mkdir -pv /www/glinux
3) 配置http服务器Apache虚拟主机使用php
4) 在httpd主机上, 192.168.205.116, 建立一个目录作为虚拟主机的家目录
mkdir -pv /www/glinux
1.编辑主配置文件(关闭中心主机, 开启虚拟主机)
1) vim /etc/httpd/httpd.conf
a) 注释 #DocumentRoot "/usr/local/apache/htdocs"
b) 并打开启用 Include /etc/httpd/extra/httpd-vhosts.conf
c) 同时定位 AddType;添加下面两行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
d) 并且定位至DirectoryIndex
<IfModule dir_module>
DirectoryIndex index.php index.html #添加index.php(最好添加在最前面)
</IfModule>
e) 启动模块, 还要启用proxy_module proxy-fcgi_module等
LoadModule proxy_module modules/mod_proxy.so #开启
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #开启
2.编辑虚拟主机配置文件vim /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/www/glinux"
ServerName www.glinux.com
ServerAlias glinux.com
ErrorLog "/usr/local/httpd/logs/glinux.error_log"
CustomLog "/usr/local/httpd/logs/glinux.access_log" combined
ProxyRequests off
ProxyPassMatch ^/(.*.php)$ fcgi://192.168.205.117:9000/www/glinux/$1
<Directory "/www/glinux">
Options none
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
3.在php服务器上的/www/glinux目录下分别建立网页文件, 重启服务即可
vim /www/glinux/index.php
<?php
phpinfo();
?>
4.测试phpinfo成功
浏览器里输入: http://192.168.205.116
G.PHP支持扩展功能xcache:
1) wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz
2) 安装xcache
a) tar xf xcache-3.2.0.tar.gz
b) cd xcache-3.2.0
c) 安装依赖关系
i) yum -y install m4 autoconf
d) /usr/local/php/bin/phpize
e) ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
f) make && make install
3) 安装完毕后会出现这么一行 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
4) 编辑php.ini,整合php和xcache:
a) 首先将xcache提供的样例配置导入php.ini
i) # mkdir /etc/php.d
ii) # cp xcache.ini /etc/php.d
iii) 说明:xcache.ini文件在xcache的源码目录中。
5) 接下来编辑/etc/php.d/xcache.ini,找到extension开头的行,修改为如下行:
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20131226/xcache.so
6) 注意:如果php.ini文件中有多条zend_extension指令行,要确保此新增的行排在第一位。
7) 然后重启服务即在phpinfo的页面中就可看见xcache的选项了。
8) 关闭xcache方法
a) vim /etc/php.d/xcache.ini
xcache.size = 0 :设置为0是关闭xcache
H.PHP连接MySQL:
1.mysql数据库修改
use mysql;
grant all privileges on *.* to 'root'@'192.9.205.105' identified by 'william';
select Host,User,Password from user where User='root';
flush privileges;
2.进入php主机编辑index.php文件内容
<?php
$link=mysql_connect('192.168.205.115','root','william');
if($link){
echo "success..william!";
}else{
echo "failed..frank!".mysql_error();
}
mysql_close($link);
phpinfo();
?>
3.测试连接情况切记,要将防火墙关闭!
浏览器里输入: http://192.168.205.116
I.部署phpMyAdmin:
1.下载phpMyAdmin
wget https://files.phpmyadmin.net/phpMyAdmin/4.7.0/phpMyAdmin-4.7.0-all-languages.tar.gz
2.配置phpmyadmin
1) 在php 主机和http主机上分别在/www目录建立一个文件夹glinux, 并同样执行下面操作
2) tar xf phpMyAdmin-4.7.0-all-languages.zip
3) cd /www/glinux
4) mv /root/phpMyAdmin-4.7.0/* ./
5) 接下来在php主机上进行对phpmyadmin的配置。
6) cp config.sample.inc.php config.inc.php
7) vim config.inc.php
$cfg['Servers'][$i]['host']=‘192.168.205.115’ #数据库服务器的IP地址
$cfg['blowfish_secret'] = 'william'; #这里的字符随意,这个主要是为了区分cookie。
8) 然后重启三台主机上的服务即可测试。
最新文章
- 基于吉日嘎拉的通用权限管理Webform版老界面bug修复
- java 枚举类 enum 总结
- Haskell 与范畴论
- vc中openGL的安装
- objectarx 卸载加载arx模块
- Jquery div边框大全
- 使用Identity Server 4建立Authorization Server (3)
- 【原创】大数据基础之Zookeeper(2)源代码解析
- rtf乱码解决办法
- vbuffer.hpp
- CentOS 7上安装Pure-FTPd
- 使用顽灯浏览器执行H5游戏辅助挂机
- java注解 @SuppressWarnings注解用法
- 空类指针为什么可以调用类的成员函数 以及 A(){}和A();
- [转帖] Linux buffer 和 cache相关内容
- mysqld --debug=d:t:i:O:n --user=mysql (源码调试)
- Linux中fork()函数的底层实现【转】
- vim进阶-自己设置vim编辑器
- consul部署多台Docker集群
- input 元素 相对父元素错位
热门文章
- C#反射与特性(七):自定义特性以及应用
- 【JavaScript学习笔记】数据类型
- [AI开发]小型数据集解决实际工程问题——交通拥堵、交通事故实时告警
- dubbo配置文件解读(1)
- Mysql连接出现时区问题
- ELK学习实验018:filebeat收集docker日志
- python sys.modules 和 sys.path 及 __name__
- Elastcisearch.Nest 7.x 系列`伪`官方翻译:通过 NEST 来快捷试用 Elasticsearch
- 关于Spring集成Quartz的concurrent属性
- (转) exp1-1:// 一次有趣的XSS漏洞挖掘分析(1)