阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7 下的LAMP实现及基于https的虚拟主机

125次阅读
没有评论

共计 6951 个字符,预计需要花费 18 分钟才能阅读完成。

系统环境:
CentOS 7
Apache 2.4
php 5.4
MariaDB 5.5

项目需求:
创建 3 个虚拟主机, 分别架设 phpMyadmin,wordpress,Discuz
其中 phpMyadmin 提供 https 服务.

一、使用 yum 安装环境所需组件
httpd,php,php-MySQL,mariadb-server

# yum install httpd php php-mysql mariadb-server

二、关闭 SELINUX 并配置防火墙

1. 为了测试方便, 先关闭 selinux
临时关闭:
setenforce 0

永久关闭:
vim /etc/sysconfig/selinux
SELINUX=disabled

2. 在 CentOS 7 自带防火墙中添加 80,443,3306 端口

查看 firewall 运行状态
# firewall-cmd –state

添加端口
# firewall-cmd –add-port=80/tcp –permanent
# firewall-cmd –add-port=443/tcp –permanent
# firewall-cmd –add-port=3306/tcp –permanent

重载 firewall 配置
# firewall-cmd –reload

查看已有规则
# iptables -L -n

三、测试一下各软件是否正常

1. 启动 httpd 并测试访问:

# systemctl start httpd

没什么意外的话, 此时浏览器访问测试页应该是成功的.

2. 测试数据库
启动 MariaDB
# systemctl start mariadb

能进入 MariaDB 命令行即可
# mysql

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

3. 查看 php 版本, 我的版本是 5.4.16
# php -v

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

四、配置 Apache

1. 新建所需文件夹
在 /web/vhosts 下创建三个虚拟主机分别需要的文件夹 ,pma,wp,dz
# mkdir -p /web/vhosts/{pma,wp,dz}

2. 赋予 Apache 用户对整个 /web 目录的访问权:
# chown -R apache:apache /web

3. 创建测试页面
# vim /web/vhosts/pma/index.php
内容为:
<?php
echo “this is pma”
?>

# vim /web/vhosts/wp/index.php
内容为:
<?php
echo “this is wp”
?>

# vim /web/vhosts/dz/index.php
内容为:
<?php
echo “this is dz”
?>

 4. 取消欢迎页, 否则会有干扰
# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak

5. 添加三个虚拟主机

创建一个叫 vhosts.conf 配置文件
# vim /etc/httpd/conf.d/vhosts.conf

内容:

<VirtualHost *:80>
DocumentRoot /web/vhosts/pma
ServerName pma.linuxidc.com
ErrorLog logs/pma.err
CustomLog logs/pma.access combined
</VirtualHost>

<Directory “/web/vhosts/pma”>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

<VirtualHost *:80>
DocumentRoot /web/vhosts/wp
ServerName wp.linuxidc.com
ErrorLog logs/wp.err
CustomLog logs/wp.access combined
</VirtualHost>

<Directory “/web/vhosts/wp”>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

<VirtualHost *:80>
DocumentRoot /web/vhosts/dz
ServerName dz.linuxidc.com
ErrorLog logs/dz.err
CustomLog logs/dz.access combined
</VirtualHost>

<Directory “/web/vhosts/dz”>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

6. 重新载入 httpd 配置:
# systemctl reload httpd

7. 测试一下三个虚拟主机:

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

测试成功!

五、配置 mariaDB

1. 刚安装完 mariaDB 后先初始化安全设置

运行安全初始化脚本
# /usr/bin/mysql_secure_installation

以下给出我自己的选项作为参考

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

1)是否设置 root 用户密码? (是)

2)是否删除匿名用户? (是)
3)禁止 root 用户远程登录吗? (否, 但如果生产环境推荐禁止)
4)要删除测试数据库吗? (否, 如果将来有测试需求就保留)
5)重载授权表吗? (是, 刚刚的设置立即生效)

2. 附上 root 用户改密码命令
# mysql
SET PASSWORD FOR ‘root’@’localhost’=PASSWORD(‘123456’);
SET PASSWORD FOR ‘root’@’127.0.0.1’=PASSWORD(‘123456’);

六. 安装程序包
1. 安装 phpmyadmin,Discuz,wordpress
下载安装包到家目录
可以用 wget 或者使用 ftp 工具, 我这里因为用了 Xshell 连接服务器, 所以直接使用了配套的 Xftp 将控制机中的安装包直接扔进家目录.

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

2. 确保已安装必要的压缩 / 解压缩工具

我这里缺少 bzip2,zip 和 unzip, 所以
# yum -y install bzip2 zip unzip

分别解压缩
# unzip Discuz_X3.2_SC_UTF8.zip -d Discuz_X3.2_SC_UTF8
# tar -xf wordpress-4.5.3-zh_CN.tar.gz
# tar -xf phpMyAdmin-4.4.15.8-all-languages.tar.bz2

3. 分别复制到定义好的虚拟主机目录下, 注意只复制需要的文档

# cp -a phpMyAdmin-4.4.15.8-all-languages/* /web/vhosts/pma/
# cp -a wordpress/* /web/vhosts/wp/
# cp -a Discuz_X3.2_SC_UTF8/upload/* /web/vhosts/dz/

七、调试网站
1. 配置 phpmyadmin
#cd /web/vhosts/pma

找到默认配置文件并重命名为标准名称
# cp config.sample.inc.php config.inc.php

编辑配置文件
大概 17 行找到
$cfg[‘blowfish_secret’] = ”;

这里需要加入一个随机字串, 可以在 bash 下用以下命令生成:
# tr -d ‘a-zA-Z0-9’ < /dev/urandom | head -30 | md5sum

