实验环境:(注:请务必与以下的实验环境相同,否则可能报错!)
服务 |
地址 |
软件包 |
apache |
192.168.200.101 |
httpd-2.4.37.tar.gz |
Php |
192.168.200.102 |
php-7.3.0.tar.gz |
Mysql |
192.168.200.103 |
mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz |
前言:
之前做过LAMP一台式部署,没做过LAMP分离式部署,在网上搜索了很多资料,但是感觉写的都很模糊,不清不楚的,所以我在这里给大家做一做LAMP分离部署。搭建任何服务,我们都需要理解性的去做,如果有什么地方不懂,那就要找资料,一直到将它搞懂为止。
一、搭建源代码apache(192.168.200.101)
解压httpd源码包
[root@localhost ~]#tar zxf httpd-2.4.37.tar.gz -C /usr/src
安装httpd所需要的依赖包
[root@localhost ~]#yum -y install apr apr-devel apr-util apr-util-devel pcre pcre-devel openldap-devel libdb-devel expat-devel cyrus-sasl-devel
[root@localhost ~]#cd /usr/src/ httpd-2.4.37
[root@localhost httpd-2.4.37]#./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-cgi --enable-charset-lite && make && make install
编译安装httpd。
--prefix:指定httpd的编译安装路径
--enable-so:启用动态加载模块支持,使httpd具备进一步扩展功能的能力。
--enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
--enable-charset-lite:启动字符集支持功能,以便支持使用各种字符集编码的网页。
--enable-cgi:启用cgi脚本程序支持,便于扩展网站的应用访问能力。
将httpd下的执行文件软连接到/usr/loca/bin,方便系统路径找到它。方便使用。
[root@localhost httpd-2.4.37]#ln -s /usr/local/httpd/bin/* /usr/local/bin
把httpd下在apachectl复制到/etc/init.d下,将它做成系统服务。
[root@localhost httpd-2.4.37]#cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost httpd-2.4.37]#vim /etc/init.d/httpd
#!/bin/sh
# chkconfig:35 80 20 //设置3跟5等级的系统可以用,80是在80个
(只需在/etc/init.d/httpd 中添加此项)
[root@localhost httpd-2.4.37]#chkconfig --add httpd
[root@localhost httpd-2.4.37]#systemctl start httpd
[root@localhost httpd-2.4.37]#vim /usr/local/httpd/conf/httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
AddType application/x-httpd-php .php
ProxyRequests off
ProxyPassMatch ^/(.*.php)$ fcgi://192.168.200.102:9000/var/www/html/$1(此处的IP为安装了php的服务器的IP地址,目录为网站网页的目录,需要手动创建)
这里面的ProxyRequests off跟ProxyPassMatch表示代理。这里我们将php结尾的所有文件都代理到 后端的php服务器上面了。
LoadModule所指定的俩个都是为了支持proxy的。这两个在httpd是自带的。将注释去掉就可以了。
二、二进制安装mysql(192.168.200.103)
- 首先。要有软件包mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
- [root@bogon ~]#yum -y install libaio(图形化界面默认已安装)
- [root@bogon ~]#tar zxf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz -C /usr/local
- [root@bogon ~]# cd /usr/local/
- [root@bogon local]# mv mysql-5.7.24-linux-glibc2.12-x86_64/ mysql
- [root@bogon local]# useradd -M -s /sbin/nologin mysql
- [root@bogon local]# cd mysql/
- [root@bogon mysql]# chown -R mysql:mysql ./
- [root@bogon mysql]# ./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
- [Note] A temporary password is generated for root@localhost: ho19hx,%sZNq
记住上面这一行的密码。这个是初始密码。每一台机器的初始密码都不一样。
- 修改/etc/my.cnf文件(将原有的my.cnf删除或者移动到别的位置,新建一个my.cnf,输入以下内容:)
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid
到这一步其实就已经做完了,后面的都是起服务跟优化
- [root@bogon mysql]# ./support-files/mysql.server start
- [root@bogon mysql]# netstat -anpt |grep 3306
- [root@bogon mysql]# cp support-files/mysql.server /etc/init.d/mysqld
- [root@bogon mysql]# service mysqld restart
- [root@bogon mysql]# ./bin/mysqladmin -u root -p password '123123'
- [root@bogon mysql]# ln -s /usr/local/mysql/bin/* /usr/local/bin
- [root@bogon mysql]#service mysqld restart
三、php(192.168.200.102)
安装php依赖包
[root@localhost ~]# yum -y install zlib-devel pcre-devel openssl-devel xm-devel libxml2-devel bzip2-devel xz-devel
[root@localhost ~]#tar zxf libmcrypt-2.5.8.tar.gz -C /usr/src
[root@localhost ~]#cd /usr/src/libmcrypt-2.5.8
[root@localhost ~]#./configure && make && make install
[root@localhost ~]#ln -s /usr/local/lib/libmcrypt.* /usr/lib/
[root@localhost ~]#cd
[root@localhost ~]#tar zxf mhash-0.9.9.9.tar.gz -C /usr/src
[root@localhost ~]#cd /usr/src/mhash-0.9.9.9
[root@localhost ~]#./configure && make && make install
[root@localhost ~]#ln -s /usr/local/lib/libmhash* /usr/lib/
[root@localhost ~]#cd
[root@localhost ~]#tar zxf mcrypt-2.6.8.tar.gz -C /usr/src
[root@localhost ~]#cd /usr/src/mcrypt-2.6.8
[root@localhost ~]#export LD_LIBRARY_PATH=/usr/local/lib
[root@localhost ~]#./configure && make && make install
[root@localhost ~]#ln -s /usr/local/lib/libmhash* /usr/lib/
安装php源码包
[root@localhost ~]# tar zxf php-7.3.0.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/php-7.3.0/
[root@localhost php-7.3.0]# ./configure --prefix=/usr/local/php5 --enable-mysqlnd --with-mysqli=mysqlnd --enable-mbstring --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir --enable-xml --enable-fpm --with-config-file-path=/usr/local/php5 --enable-maintainer-zts --disable-fileinfo && make && make install
注:编码详细介绍:
--enable-mysqlnd mysqln是专门为php优化编写的驱动。默认就是开启的。
--with-mysqli=mysqlnd 是由PHP源码提供的mysql驱动连接代码。
--with-mysql=mysqlnd
--with-pdo-mysql=mysqlnd pdo是一个应用层抽象类,底层和mysql server连接交互需要mysql驱动支持。Pdo的介绍请查看https://blog.csdn.net/weixin_34133829/article/details/86406061
--enable-mbstring 启用mbstring功能
--with-freetype-dir 打开对freetype字体库的支持
--with-jpeg-dir 打开对jpeg图片的支持
--with-png-dir 打开对png图片的支持
--with-zlib-dir 打开对zlib库的支持
--with-libxml-dir 打开libxml2库的支持
--enable-xml 开启xml库
--enable-fpm 打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
--with-config-file-path=/usr/local/php5 指定自己的php.ini路径
--enable-maintainer-zts 按照开发需求安装PHP
--disable-fileinfo fileinfo在5.3以后就被默认安装的,小内存VPS上编译PHP会out of memory Disable fileinfo support
(如果需要对PHP的各参数选项有所了解:https://www.cnblogs.com/hubing/p/3735452.html)
[root@localhost php-7.3.0]# cp php.ini-development /usr/local/php5/php.ini
php有两个环境,一个是生产环境(php.ini-production)用于实际运营,一个是开发环境(php.ini-development)用于学习,这里我们选择生产环境。
[root@localhost php-7.3.0]# vim /usr/local/php5/php.ini
default_charset = "UTF-8" 默认使用的字符集
file_uploads = On 运行通过php上传网页文件
upload_max_filesize = 2M 允许上传文件的大小
max_file_uploads = 20 每个HTTP最多允许请求上传的文件数
post_max_size = 8M 每次通过表单post提交的数据限制
short_open_tag = On 允许识别PHP短语法标记,即<?.....?>
extension=php_mysql.dll 添加MySQL支持
Copy php的执行文件到/etc/init.d下
[root@localhost php-7.3.0]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
给php执行文件权限
[root@localhost php-7.3.0]# chmod +x /etc/init.d/php-fpm
添加为系统服务
[root@localhost php-7.3.0]# chkconfig --add /etc/init.d/php-fpm
创建用户apache
[root@localhost php-7.3.0]# useradd -M -s /sbin/nologin apache
[root@localhost php-7.3.0]# cd /usr/local/php5/etc
为php的主配置文件做一个备份
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
修改配置文件php-fpm.conf:
pid = /usr/local/php5/var/run/php-fpm.pid
[root@localhost etc]# cd php-fpm.d/
给php对外提供服务的fgi做备份
[root@localhost php-fpm.d]# cp www.conf.default www.conf
修改文件www.conf的以下几项:
user = apache
group = apache
listen = 192.168.200.102:9000(IP地址为安装php的服务器)
[root@localhost ~]# mkdir -p /var/www/html
[root@localhost ~]# vim /var/www/html/index.php
<?php
phpinfo();
?>
开启php-fpm
[root@localhost ~]# /etc/init.d/php-fpm start
测试: