Linux学习-基于CentOS7的LAMP环境实现多虚拟主机

一、实验环境

 系统:CentOS7.6

 主机:两台(一台也可以),一台实现apache+php-fpm (192.168.214.17),一台实现mysql服务器 (192.168.214.27)

 软件包:

  Apache:httpd-2.4.39.tar.bz2,apr-1.7.0.tar.bz2,apr-util-1.6.1.tar.bz2

  PHP:php-7.3.7.tar.xz

  MySQL:mariadb-10.2.25-linux-x86_64.tar.gz (二进制包)

  web网站:Discuz_X3.3_SC_UTF8.zip,wordpress-5.2.2.tar.gz

  虚拟主机配置:forum.abcdef.com (论坛域名 对应Discuz),blog.abcdef.com (博客域名 对应wordpress)

二、实验步骤

1、实现MySQL服务器(192.168.214.27)

 (1) 准备安装包 

[[email protected]27 ~]# ll /data
total 447224
-rw-r--r-- 1 root root 457955398 Dec 13 17:33 mariadb-10.2.25-linux-x86_64.tar.gz

 (2) 新建mysql用户与数据目录

[[email protected]27 ~]# useradd -r -s /sbin/nologin -d /data/mysql mysql
[[email protected]-27 ~]# mkdir /data/mysql
[[email protected]-27 ~]# chown mysql:mysql /data/mysql/

 (3) 准备二进制程序

[[email protected]27 data]# cd /data/
[[email protected]-27 data]# tar -zxvf mariadb-10.2.25-linux-x86_64.tar.gz -C /usr/local/
[[email protected]-27 data]# cd /usr/local/
[[email protected]-27 local]# ln -s mariadb-10.2.25-linux-x86_64/ mysql
[[email protected]-27 local]# chown -R root:mysql /usr/local/mysql

 (4) 准备配置文件

[[email protected]27 local]# cd /usr/local/mysql/
[[email protected]-27 mysql]# mkdir /etc/mysql
[[email protected]-27 mysql]# cp support-files/my-huge.cnf /etc/mysql/my.cnf
[[email protected]-27 mysql]# vim /etc/mysql/my.cnf
#在[mysqld]下添加以下三项
datadir         = /data/mysql
innodb_file_per_table = on
skip_name_resolve = on#以下项非必需,建议添加,设置服务器端字符集character_set_server = utf8mb4

 (5) 初始化数据库,生成数据库文件

[[email protected]27 mysql]# ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql

 (6) 准备服务脚本,并启动服务

