虚拟主机一般是在配置多域名的时候 。我们在一个服务器中可以配置很多个网站,这个时候就要有多份配置保证 每一个域名访问网站的内容和源代码是不一样的 。废话不多说
首先 我们进入Apache 安装后的目录 如下图
cd /etc/httpd/
cd conf
ll
我们接着打开 httpd.conf 配置文件
vim httpd.conf
配置里边我们可以看到
#我们的服务目录地址
ServerRoot “/etc/httpd”
#监听的 80 端口
Listen 80
#加载 module 通过* 通配所有的 .conf 文件
Include conf.modules.d/*.conf
#拒绝外部访问
Require all denied
#代码配置默认都是放到这个路径
DocumentRoot "/var/www/html"
当然我们可以随意指定我们放代码的位置。
接下来我们来配置一下我们的虚拟主机
在 Esc 状态下通过命令大 G 来到文件的最下面
我们搜一下 virtual。 在 Esc 状态下
/virtual
当我们进入编辑状态的时候如上图:提示文件是只读的。
我们退出来 通过 sudo 提权的方式进行打开命令:
sudo vim httpd.conf
我们在 virtual 下边添加配置一个虚拟主机 监听 80 端口
ServerName www.aqingkong.com
DocumentRoot /data/www
配置完之后重启我们的服务器命令:
sudo service httpd restart
接下来我们创建文件夹
Sudo mkdir –p /data/www
我们创建一个文件命令:
vim index.Html
在文件中写入一些内容后 保存的时候发现 “index.html” E212: can’t open file for writing (不能打开或写入)
强制退出来命令: Esc :q!
通过命令:ll /data/ 发现这个/data/目录他所属的用户是在 root 账号如下图
我们不想那么麻烦 还是使用 qingkong 这个账号将它的权限目录所属人改掉 命令:
sudo chown -R qingkong:qingkong /data
通过命令查看 ll /data/ 所属人已经改变了如下图
接着我们编辑 vim index.html 保存后 通过 https://www.aqingkong.com 访问。当然啦 这是无法访问的 因为我们的域名没有绑定我们的 IP
通过 命令 sudo vim /etc/hosts 去 hosts 下去绑定我们的域名 指向公网 IP
sudo vim /etc/hosts
#复制到 Hosts 文件里
192.168.43.227 www.aqingkong.com
ping 我们的域名没有问题 发现已经解析到这台服务器上了在页面访问一下 出现的阿帕奇的页面
我们看一下图片标记的这一段话 他的意思说(您应该将网站内容添加到目录/ var / www / html /。要防止使用此页面,请遵循文件/etc/httpd/conf.d/welcome.conf 中的说明。)那就说明 我们配的虚拟主机是没有 起作用的 他和我们默认访问页面是一样的
接下来 我们看一下日志 命令 cd /etc/httpd/logs 发现进不去。
sudo su – //切换 root 用户后才进去。
cd /etc/httpd/logs
ll //会有两个文件 access_log、 error_log
tail -f error_log //查看日志
sudo vim /httpd.conf
ServerName www.aqingkong.com
DocumentRoot /data/www
#在我们虚拟主机内添加 Directory 配置 授权可以能访问到你的程序
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
然后重启服务器命令:
sudo service httpd restart
扩展命令 sudo setenforce 1 (临时关闭访问)或 sudo setenforce 0(临时开启访问)
什么时候执行呢?当你配置完 Directory(授权这个标签的时候你还不能访问到你的程序或页面 就执行一下 sudo setenforce 0)
Setenforce 是干什么用的 。我们服务器里有一个设置 。这个设置是为了安全做的一个设置。这是系统本身起到一个多层开关 的一个作用 。
如果要永久关闭 访问权限 命令
sudo vim /etc/selinux/config
把 SELINUX=enforcing (强制模式)改为 SELINUX=disabled (宽松模式)下次再重启服务器就还是宽松模式 再访问就不会出现访问不到的问题
如果有多个域名 配置多个虚拟主机 如下图
有什么问题 重复上边的操作就行了 多试下。
伪静态
下边再说说伪静态 这个还是比较常用的.通过命令: cd /etc/httpd 找到 modules 这个链接文件。 我们找到这个模块 mod_rewrite.so(这个就是伪静态的重写规则)/etc/httpd 下的 Modules 里边放的所有模块的类。
模块配置的文件都放到 conf.modules.d 下。接着我们来到 cd /etc/httpd/conf 下接着编辑 httpd.conf 命令:
sudo vim httpd.conf
第一步是将 mod_rewrite.so 加载到系统中来。首先打开我们伪静态的规则。在 Esc 状态下搜索 loadModule 命令:
/loadModule
你会搜到 LoadModule foo_module modules/mod_foo.so 向下复制一行改成
LoadModule rewrite_module modules/mod_rewrite.so
重启一下我们伪静态的功能就生效了命令:
sudo service httpd restart
配置一下我们的伪静态
ServerName www.aqingkong.com
DocumentRoot /data/www
#在我们虚拟主机内添加 Directory 配置 授权可以能访问到你的程序
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
#意思说当我们 这个 mod_rewrite.c 这个文件存在的时候这个模块才有效
#重写引擎打开
RewriteEngine on
#请求的 URL 是*.htm ,重定向到 index.html 前提条件在根目录创建一个 index.html 文件
RewriteRule ^(.*).htm$ index.html
注意:如果你编辑文件过程中强制按错键 强制退出编辑出错 会出现以下问题 E325: ATTENTION Found a swap file by the name “.httpd.conf.swp” owned by: ro。。。通过命令 ls -a 查找全部隐藏文件。然后 rm –rf XXX.swp 结尾的文件就行了