您的位置:首页 > 理论基础 > 计算机网络

CentOS 7 虚拟机搭建lamp (php-fpm),三者分离,https认证

2016-04-28 15:05 881 查看
1.主机规划
配置虚拟机中有至少 3台,操作系统都是centos7
1台httpd服务器(172.18.251.235)
1台php-fpm服务器(172.18.252.132)
1台MySQL服务器(172.18.252.0)

在搭建安装之前,我们首先了解一下它们之间分开工作的模式:



在搭建lamp之前,我们先配置yum源,阿里云,搜狐,163开源镜像网站很多,在这儿我就不一一赘述了。
现在我们就开始利用yum源安装httpd(172.18.251.235)
~]# yum install httpd -y
一般centos7上的httpd都是2.4版本,2.4版本和2.2版本最大区别是:2.4版本默认支持fcgi模块,所以centos6上使用fcgi模块要自己编译安装,centos6上编译会再下次给大家介绍。
httpd的配置文件一般在/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
安装完成后我们启动httpd服务
~]# systemctl start httpd.service
看一下是否监听于80端口
~]# ss -tnl
然后我们在另一台虚拟机上安装PHP-fpm,PHP-mysql(172.18.252.132)
~]# yum install php-fpm php-mysql -y
PHP-fpm是专用于将php运行于fpm模式,服务配置文件:/etc/php-fpm.conf, /etc/php-fpm.d/*.conf
安装完成后,我们启动PHP-fpm服务
~]# systemctl start php-fpm.service
查看是否监听9000端口




接着我们在另一台虚拟机上安装二进制mysql包(172.18.252.0)
(1) 准备数据目录;
以/mydata/data目录为例;
(2) 安装配置mysql
# useradd -r mysql
# tar xf mariadb-VERSION.tar.xz -C /usr/local
# cd /usr/local
# ln -sv mariadb-VERSION mysql
# cd /usr/local/mysql
# chown -R root:mysql ./*

# mkdir /mydata/data -pv
初始化:# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
提供一个服务脚本# cp support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
弄配置文件 # cp support-files/my-large.cnf /etc/my.cnf 添加三个选项 # vim /etc/my.cnf





(4) 启动服务
# systemctl start mysql
如果启动时找不到mysql命令,需要配置环境变量后再启动服务
# vim /etc/profile.d/mysql.sh
加入:export PATH=/usr/local/mysql/bin:$PATH
看一下是否监听3306端口




然后我们把httpd和PHP-fpm和mysql整到一起
基于IP的虚拟主机进行配置
在httpd和php-fpm两台服务器上分别创建URL路径的目录
# mkdir /apps/vhosts/b.net
修改httpd服务器上的配置文件
# vim /etc/httpd/conf/httpd.conf (可以先复制一份配置文件,以免修改文件错误)


把这一行注释掉,然后看这一项是否开启,没开启的话,开启




然后在/etc/httpd/conf.d/目录下创建vhosts.conf文件
# vim /etc/httpd/conf.d/vhosts.conf 加入




然后修改php-fpm服务器上配置文件,修改监听地址
# vim /etc/php-fpm.d/www.conf









然后查看session目录的属主属组是否是Apache,如果不是请修改属主属组
# chown apache:apache /var/lib/php/session
如果没有session文件需要创建
# mkdir /var/lib/php/session
然后整合mysql
# mysql -uroot -proot

mysql>use mysql

mysql> select user,host,password from user; 显示user的信息;
#下面的较为重要;这是授权PHP主机可以访问的
mysql> grant all privileges on *.* to 'root'@'172.18.%。%' identified by 'passwd';
mysql> select user,host,password from user;
mysql> flush privileges; 更新
先测试三者是否可以连接
在php-fpm服务器上创建测试文件
# vim /apps/vhosts/b.net/index.php
<?php

$conn = mysql_connect('172.18.252.0','root','passwd');

if ($conn)
echo "OK";
else
echo "Failure";
?>
打开浏览器输入地址(确保防火墙和selinux都是关闭的)





现在我们以虚拟主机安装wordpress(安装包先下好的)
在httpd和php-fpm服务器上分别创建/apps/vhosts/c.org
在php-fpm服务器上 # cd /apps/vhosts/c.org
解压 # unzip wordpress
#chmod -R 777 wordpress
# cd wordpress
备份配置文件:# cp wp-config-sample.php wp-config.php
然后在mysql服务器上登录mysql
# mysql -uroot -proot
授权:GRANT ALL ON wpdb.* TO wpuser@'172.18.%.%' IDENTIFIED BY 'wppass'; CREATE DATABASE wpdb;
然后修改wordpress配置文件
# vim wp-config.php
修改:/** WordPress数据库的名称 */
define('DB_NAME', 'wpdb');

