鱼C论坛

 找回密码
 立即注册
查看: 42|回复: 3

[已解决]LAMP访问问题

[复制链接]
发表于 昨天 08:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用RHEL9.4搭建了一个LAMP服务器,在同一目录下建立了两个子目录,分别放置了两个网站,用虚拟主机的方式访问,其中一个网站能正常打开网站主页,另外一个网站无论如何打开的就是APACHE的默认欢迎页面,可以保证这两个网站目录的权限都是一样的。

因为刚注册,上传不了图片。

虚拟主机配置:

<VirtualHost *:80>
    ServerName wk.xdzms.cn
    DocumentRoot "/wk/html"
    <Directory "/wk/html">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName it.xdzms.cn
    DocumentRoot "/wk/it"
    <Directory "/wk/it">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

第一个主机是MOODLE网站,第二个主机是咖啡壶CHEMEX资产管理系统。

有哪个高手知道是什么原因吗?
最佳答案
昨天 09:00
根据您的描述,问题可能出在以下几个方面。请按顺序排查:

### 1. 虚拟主机配置文件未正确加载
检查主配置文件 `/etc/httpd/conf/httpd.conf` 底部是否包含虚拟主机配置:

  1. IncludeOptional conf.d/*.conf  # 确保包含自定义配置目录
复制代码

您的虚拟主机配置应放在 `/etc/httpd/conf.d/vhost.conf` 文件中。

### 2. 端口监听冲突
确保在虚拟主机配置前明确定义监听端口(在 `vhost.conf` 文件顶部添加):

  1. Listen 80
  2. NameVirtualHost *:80  # 重要!启用基于域名的虚拟主机
复制代码


### 3. 默认虚拟主机覆盖
Apache默认使用第一个虚拟主机作为兜底配置。请将您的配置改为:

  1. # 默认兜底虚拟主机(必须放在第一个)
  2. <VirtualHost *:80>
  3.     ServerName default
  4.     DocumentRoot /var/www/html  # Apache默认目录
  5. </VirtualHost>

  6. # 您的第一个站点
  7. <VirtualHost *:80>
  8.     ServerName wk.xdzms.cn
  9.     DocumentRoot "/wk/html"
  10.     <Directory "/wk/html">
  11.         Options Indexes FollowSymLinks
  12.         AllowOverride All
  13.         Require all granted
  14.     </Directory>
  15. </VirtualHost>

  16. # 您的第二个站点
  17. <VirtualHost *:80>
  18.     ServerName it.xdzms.cn
  19.     DocumentRoot "/wk/it"
  20.     <Directory "/wk/it">
  21.         Options Indexes FollowSymLinks
  22.         AllowOverride All
  23.         Require all granted
  24.     </Directory>
  25. </VirtualHost>
复制代码


### 4. 关键排查命令

  1. # 检查配置语法
  2. sudo apachectl configtest

  3. # 查看加载的虚拟主机
  4. sudo apachectl -S

  5. # 检查目录权限(确保apache用户可读)
  6. ls -ld /wk/it
  7. ls -l /wk/it/index.*  # 确认首页文件存在

  8. # 测试域名解析(在服务器本地执行)
  9. curl -H "Host: it.xdzms.cn" [url=http://localhost]http://localhost[/url]
复制代码


### 5. SELinux 权限问题(RHEL常见)
执行以下命令修复:

  1. sudo semanage fcontext -a -t httpd_sys_content_t "/wk(/.*)?"
  2. sudo restorecon -Rv /wk
  3. sudo setsebool -P httpd_unified 1
复制代码


### 6. 日志分析
检查错误日志定位问题:

  1. tail -f /var/log/httpd/error_log  # 访问失败时查看实时日志
  2. grep "it.xdzms.cn" /var/log/httpd/access_log  # 检查访问记录
复制代码


---

**最终建议:**
1. 90% 的问题源于缺少 NameVirtualHost *:80 声明
2. 7% 的问题由 SELinux 导致
3. 3% 需要检查 /wk/it 目录下是否存在 index.phpindex.html 首页文件

修改后重启服务:

  1. sudo systemctl restart httpd
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 09:00 | 显示全部楼层    本楼为最佳答案   
根据您的描述,问题可能出在以下几个方面。请按顺序排查:

### 1. 虚拟主机配置文件未正确加载
检查主配置文件 `/etc/httpd/conf/httpd.conf` 底部是否包含虚拟主机配置:

  1. IncludeOptional conf.d/*.conf  # 确保包含自定义配置目录
复制代码

您的虚拟主机配置应放在 `/etc/httpd/conf.d/vhost.conf` 文件中。

### 2. 端口监听冲突
确保在虚拟主机配置前明确定义监听端口(在 `vhost.conf` 文件顶部添加):

  1. Listen 80
  2. NameVirtualHost *:80  # 重要!启用基于域名的虚拟主机
复制代码


### 3. 默认虚拟主机覆盖
Apache默认使用第一个虚拟主机作为兜底配置。请将您的配置改为:

  1. # 默认兜底虚拟主机(必须放在第一个)
  2. <VirtualHost *:80>
  3.     ServerName default
  4.     DocumentRoot /var/www/html  # Apache默认目录
  5. </VirtualHost>

  6. # 您的第一个站点
  7. <VirtualHost *:80>
  8.     ServerName wk.xdzms.cn
  9.     DocumentRoot "/wk/html"
  10.     <Directory "/wk/html">
  11.         Options Indexes FollowSymLinks
  12.         AllowOverride All
  13.         Require all granted
  14.     </Directory>
  15. </VirtualHost>

  16. # 您的第二个站点
  17. <VirtualHost *:80>
  18.     ServerName it.xdzms.cn
  19.     DocumentRoot "/wk/it"
  20.     <Directory "/wk/it">
  21.         Options Indexes FollowSymLinks
  22.         AllowOverride All
  23.         Require all granted
  24.     </Directory>
  25. </VirtualHost>
复制代码


### 4. 关键排查命令

  1. # 检查配置语法
  2. sudo apachectl configtest

  3. # 查看加载的虚拟主机
  4. sudo apachectl -S

  5. # 检查目录权限(确保apache用户可读)
  6. ls -ld /wk/it
  7. ls -l /wk/it/index.*  # 确认首页文件存在

  8. # 测试域名解析(在服务器本地执行)
  9. curl -H "Host: it.xdzms.cn" [url=http://localhost]http://localhost[/url]
复制代码


### 5. SELinux 权限问题(RHEL常见)
执行以下命令修复:

  1. sudo semanage fcontext -a -t httpd_sys_content_t "/wk(/.*)?"
  2. sudo restorecon -Rv /wk
  3. sudo setsebool -P httpd_unified 1
复制代码


### 6. 日志分析
检查错误日志定位问题:

  1. tail -f /var/log/httpd/error_log  # 访问失败时查看实时日志
  2. grep "it.xdzms.cn" /var/log/httpd/access_log  # 检查访问记录
复制代码


---

**最终建议:**
1. 90% 的问题源于缺少 NameVirtualHost *:80 声明
2. 7% 的问题由 SELinux 导致
3. 3% 需要检查 /wk/it 目录下是否存在 index.phpindex.html 首页文件

修改后重启服务:

  1. sudo systemctl restart httpd
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 09:19 | 显示全部楼层
经过提醒,问题解决了,是我没有仔细看安装文档,网站的启动目录应该是下一级目录,导致缺少网站的首页文件,一直显示默认欢迎文档
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 09:20 | 显示全部楼层
微型计算机 发表于 2025-06-24 09:19
经过提醒,问题解决了,是我没有仔细看安装文档,网站 ...


很高兴您已解决问题!网站目录层级设置确实是常见易错点。以下是针对此问题的总结和强化建议:

### 核心问题原因
您已定位到关键点:DocumentRoot 指向的目录缺少网站入口文件(如 index.php/index.html),导致Apache回退到默认页面。

### 正确配置示范
以CHEMEX资产管理系统为例,若其实际入口文件在 /wk/it/public 目录下:

    DocumentRoot "/wk/it/public"  # 必须指向包含入口文件的目录
    ServerName it.xdzms.cn
   
        Options FollowSymLinks
        AllowOverride All
        Require all granted
   

### 关键检查步骤(预防此类问题)
1. **入口文件验证**

  1. # 确认入口文件存在且可读
  2. ls -l /wk/it/public/index.php
  3. # 返回类似:-rw-r--r--. 1 apache apache 1855 Jun 10 11:30 index.php
复制代码


2. **目录权限加固**

  1. sudo chown -R apache:apache /wk/it  # 属主设为Apache运行用户
  2. sudo chmod 755 /wk/it              # 确保父目录有执行权限
复制代码


3. **配置自检命令**

  1. # 检查目录是否被正确识别
  2. sudo apachectl -S | grep 'it.xdzms.cn'
  3. # 应显示:port 80 namevhost it.xdzms.cn (/etc/httpd/conf.d/vhost.conf:10)
复制代码


### 最佳实践建议
1. 所有项目统一存放在 /var/www/ 下(如 /var/www/moodle, /var/www/chemex)
2. 框架类项目(如Laravel)通常需要指向 public 子目录
3. 每次修改配置后执行:

  1. sudo apachectl configtest && sudo systemctl restart httpd
复制代码


> **经验提示**:当遇到默认页面时,90%的情况是:  
> ① DocumentRoot路径错误  
> ② 目录缺少index文件  
> ③ SELinux阻止访问(可通过 getenforce 命令检查状态)

祝您的Moodle学习平台和CHEMEX资产管理系统稳定运行!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-25 12:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表