[[email protected]27 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[[email protected]-27 mysql]# chkconfig --add mysqld
[[email protected]-27 mysql]# service mysqld start
Starting mysqld (via systemctl):                           [  OK  ]

 (7)  配置PATH变量

[[email protected]27 mysql]# echo ‘PATH=/usr/local/mysql/bin:$PATH‘ > /etc/profile.d/mysql.sh
[[email protected]-27 mysql]# . /etc/profile.d/mysql.sh 

 (8) 安全加固,以上安装后数据库是没有密码的,可以使用安全初始化脚本修改密码

[[email protected]27 mysql]# mysql_secure_installation 

2、编译安装httpd (192.168.214.17)

 (1) 准备安装包

[[email protected]17 data]# cd /data
[[email protected]-17 data]# ls -lh *.bz2
-rw-r--r-- 1 root root 852K Dec 13 18:02 apr-1.7.0.tar.bz2
-rw-r--r-- 1 root root 419K Dec 13 18:02 apr-util-1.6.1.tar.bz2
-rw-r--r-- 1 root root 6.8M Dec 13 18:02 httpd-2.4.39.tar.bz2

 (2) 解压源码包,并将 apr 和 apr-util 复制到 httpd 解压包中一起进行编译,当然也可以单独编译

[[email protected]17 data]# tar -jxvf apr-1.7.0.tar.bz2
[[email protected]-17 data]# tar -jxvf apr-util-1.6.1.tar.bz2
[[email protected]-17 data]# tar -jxvf httpd-2.4.39.tar.bz2
[[email protected]-17 data]# mv apr-1.7.0 httpd-2.4.39/srclib/apr
[[email protected]-17 data]# mv apr-util-1.6.1 httpd-2.4.39/srclib/apr-util

 (3) 安装相关所需包(光盘yum源)

[[email protected]17 data]# cat /etc/yum.repos.d/base.repo
[development]
name=dvdbase repo
baseurl=file:///mnt/cdrom/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7

[[email protected]-17 data]# yum install -y gcc pcre-devel openssl-devel expat-devel

 (4) 开始编译安装

[[email protected]17 data]# cd httpd-2.4.39/
[[email protected]-17 httpd-2.4.39]# ./configure > --prefix=/app/httpd24 > --enable-so > --enable-ssl > --enable-cgi > --enable-rewrite > --with-zlib > --with-pcre > --with-included-apr > --enable-modules=most > --enable-mpms-shared=all > --with-mpm=prefork
[[email protected]-17 httpd-2.4.39]# make && make install

./configure --prefix=/app/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

编译代码

 (5) 创建apache用户并修改配置文件中的启动时所用的用户和组,配置文件中默认的用户和组都为 daemon

[[email protected]17 httpd-2.4.39]# useradd -r -s /sbin/nologin apache
[[email protected]-17 httpd-2.4.39]# vim /app/httpd24/conf/httpd.conf#找到以下两项,修改用户和组为apache
user apache
group apache

 (6) 配置PATH变量并启动测试

[[email protected]17 httpd-2.4.39]# echo ‘PATH=/app/httpd24/bin:$PATH‘ > /etc/profile.d/http24.sh
[[email protected]-17 httpd-2.4.39]# . /etc/profile.d/http24.sh
[[email protected]-17 httpd-2.4.39]# apachectl  start
[[email protected]-17 httpd-2.4.39]# curl http://192.168.214.17
#测试访问,可以看到可以了
<html><body><h1>It works!</h1></body></html>

3、编译安装php-fpm (192.168.214.17)

 (1) 准备安装包

[[email protected]17 ~]# cd /data
[[email protected]-17 data]# ls -l php-7.3.12.tar.bz2
-rw-r--r-- 1 root root 15006275 Dec 13 19:54 php-7.3.12.tar.bz2

 (2) 安装相关所需包(光盘yum源与EPEL源)

[[email protected]17 data]# cat /etc/yum.repos.d/base.repo
[development] #光盘源也可用阿里云的yum源
name=dvdbase repo
baseurl=file:///mnt/cdrom/
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7

[aliyunEpel] #epel源
name=aliyun epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-$releasever

[[email protected]-17 data]# yum install libxml2-devel bzip2-devel libmcrypt-devel
#libmcrypt相关包依赖epel源

 (3) 解压源码包,并进行编译安装

[[email protected]17 data]# tar -jxvf php-7.3.12.tar.bz2
[[email protected]-17 data]# cd php-7.3.12/
[[email protected]-17 php-7.3.12]# ./configure --prefix=/app/php > --enable-mysqlnd > --with-mysqli=mysqlnd > --with-pdo-mysql=mysqlnd > --with-openssl > --with-freetype-dir > --with-jpeg-dir > --with-png-dir > --with-zlib > --with-libxml-dir=/usr > --with-config-file-path=/etc > --with-config-file-scan-dir=/etc/php.d > --enable-mbstring > --enable-xml > --enable-sockets > --enable-fpm > --enable-maintainer-zts > --disable-fileinfo
[[email protected]-17 php-7.3.12]# make && make install

./configure --prefix=/app/php --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disable-fileinfo

编译代码

 (4) 准备配置文件,并修改 www.conf 配置文件中启动用户与组为 apache,默认用户与组为 nobody

[[email protected]17 php-7.3.12]# cp php.ini-production /etc/php.ini
[[email protected]-17 php-7.3.12]# cd /app/php/etc/
[[email protected]-17 etc]# cp php-fpm.conf.default php-fpm.conf
[[email protected]-17 etc]# cd php-fpm.d/
[[email protected]-17 php-fpm.d]# cp www.conf.default www.conf
[[email protected]-17 php-fpm.d]# vim www.conf
#找到以下两项,将nobody改为apache
user = apache
group = apache

 (5) 准备服务启动脚本,并启动 php-fpm 服务

[[email protected]17 php-fpm.d]# cd /data/php-7.3.12/
[[email protected]-17 php-7.3.12]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[[email protected]-17 php-7.3.12]# chmod +x /etc/init.d/php-fpm
[[email protected]-17 php-7.3.12]# chkconfig --add php-fpm
[[email protected]-17 php-7.3.12]# service php-fpm start
Starting php-fpm  done
[[email protected]-17 php-7.3.12]# ss -nlt|grep 9000  #可以看到9000端口已经启动
LISTEN     0      128    127.0.0.1:9000                     *:*   

4、配置 httpd 配置文件,让其支持 php

 (1) 修改 http.conf 文件,

[[email protected] ~]# vim /app/httpd24/conf/httpd.conf

#取消下面两个模块的注释
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

#修改下面行,添加 index.php
<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

#添加以下行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off
#以下这行如果是单主机是必需加的,但我们要什么多虚拟主机,到时到虚拟主机配置中加即可
#ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1 

5、配置网站 

 (1) 在/app/httpd24/htdocs/ 创建多虚拟主机所需文件夹,并给 apache 用户设置访问控制权限

[[email protected]17 ~]# mkdir -v /app/httpd24/htdocs/{wordpress,discuz}
mkdir: created directory ‘/app/httpd24/htdocs/wordpress’
mkdir: created directory ‘/app/httpd24/htdocs/discuz’
[[email protected]-17 ~]# setfacl
[[email protected]-17 ~]# setfacl

 (2) 继续在 http.conf 文件中添加多虚拟主机设置

[[email protected]17 ~]# vim /app/httpd24/conf/httpd.conf

<VirtualHost *:80>
ServerName blog.abcdef.com
DocumentRoot /app/httpd24/htdocs/wordpress
CustomLog logs/blog.access_log combined  #访问日志
ErrorLog logs/blog.error_log    #错误日志
LogLevel warn   #日志级别
<Directory /app/httpd24/htdocs/wordpress>
Options none
Require all granted
</Directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/wordpress/$1
</VirtualHost>

<VirtualHost *:80>
ServerName forum.abcdef.com
DocumentRoot /app/httpd24/htdocs/discuz
CustomLog logs/forum.access_log combined
ErrorLog logs/forum.error_log
LogLevel warn
<Directory /app/httpd24/htdocs/discuz>
Options none
Require all granted
</Directory>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/discuz/$1
</VirtualHost>

 (3) 重新启动 httpd 服务

[[email protected]17 ~]# apachectl restart

 (4) 准备网站源码

[[email protected]17 data]# ll Discuz_X3.3_SC_UTF8.zip wordpress-5.2.2.tar.gz
-rw-r--r-- 1 root root 10922155 Dec 13 18:02 Discuz_X3.3_SC_UTF8.zip
-rw-r--r-- 1 root root 11133665 Dec 13 18:02 wordpress-5.2.2.tar.gz
[[email protected]-17 data]# tar -xvf wordpress-5.2.2.tar.gz
[[email protected]-17 data]# unzip Discuz_X3.3_SC_UTF8.zip
[[email protected]-17 data]# cp -r wordpress/* /app/httpd24/htdocs/wordpress/
[[email protected] data]# cp -r upload/* /app/httpd24/htdocs/discuz/
#设置apache用户的ACL权限,以便在网站安装时有权限读写文件
[[email protected] data]# setfacl -Rm u:apache:rwx /app/httpd24/htdocs/wordpress
[[email protected] data]# setfacl -Rm u:apache:rwx /app/httpd24/htdocs/discuz 

 (5) 在数据库服务器上 (192.168.214.27),创建数据库及连接数据库的用户

[[email protected] mysql]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.2.25-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create database discuz;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> grant all on wordpress.* to ‘wpuser‘@‘192.168.214.%‘ identified by ‘centos‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all on discuz.* to ‘dsuser‘@‘192.168.214.%‘ identified by ‘centos7‘ ;
Query OK, 0 rows affected (0.01 sec)

 (6) 设置 hosts 文件,使域名可以解析到主机,在 hosts 文件中添加一行(如果利用Linux图形桌面上的浏览器进行网站安装,hosts文件为 /etc/hosts,如果是用windows安装,则host文件 路径为 C:\Windows\System32\drivers\etc )

   192.168.214.17 blog.abcdef.com forum.abcdef.com

 (7) 安装网站即可,利用浏览器安装,输出相应域名,根据安装向导安装即可

  blog.abcdef.com域名访问如图,一步步安装即可

  forum.abcdef.com域名访问如下图,一步步安装即可

原文地址:https://www.cnblogs.com/hovin/p/12037052.html

时间: 2024-10-07 10:27:57

Linux学习-基于CentOS7的LAMP环境实现多虚拟主机的相关文章

CentOS7单机部署lamp环境和apache虚拟主机

(1)apache介绍 apache : httpd.apache.org 软件包:httpd 端口服务:80/tcp(http) 443/tcp(https,http+ssl) 配置文件: /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf /etc/httpd/conf.d/welcome.conf //默认测试页面 (2)lamp环境安装 1.关闭防火墙和selinux systemctl stop firewalld.service s

Linux学习-基于CentOS7的MariaDB数据库的安装

一.实验环境: 系统:CentOS7.6,关闭了防火墙与SELINUX 数据库版本:mariadb-10.2.25(二进制安装与源码安装) 二.安装方法: 1.yum源安装 (1) 配置yum源,官方yum源下载太慢,用国内的镜像源吧 [[email protected] ~]# cat /etc/yum.repos.d/mariadb.repo # MariaDB 10.2 CentOS repository list - created 2019-11-29 02:18 UTC # http

Linux学习-基于CentOS7的ProxySQL实现读写分离

一.实验环境 主机:3台,一台ProxySQL(192.168.214.37),两台主从复制,master(192.168.214.17),slave(192.168.214.27) 系统:CentOS7.6 数据库:mariadb-server-5.5.60(光盘yum源) ProxySQL:proxysql-1.4.16 ProxySQL组成 服务脚本:/etc/init.d/proxysql 配置文件:/etc/proxysql.cnf 主程序:/usr/bin/proxysql 基于SQ

Linux学习-基于CentOS7的MariaDB数据库的主从复制

一.MySQL主从复制原理 主从同步过程中主服务器有一个工作线程I/O dump thread,从服务器有两个工作线程I/O thread和SQL thread: 主服务器: dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向其发送binary log events: 从服务器: I/O Thread:向Master请求二进制日志事件,并保存于中继日志中: SQL Thread:从中继日志中读取日志事件,在本地完成重放. 主库把外界接收的SQL请求记录到自

linux环境下配置虚拟主机域名

linux环境下面配置虚拟主机域名 第一步:在root目录下面(即根目录)ls(查看文件)cd进入etc目录find hosts文件vi hosts 打开hosts文件并进行编辑在打开的文件最下面添加:192.168.8.115 domain.com.cn 第二步:cd /usr/local/apache2/conf/  进入该目录下面ls  查看当前目录下面的所有文件以及目录vi httpd.conf 打开并编辑这个文件编辑:使用键盘上的PgDn将光标拉到最低端,然后添加如下代码: NameV

基于IP、端口和FQDN实现虚拟主机

虚拟主机可以实现多站点共存,当站点的访问量不大时,为了节省资源(IP,物理主机),可以将多个站点运行于一台物理主机. 一.基于IP的虚拟主机: 实现虚拟主机必须先将中心主机的配置注释掉,即禁用中心主机,只需要注释DocumentRoot指令对应的行,而后再定义虚拟主机. 基于IP的虚拟主机要求一台物理机上要有多个IP,每个虚拟主机分别监听在不同IP地址上,访问时可以基于虚拟主机的名称也可以使用IP地址的方式在浏览器界面内访问.比如,两台虚拟主机www.a.org和www.b.net,我们的物理主

基于Linux搭建apache服务后,怎么构建web虚拟主机?

虚拟web主机指的是在同一台服务器中运行多个web站点,其中的每个站点实际上并不独立占用整个服务器,因此被称为"虚拟"web主机,通过虚拟web主机服务可以充分利用服务器的硬件资源. 使用httpd可以非常方便的去搭建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点.httpd支持的虚拟主机类型有这么三种(与Windows 的IIS服务一样): 1.相同IP.端口号.不同域名的虚拟主机: 2.相同IP.不同端口号的虚拟主机: 3.不同IP.相同端口号的虚拟主机

WIN10 vagrant和virtualbox虚拟机和一键搭建lnmp环境配置thinkphp虚拟主机

版本:win10系统 virtualbox:5.1.26 vagrant :1.9.7 centos 7.0 xshell/git 首先下载好对应版本的软件 配置vagrant和virtualbox 一.把虚拟机加载到box容器中 vagrant box add CentOs7.0 D:\soft\Vagrantfile\package.box CentOs7.0 是给虚拟机起的名字 D:\soft\Vagrantfile\package.box 是box路径也就是centos7.0 二.找一个

基于httpd-2.2和httpd-2.4配置虚拟主机web站点,并提供https服务(二)

使用httpd-2.2和httpd-2.4实现 > 1.建立httpd服务,要求: > 1) 提供两个基于名称的虚拟主机www1, www2:要求每个虚拟主机都有单独的错误日志和访问日志: > 2) 通过www1的/server-status提供状态信息,且仅允许172.16.0.1主机访问: > 3) www2不允许192.168.1.0/24网络中任意主机访问: > 2.为上面的第2)个虚拟主机提供https服务. > 二.基于httpd-2.4配置虚拟主机web站