laravel site1 env
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
随着互联网技术的飞速发展,Laravel 框架凭借其优雅的语法设计、强大的功能模块以及活跃的社区生态,已成为众多企业和开发者构建现代化 Web 应用的首选工具之一,云虚拟主机以其成本低廉、部署灵活、运维简便等优势,成为中小型项目上线初期的理想选择。
在实际开发中,许多用户面临一个常见需求:如何在同一台云虚拟主机上安全、稳定地运行多个独立的 Laravel 项目?这不仅涉及目录结构规划、环境配置,还需要解决域名解析、数据库隔离和性能调优等问题。
本文将手把手带你完成 在同一台 Linux 云服务器上部署两个独立 Laravel 网站 的全过程,涵盖环境准备、项目创建、Nginx 虚拟主机配置、数据库分离、HTTPS 启用及安全优化策略,助你实现多站点共存且互不干扰的目标。
环境准备:选择合适的云主机并确认基础依赖
在开始之前,首先要确保所选云主机满足 Laravel 运行的基本要求,推荐使用主流云服务商(如阿里云、腾讯云、华为云或海外平台 DigitalOcean、Vultr)提供的轻量级云服务器(Ubuntu 20.04 LTS 或更新版本),以便获得更高的自定义权限。
Laravel 所需最低环境要求:
- PHP 版本 ≥ 8.1(建议使用 PHP 8.2 或更高版本以获取更好的性能)
- 已安装 Composer 包管理工具
- 启用必要 PHP 扩展:
OpenSSL
PDO
Mbstring
Tokenizer
XML
Ctype
JSON
BCMath
Fileinfo
- Web 服务器支持:Nginx 或 Apache
- 数据库系统:MySQL 5.7+ 或 MariaDB 10.3+
- 支持 Git(便于后续代码拉取与更新)
✅ 提示:大多数现代云主机镜像已预装 LAMP/LEMP 环境,但建议手动检查并升级至最新稳定版组件。
本文以 Ubuntu 20.04 + Nginx + PHP 8.2 + MySQL 组合作为演示环境。
创建两个独立的 Laravel 项目
为了保证各网站之间的完全隔离,避免文件冲突和权限混乱,应为每个 Laravel 应用分配独立的根目录。
创建项目目录结构
sudo mkdir -p /var/www/laravel-site1 sudo mkdir -p /var/www/laravel-site2
设置适当的所有者权限(假设当前用户为 ubuntu
):
sudo chown -R $USER:$USER /var/www/laravel-site1 sudo chown -R $USER:$USER /var/www/laravel-site2
使用 Composer 初始化 Laravel 项目
进入 /var/www
目录并创建两个 Laravel 应用:
cd /var/www composer create-project --prefer-dist laravel/laravel laravel-site1 composer create-project --prefer-dist laravel/laravel laravel-site2
❌ 原文中存在一处明显错误:
composer create-preview
是无效命令,正确应为create-project
。
设置目录写入权限
Laravel 需要对 storage
和 bootstrap/cache
目录具有写权限,执行以下命令:
chmod -R 755 laravel-site1/storage laravel-site1/bootstrap/cache chmod -R 755 laravel-site2/storage laravel-site2/bootstrap/cache
也可使用更精细的权限控制(生产环境中推荐):
sudo chgrp -R www-data storage bootstrap/cache sudo chmod -R 775 storage bootstrap/cache
配置域名与 Nginx 虚拟主机
为了让两个 Laravel 项目通过不同域名访问,需要配置 Nginx 的虚拟主机(Virtual Host),实现基于域名的请求路由。
准备域名解析
假设你拥有主域名 example.com
,可以为其添加两条 DNS A 记录:
域名 | 指向 IP 地址 |
---|---|
site1.example.com | 你的云主机公网 IP |
site2.example.com | 你的云主机公网 IP |
等待 DNS 生效后(通常几分钟到几小时),即可进行下一步配置。
编写 Nginx 虚拟主机配置文件
配置 site1.example.com
创建配置文件:
sudo nano /etc/nginx/sites-available/site1.conf
server { listen 80; server_name site1.example.com; root /var/www/laravel-site1/public; index index.php index.html index.htm; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } error_log /var/log/nginx/site1_error.log; access_log /var/log/nginx/site1_access.log; }
配置 site2.example.com
复制上述配置并修改关键字段:
sudo cp /etc/nginx/sites-available/site1.conf /etc/nginx/sites-available/site2.conf sudo nano /etc/nginx/sites-available/site2.conf
仅需更改以下两行:
server_name site2.example.com; root /var/www/laravel-site2/public;
同时调整日志路径(可选):
error_log /var/log/nginx/site2_error.log; access_log /var/log/nginx/site2_access.log;
启用站点并测试配置
将配置链接到 sites-enabled
目录:
sudo chown -R $USER:$USER /var/www/laravel-site1 sudo chown -R $USER:$USER /var/www/laravel-site20
移除默认站点(如有):
sudo chown -R $USER:$USER /var/www/laravel-site1 sudo chown -R $USER:$USER /var/www/laravel-site21
测试 Nginx 配置是否正确:
sudo chown -R $USER:$USER /var/www/laravel-site1 sudo chown -R $USER:$USER /var/www/laravel-site22
若输出 “syntax is ok” 且无错误,则重启服务生效:
sudo chown -R $USER:$USER /var/www/laravel-site1 sudo chown -R $USER:$USER /var/www/laravel-site23
数据库与环境变量隔离
为防止数据交叉污染,必须为每个 Laravel 项目创建独立的数据库和数据库用户。
登录 MySQL 并创建数据库与用户
sudo chown -R $USER:$USER /var/www/laravel-site1 sudo chown -R $USER:$USER /var/www/laravel-site24
🔐 强烈建议使用高强度密码,并避免在
.env
中使用明文敏感信息(可结合 Vault 或 CI/CD 加密机制进一步保护)。
配置各自的 .env 文件
编辑第一个项目的环境配置:
sudo chown -R $USER:$USER /var/www/laravel-site1 sudo chown -R $USER:$USER /var/www/laravel-site25
设置如下:
sudo chown -R $USER:$USER /var/www/laravel-site1 sudo chown -R $USER:$USER /var/www/laravel-site26
同理配置第二个项目:
sudo chown -R $USER:$USER /var/www/laravel-site1 sudo chown -R $USER:$USER /var/www/laravel-site27
sudo chown -R $USER:$USER /var/www/laravel-site1 sudo chown -R $USER:$USER /var/www/laravel-site28