微型计算机 发表于 2025-6-24 08:59:41

LAMP访问问题

用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资产管理系统。

有哪个高手知道是什么原因吗?

FishC 发表于 2025-6-24 09:00:49

根据您的描述,问题可能出在以下几个方面。请按顺序排查:

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

IncludeOptional conf.d/*.conf# 确保包含自定义配置目录

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

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

Listen 80
NameVirtualHost *:80# 重要!启用基于域名的虚拟主机


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

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

# 您的第一个站点
<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>


### 4. 关键排查命令

# 检查配置语法
sudo apachectl configtest

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

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

# 测试域名解析(在服务器本地执行)
curl -H "Host: it.xdzms.cn" http://localhost


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

sudo semanage fcontext -a -t httpd_sys_content_t "/wk(/.*)?"
sudo restorecon -Rv /wk
sudo setsebool -P httpd_unified 1


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

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


---

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

修改后重启服务:

sudo systemctl restart httpd


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

微型计算机 发表于 2025-6-24 09:19:39

经过提醒,问题解决了,是我没有仔细看安装文档,网站的启动目录应该是下一级目录,导致缺少网站的首页文件,一直显示默认欢迎文档

FishC 发表于 2025-6-24 09:20:07

微型计算机 发表于 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. **入口文件验证**

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


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

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


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

# 检查目录是否被正确识别
sudo apachectl -S | grep 'it.xdzms.cn'
# 应显示: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. 每次修改配置后执行:

sudo apachectl configtest && sudo systemctl restart httpd


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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: LAMP访问问题