Bitnami LAMP Stack(AWS)配置Laravel子域名失败求助
我之前在Bitnami的LAMP环境里折腾过好几次子域名配置,你现在主站正常、子域名打不开的情况,大概率是漏掉了下面这些关键环节,咱们一步步来排查:
检查
httpd-vhosts.conf的配置是否完整
你替换了prefix.conf指向vhosts配置,但首先得确保这个vhosts文件里真的有子域名对应的配置块啊!比如你的子域名是sub.yourdomain.com,配置应该类似这样:<VirtualHost *:80> ServerName sub.yourdomain.com DocumentRoot "/opt/bitnami/frameworks/laravel/public" <Directory "/opt/bitnami/frameworks/laravel/public"> Options -Indexes +FollowSymLinks -MultiViews AllowOverride All Require all granted </Directory> ErrorLog "/opt/bitnami/apache2/logs/subdomain-error.log" CustomLog "/opt/bitnami/apache2/logs/subdomain-access.log" combined </VirtualHost>如果用HTTPS的话,还得加一个
*:443的VirtualHost块,指定SSL证书路径(Bitnami的证书一般在/opt/bitnami/apache2/conf/bitnami/certs/目录下)。确认子域名DNS解析已生效
别光顾着改服务器配置,先确认你的子域名已经指向了AWS服务器的公网IP!用nslookup sub.yourdomain.com或者dig sub.yourdomain.com命令检查,返回的IP必须和你服务器的公网IP一致。DNS解析有时候需要10分钟到几小时才能全球生效,要是刚改完,先等一会儿再测试。查看Apache错误日志找线索
这是最直接的排查方法!执行下面的命令看看最近的错误信息:sudo tail -n 20 /opt/bitnami/apache2/logs/error_log日志里会明确告诉你问题出在哪——比如DocumentRoot路径不存在、权限不够、配置语法错误等等,我之前就是通过日志发现自己把子域名的DocumentRoot写错了。
检查Laravel目录权限
Bitnami的Apache是用daemon用户运行的,Laravel的storage和bootstrap/cache目录需要有正确的权限才能正常运行,执行这几条命令修复:sudo chown -R daemon:daemon /opt/bitnami/frameworks/laravel/storage sudo chown -R daemon:daemon /opt/bitnami/frameworks/laravel/bootstrap/cache sudo chmod -R 775 /opt/bitnami/frameworks/laravel/storage sudo chmod -R 775 /opt/bitnami/frameworks/laravel/bootstrap/cache同时也要确认
public目录的权限没问题,不然子域名的入口文件访问会被拒绝。验证Apache虚拟主机模块是否启用
虽然Bitnami默认是启用的,但保险起见还是检查一下:sudo /opt/bitnami/apache2/bin/httpd -M | grep vhost如果输出里有
vhost_alias_module (shared),说明模块正常;要是没有,就得修改Apache主配置文件启用它(不过这种情况在Bitnami里很少见)。检查AWS安全组和服务器防火墙
虽然主站能访问,但还是确认下AWS安全组是否开放了80/443端口给所有IP(或者你指定的IP),服务器本身的防火墙(比如ufw)也别挡住了这两个端口的请求。
按照上面的步骤一个个排查,基本上就能找到问题所在了。我之前有次就是DNS解析没生效,折腾了半天,等了半小时再刷新就正常了😂
内容的提问来源于stack exchange,提问作者Jaan