比如生成的字串为
e2d8e1132dc737b3dc1f05cd44c0cc9e
将生成的字串加入到上面的参数的引号中. 如图:

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

保存退出.

访问 pma.linuxidc.com 的时候发现程序报错:

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

意思是需要 mbstring 模块支持,mbstring 是一个多语言包.

所以要安装这个包
# yum install php-mbstring

重载 httpd 以便配置生效
# systemctl reload httpd

重新访问 pma.linuxidc.com, 页面成功打开

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

此时可以使用之前配置的 mysql 的 root 用户登陆.

2. 创建所需数据库
为了安装 wordpress 和 Discuz, 可以先使用 phpMyadmin 来为他们创建数据库.
新增 -> 填写数据库名称 -> 选择排序编码 -> 建立

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

 

另外我们希望每个网站可以使用单独的数据库用户进行访问, 所以这里为每个数据库创建自己的用户并绑定到对应的数据库.

回到首页 -> 用户 -> 添加用户

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

 

为了方便, 我将数据库名与对应的用户名保持一致, 可以按下图来创建

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

因为已经提前创建数据库, 所以红色下划线的命令会跳过创建数据库的步骤, 后面蓝色下划线的命令会把用户绑定给这个数据库.

3. 配置 wordpress

进入 wp 目录
# cd /web/vhosts/wp
复制一个配置文件并重命名为配置文件的标准名称
# cp wp-config-sample.php wp-config.php
编辑配置文件
# vim /web/vhosts/wp/wp-config.php

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

 

修改对应的值.

访问 wp.linuxidc.com 和 dz.linuxidc.com, 会显示安装界面. 分别使用之前设定的参数安装即可.

八、给 pma.linuxidc.com 配置 https

1. 确保 OpenSSL 已安装, 因为要使用 OpenSSL 生成自签名证书
# httpd -M | grep ssl
如果没有则安装
# yum install mod_ssl openssl

2. 配置 CA 服务器
我的方法是先配置一台 CA 服务器 (CentOS A), 之后再让当前这台服务器(CentOS B) 向 CentOS A 申请认证.

3. 配置 CA 服务器(CentOS A)

3.1 初始化 CA 服务, 创建所需要的文件
# cd /etc/pki/CA/
# touch index.txt // 创建索引文件
# echo 01 > serial // 创建序列号文件

3.2 CA 自签证书
生成私钥
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
使用私钥生成签名证书
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem

4. 申请证书(CentOS B):

4.1 创建一个存放证书的目录
# mkdir /etc/httpd/ssl
# cd /etc/httpd/ssl

4.2 生成秘钥
# (umask 007;openssl genrsa -out httpd.key 1024)
4.3 生成请求文件
# openssl req -new -key httpd.key -out httpd.csr

4.4 填表, 按照自己情况写
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:Quintin Ltd
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server’s hostname) []:pma.linuxidc.com
Email Address []:admin@linuxidc.com

4.5 把生成的文件发送到 CA 服务器 CentOS A, 这里我使用 scp 命令:
# scp httpd.csr root@192.168.3.67:/tmp/

4.6 按照提示操作成功之后,httpd.csr 应该已经在 CentOS A 的 /tmp/ 目录中.

5. 签署证书(CentOS A):

5.1 签署, 有效期十年
# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/pma.linuxidc.com.crt -days 3650
5.2 将生成的 crt 传回 CentOS B
# scp /etc/pki/CA/certs/pma.linuxidc.com.crt root@192.168.3.77:/etc/httpd/ssl/
5.3 按照提示操作成功之后,pma.linuxidc.com.crt 应该已经在 CentOS B 的 /etc/httpd/ssl/ 目录中.

6. 配置 ssl(CentOS B):

6.1 事先备份
# cd /etc/httpd/conf.d/
# cp ssl.conf{,.bak}

6.2 编辑 ssl.conf
# vim ssl.conf

以下为修改项
<VirtualHost _default_:443>
=>
<VirtualHost *:443>

基本设置
DocumentRoot “/web/vhosts/pma”
ServerName pma.linuxidc.com:443

证书位置
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
=>
SSLCertificateFile /etc/httpd/ssl/pma.linuxidc.com.crt

私钥位置
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
=>
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

保存退出.

6.3 检查配置文件语法错误:
# httpd -t

6.4 重启 httpd:
# systemctl restart httpd

6.5 查看 443 端口是否已开启:
# ss -tnl

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

 

6.6 去浏览器访问格式:
https://pma.linuxidc.com

看见 https 字样就对了. 但会提示无效, 添加信任即可.

CentOS 7 下的 LAMP 实现及基于 https 的虚拟主机

下面关于 LAMP 相关 的内容你可能也喜欢

LAMP 平台安装 Xcache 和 Memcached 加速网站运行  http://www.linuxidc.com/Linux/2015-06/118835.htm 

CentOS 7 下搭建 LAMP 平台环境  http://www.linuxidc.com/Linux/2015-06/118818.htm

CentOS 6.5 系统安装配置 LAMP(Apache+PHP5+MySQL)服务器环境 http://www.linuxidc.com/Linux/2014-12/111030.htm

Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境  http://www.linuxidc.com/Linux/2014-10/107924.htm

Ubuntu 14.10 下安装 LAMP 服务图文详解  http://www.linuxidc.com/Linux/2014-12/110082.htm

LAMP 结合 NFS 构建小型博客站点  http://www.linuxidc.com/Linux/2015-08/121029.htm

CentOS7 下安装部署 LAMP 环境  http://www.linuxidc.com/Linux/2016-04/130653.htm

Ubuntu 16.04 搭建 LAMP 开发环境 http://www.linuxidc.com/Linux/2016-10/136327.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137209.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6951字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中