You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu本地环境下修改Laravel站点Apache域名及子域名配置方法

解决Laravel域名配置:自定义php artisan serve地址+Apache子域名虚拟主机

嘿,我来帮你搞定这个Laravel域名配置的问题!咱们分步骤来,先解决php artisan serve的自定义访问地址,再把Apache虚拟主机的配置补全,最后搞定本地DNS解析——这三步缺一不可。

一、修改php artisan serve的默认访问地址

默认的php artisan serve会绑定127.0.0.1:8000,如果想直接用example.com访问,你可以在启动时直接指定host和port参数:

# 用8000端口访问example.com
php artisan serve --host=example.com --port=8000

# 如果想用80端口(不用输端口号),需要sudo权限
sudo php artisan serve --host=example.com --port=80

要是不想每次都输这么长的命令,可以给终端加个别名:

  1. 打开你的终端配置文件(比如~/.bashrc或~/.zshrc)
  2. 添加一行:
    alias laravel-serve='php artisan serve --host=example.com --port=8000'
    
  3. 刷新配置:source ~/.bashrc(或对应你的配置文件)
    之后只要输入laravel-serve,就会自动用指定的域名启动服务了。

二、补全Apache虚拟主机配置

你已经创建了example.com.conf,但可能配置不够完整,咱们把它调整成支持主域名和子域名的版本:

1. 编辑虚拟主机配置文件

打开/etc/apache2/sites-available/example.com.conf,替换成以下内容(注意替换项目路径为你实际的Laravel项目目录):

# 主域名 example.com
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public

    <Directory /var/www/example.com/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>

# 子域名 app1.example.com
<VirtualHost *:80>
    ServerName app1.example.com
    DocumentRoot /var/www/app1.example.com/public

    <Directory /var/www/app1.example.com/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/app1.example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/app1.example.com-access.log combined
</VirtualHost>

# 子域名 app2.example.com
<VirtualHost *:80>
    ServerName app2.example.com
    DocumentRoot /var/www/app2.example.com/public

    <Directory /var/www/app2.example.com/public>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/app2.example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/app2.example.com-access.log combined
</VirtualHost>

2. 启用必要模块并重启Apache

Laravel需要URL重写模块,先启用它:

sudo a2enmod rewrite

然后启用虚拟主机并重启Apache:

sudo a2ensite example.com.conf
sudo systemctl restart apache2

3. 修复项目文件权限

确保Apache用户能访问你的Laravel项目目录:

sudo chown -R www-data:www-data /var/www/example.com
sudo chown -R www-data:www-data /var/www/app1.example.com
sudo chown -R www-data:www-data /var/www/app2.example.com

sudo chmod -R 755 /var/www/example.com
sudo chmod -R 755 /var/www/app1.example.com
sudo chmod -R 755 /var/www/app2.example.com

三、本地DNS解析(关键!)

你的电脑默认不知道example.com指向哪里,所以必须修改hosts文件把域名指向本地IP:

  1. 打开hosts文件:
sudo nano /etc/hosts
  1. 在文件末尾添加以下内容:
127.0.0.1 example.com
127.0.0.1 app1.example.com
127.0.0.1 app2.example.com
  1. 保存退出(Ctrl+O,回车,Ctrl+X)
  2. 刷新DNS缓存(Ubuntu系统):
sudo systemctl restart systemd-resolved

如果是Mac系统,用这个命令刷新:

dscacheutil -flushcache

最后检查

  • 如果用php artisan serve,启动后直接访问http://example.com:8000(或你指定的端口)
  • 如果用Apache,直接访问http://example.com、http://app1.example.com即可

内容的提问来源于stack exchange,提问作者Nathan Siafa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:09:36