CentOS7上搭建lamp环境
要求如下,搭建在同一台虚拟机上,实现下述3个功能:
vhost1: pma.stu13.com, phpMyAdmin, 同时提供https服务
vhost2: wp.stu13.com, wordpress
vhost3: dz.stu13.com, Discuz
Vmware机器情况如下:
CA服务器:192.168.2.100/24
httpd服务器:192.168.2.109/24
Client客户机:192.168.2.1/24
自建ca的过程如下:
CA上:
生成自签证书。
客户端上:
生成证书请求,并将证书请求发给CA服务器。
CA上:
对客户端发来的证书请求签署证书,并将证书文件发回客户端。
下面具体操作下:
一、搭建CA制作证书
# 1.1主机192.168.2.100充当CA服务器,上面执行
cd /etc/pki/CA
(umask 077;openssl genrsa -out private/cakey.pem 2048) # 生成私钥
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 # 生成自签证书
mkdir certs crl newcerts
touch index.txt
echo 01 > serial
# 1.2在httpd服务器上,生成证书请求文件
(umask 077;openssl genrsa -out httpd.key 2048)# 生成私钥
openssl req -new -key httpd.key -out httpd.csr # 生成csr证书请求文件
scp httpd.csr root@192.168.2.100:~/# 将sr文件传给CA服务器
# 1.3在CA服务器上,签署证书
openssl ca -in httpd.csr -out httpd.crt -days 3650
scp httpd.crt root@192.168.2.109:~/ # 将证书传到httpd服务器的root家目录,下面要用到它
# 1.3将CA的证书传给Client测试机器
cd /etc/pki/CA
sz cacert.pem
导出保存到桌面上,重命名为ca.crt,将ca.crt导入到本机。
二、安装httpd
# 关闭防火墙,避免外网无法访问httpd服务器
systemctl stop firewalld # 暂停centos7上的防火墙
systemctl disable firewalld # 禁止开机启动centos7的防火墙
# 创建三个虚拟主机的目录,及相关网页文件
mkdir -pv /web/{pma,wp,dz}
touch /web/{pma,wp,dz}/index.html
chown -R apache:apache /web/
cd /web/pma/
tar xf /home/tools/phpMyAdmin-4.4.14.1-english.tar.xz
mv phpMyAdmin-4.4.14.1-english/* ./
rm -rf /web/pma/phpMyAdmin-4.4.14.1-english/ # 清理无用的目录和文件
cd /web/wp
tar xf /home/tools/wordpress-4.3.1-zh_CN.tar.gz
mv wordpress/* ./
rm -fr /web/wp/wordpress/ # 清理无用的目录和文件
cd /web/dz
tar xf /home/tools/Discuz_X3.2_SC_UTF8.tar # linux 不支持rar格式软件,这里用tar格式的替代
mv Discuz_X3.2_SC_UTF8/upload/* ./
rm -rf Discuz_X3.2_SC_UTF8/# 清理无用的目录和文件
chown -R apache:apache /web/* # 防止解压出的文件的权限问题,最后还要修改下权限
# 安装httpd2.4
编译安装。。。过程待补充。
检查httpd是不是prefork MPM(命令ps aux|grep htttpd查看),需要修改/etc/httpd/conf.modules.d/00-mpm.conf改成prefork,然后重启httpd服务,php就启动了
# 将SSL文件移动到指定目录
cd /etc/httpd/
mkdir ssl
cd ssl/
cp ~/httpd.key /etc/httpd/ssl/
cp ~/httpd.crt /etc/httpd/ssl/
# 编辑http的相关配置文件
vi /etc/httpd/conf/httpd.conf:
DocumentRoot注释掉这一行
AddType application/x-httpd-php .php 增加这一行
在DirectoryIndex index.html 前面加上index.php
/etc/httpd/conf.d/httpd-vhosts.conf写入如下内容:
<VirtualHost *:80>
ServerName wp.stu13.com
DocumentRoot "/web/wp/"
<Directory "/web/wp">
Options none
AllowOverride none
Require all granted
</Directory>
ErrorLog "/var/log/httpd/wp-err.log"
CustomLog "/var/log/httpd/wp-access.log" combined
</Virtualhost>
<VirtualHost *:80>
ServerName dz.stu13.com
DocumentRoot "/web/dz/"
<Directory "/web/dz">
Options none
AllowOverride none
Require all granted
</Directory>
ErrorLog "/var/log/httpd/dz-err.log"
CustomLog "/var/log/httpd/dz-access.log" combined
</Virtualhost>
/etc/httpd/conf.d/ssl.conf写入如下内容:
<VirtualHost *:80>
ServerName pma.stu13.com
DocumentRoot "/web/pma/"
<Directory "/web/pma">
Options none
AllowOverride none
Require all granted
</Directory>
ErrorLog "/var/log/httpd/pma-err.log"
TransferLog "/var/log/httpd/pma_access_log" # 注意:SSL 用的是TransferLog
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
</Virtualhost>
systemctl restart httpd # 重启httpd服务,使得SSL配置生效
三、安装mysql(这里以Mariadb通用二进制格式包为例)
# 安装mariadb通用二进制格式包
tar xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
ln -s mariadb-5.5.43-linux-x86_64/ mysql
cd mysql/
groupadd mysql
useradd -s /sbin/nologin -M -g mysql mysql
chown -R root:mysql ./*
mkdir /data # 创建mysql的数据目录
scripts/mysql_install_db --datadir=/data --user=mysql # 初始化数据库
cp support-files/mysql.server /etc/init.d/mysqld # 拷贝mysql启动脚本
chkconfig --add mysqld # 注意:sysV风格的在centos7上不太一样,systemd和sysV的互相不能启动对方。
# 配置mysql的配置文件
配置文件查找次序:
/etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
mkdir /etc/mysql
cp support-files/my-large.cnf /etc/mysql/my.cnf
# 编辑 /etc/mysql/my.cnf ,增加如下几行
datadir = /data
basedir = /usr/local/mysql
innodb_file_per_table = on
# skip_name_reslove = on 测试时发现加了这行,导致了mysql无法启动。【/data目录下有相关日志文件】
# 配置环境变量
echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
source /etc/profile
# 启动mysql
出现下图说明启动成功
也可以查看下进程或端口信息
ps aux|grep mysqld
ss -lnt|grep 3306
# 测试php与mysql能否通信
<?php
$link=mysql_connect(‘127.0.0.1‘,‘mysql‘,‘‘);
if($link)
echo "success";
else
echo "failure‘;
mysql_close();
?>
# 设置mysql账户密码
mysqladmin -u root password amdamd # 修改root@localhost的密码为amdamd
# 删除多余账户
进入mysql控制台界面,执行
> use mysql
> select user,host,password from user; # 列出所有的mysql账户信息
# 下面来删除这些多余的账户
> drop user root@‘www‘;
> drop user root@‘127.0.0.1‘;
> drop user root@‘::1‘;
> drop user ‘‘@‘localhost‘;
> drop user ‘‘@‘www‘;
> select user,host,password from mysql.user; # 再次查看,只剩下一个账户了
# 建立一个可以远程访问的账户root@%,密码为amdamd。
GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘amdamd‘ WITH GRANT OPTION;
flush privileges;
# 创建数据库
# mysql -uroot -p
> create database wp;
> create database dz;
三、安装php
yum install php -y
# 编写测试文件
test.php内容如下:
<?php
phpinfo();
?>
通过IE访问测试,出现下图界面说明php安装成功。
# 如果后期测试访问网站出现下面的提示,需要安装mbstring,
yum install php-mbstring -y
再重启httpd服务即可。
五、安装phpMyAdmin、wordpress、Discuz
# phpMyAdmin
解压到指定目录下,
cp config.sample.inc.php config.inc.php
然后编辑config.inc.php,里面要加入一些随机数
取随机数的命令tr -d ‘a-zA-Z0-9‘ < /dev/urandom | head -30 | md5sum
将生成的随机数粘贴到blowfish_secret 那一行后面的‘‘中。
重启httpd服务即可。
# 安装Discuz,过程略过
原文地址:http://lee90.blog.51cto.com/10414478/1697278