/** MySQL数据库用户名 */
define('DB_USER', 'wpuser');

/** MySQL数据库密码 */
define('DB_PASSWORD', 'wppass');

/** MySQL主机 */
define('DB_HOST', '172.18.252.132');
然后修httpd服务器的配置文件,因为是基于ip的虚拟主机
需要加ip地址:ifconfig eno16777736:0 172.18.251.234
# vim /etc/httpd/conf.d/vhosts.conf 加入





然后重启三个服务器




注意在hosts文件中添加解析地址
# vim /etc/hosts

172.18.251.235 www.b.net

172.18.251.234 www.c.org

然后在php-fpm服务器上把PHP加速器xcache装上
# yum install php-xcache
接下来我们 配置phpmyadmin并且提供https认证
先在httpd和php-fpm两台服务器上创建文件
# mkdir /apps/vhosts/a.com
在php-fpm服务器上

# cd /apps/vhosts/a.com
# unzip phpMyAdmin 解压文件
# ln -sv phpMyAdmin pma 创建符号链接
# cd pma
# cp config.sample.inc.php config.inc.php 备份一份配置文件
# vim config.inc.php 修改配置文件
~]# openssl rand -base64 30 生成随机数加入里边



指向数据库地址




安装php-mbstring
# yum install php-mbstring -y
然后我们要改一下httpd服务器的配置文件
# vim /etc/httpd/conf.d/vhosts.conf




之后我们重启一下服务,就能打开了。如果基于https认证,可以注释掉这些,之后就只有https才能访问了,不注释的话,http和https都能访问到。
接着我们就构建私有CA,因为我们要给httpd服务器做证书,我们要在另一台机器上构建私有CA
# cd /etc/pki/CA
生成私钥
# (umask 077;opemssl genrsa -out private/cakey.pem 1024)
生成自签证书:
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem




(3) 为CA提供所需的目录及文件
~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
~]# touch /etc/pki/CA/{serial,index.txt}
~]# echo 01 > /etc/pki/CA/serial
要用到证书进行安全通信的服务器,需要向CA请求签署证书:
在httpd服务器上生成私钥,安装ssl模块,yum install mod_ssl -y

~]# mkdir /etc/httpd/ssl
~]# cd /etc/httpd/ssl
~]# (umask 077; openssl genrsa -out httpd.key 2048)
(2) 生成证书签署请求
~]# opensslreq -new -key /httpd.key -out httpd.csr -days 365




(3) 将请求通过可靠方式发送给CA主机;
# scp certs/httpd.csr root@172.18.252.0:/tmp
(4) 在CA主机上签署证书(172.18.252.0)
~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
(5)签署完证书以后发给服务器主机
~]# scp /etc/pki/CA/certs/httpd.crt root@172.18.251.235:/etc/httpd/ssl/httpd.crt
备份配置文件
# cp /etc/httpd/conf.d/ssl.conf ssl.conf.apk

然后我们要修改ssl配置文件
# vim /etc/httpd/conf.d/ssl.conf








因为基于ip地址配置的虚拟机,所以在httpd服务器上
# ifconfig eno16777736:1 172.18.251.233

然后在hosts文件中加入
172.18.251.233 www.a.com
然后在windos中hosts文件中也加入(C:\Windows\System32\drivers\etc)
172.18.251.235 www.b.net

172.18.251.234 www.c.org

172.18.251.233 www.a.com

然后在浏览器中打开,导入证书,设定权限。最后结果:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息