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
要是不想每次都输这么长的命令,可以给终端加个别名:
- 打开你的终端配置文件(比如
~/.bashrc或~/.zshrc) - 添加一行:
alias laravel-serve='php artisan serve --host=example.com --port=8000' - 刷新配置:
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:
- 打开hosts文件:
sudo nano /etc/hosts
- 在文件末尾添加以下内容:
127.0.0.1 example.com 127.0.0.1 app1.example.com 127.0.0.1 app2.example.com
- 保存退出(Ctrl+O,回车,Ctrl+X)
- 刷新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
相关产品推荐
相关产品推荐

