在 ServBay 中创建并运行 Laravel 项目
概述
ServBay 是一款功能强大的本地 Web 开发环境,支持 macOS 和 Windows,集成了多种流行的软件包,包括 PHP、Node.js、Python、Go、Java、多种数据库(MySQL, PostgreSQL, MongoDB)、缓存服务(Redis, Memcached)以及 Web 服务器(Caddy, Nginx, Apache)。
本文档将指导您如何在 ServBay 环境中快速创建、配置并运行一个 Laravel 项目。我们将利用 ServBay 内置的 PHP 环境、Composer 包管理器以及强大的网站(原称“主机”)管理功能来简化整个过程。
什么是 Laravel?
Laravel 是一个广受欢迎的开源 PHP Web 应用框架,由 Taylor Otwell 创建。它遵循 MVC (Model-View-Controller) 架构模式,并提供了许多开箱即用的功能,旨在简化 Web 开发中的常见任务,例如用户认证、路由、会话管理、缓存以及数据库操作。Laravel 以其优雅的语法、丰富的功能集和强大的社区支持而闻名,是构建现代、可维护 Web 应用的理想选择。
Laravel 的主要特性和优势
- 优雅的语法: 代码简洁、富有表现力,提高了开发效率和代码可读性。
- Eloquent ORM: 提供了一个强大的 ActiveRecord 实现,使数据库交互变得简单直观。
- Artisan 控制台: 包含许多有用的命令行工具,用于执行数据库迁移、代码生成、运行测试等任务。
- Blade 模板引擎: 提供简洁的模板语法,方便构建动态视图。
- 丰富的生态系统: 拥有大量的官方和第三方软件包,可通过 Composer 轻松集成。
- 强大的社区支持: 活跃的社区提供了丰富的资源、教程和解决方案。
使用 ServBay 开发 Laravel 项目的优势
ServBay 为 Laravel 开发者提供了极大的便利:
- 集成环境: ServBay 预装了多个 PHP 版本、Composer、以及常用的数据库和缓存服务,无需单独安装和配置。
- 易于管理: 通过 ServBay 的图形界面,您可以轻松切换 PHP 版本、管理网站(网站)配置、启动/停止服务。
- 预配置的 Web 服务器: ServBay 默认使用 Caddy,并已针对常见的 PHP 框架(包括 Laravel)进行了优化配置,简化了 Web 服务器设置。
- HTTPS 支持: ServBay 自动为
.local
域名配置 ServBay User CA 颁发的 SSL 证书,默认启用 HTTPS,为本地开发提供更安全、更接近生产环境的体验。
创建 Laravel 项目
ServBay 推荐将您的网站项目统一存放在以下目录下,这有助于保持文件结构的整洁和统一管理:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
确认 Composer 已安装
ServBay 在安装时已经自带了 Composer,您无需单独安装。您可以通过终端验证 Composer 是否可用:
bashcomposer --version
1如果命令正常执行并显示版本号,则表示 Composer 已准备就绪。
创建新的 Laravel 项目
打开终端,导航到 ServBay 推荐的网站目录,并使用 Composer 创建一个新的 Laravel 项目。我们将项目目录命名为
servbay-laravel-app
:macOS:
bashcd /Applications/ServBay/www # 创建项目目录 mkdir servbay-laravel-app # 进入项目目录 cd servbay-laravel-app # 使用 Composer 创建 Laravel 项目到当前目录 composer create-project --prefer-dist laravel/laravel .
1
2
3
4
5
6
7Windows:
cmdcd C:\ServBay\www # 创建项目目录 mkdir servbay-laravel-app # 进入项目目录 cd servbay-laravel-app # 使用 Composer 创建 Laravel 项目到当前目录 composer create-project --prefer-dist laravel/laravel .
1
2
3
4
5
6
7Composer 将下载并安装 Laravel 及其所有依赖项。
进入项目目录
确保您当前终端位于新创建的 Laravel 项目根目录:
macOS:
bashcd /Applications/ServBay/www/servbay-laravel-app
1Windows:
cmdcd C:\ServBay\www\servbay-laravel-app
1
初始化配置
生成应用密钥
Laravel 使用一个应用密钥来保护用户会话和加密数据。在项目根目录下运行 Artisan 命令生成密钥:
项目根目录路径:
- macOS:
/Applications/ServBay/www/servbay-laravel-app
- Windows:
C:\ServBay\www\servbay-laravel-app
bashphp artisan key:generate
1该命令会在您的
.env
文件中生成并设置APP_KEY
值。- macOS:
配置环境变量 (
.env
)Laravel 使用
.env
文件来管理项目的环境变量,如数据库连接、应用 URL 等。打开项目根目录下的.env
文件,根据您的需求进行配置。确保以下基本配置正确设置:dotenvAPP_NAME=ServBay Laravel Demo APP_ENV=local APP_KEY=base64:... # 此值已由 php artisan key:generate 生成 APP_DEBUG=true APP_URL=https://servbay-laravel-test.local LOG_CHANNEL=stack # 数据库配置示例 (MySQL) DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=servbay_laravel_app # 您希望使用的数据库名称 DB_USERNAME=root # ServBay 默认数据库用户 DB_PASSWORD=password # ServBay 默认数据库密码 # 缓存/队列配置示例 (Redis) CACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # ServBay 默认 Redis 无密码 REDIS_PORT=6379 # 缓存/队列配置示例 (Memcached) # CACHE_STORE=memcached # MEMCACHED_HOST=127.0.0.1 # MEMCACHED_PORT=11211
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26注意: 您可能需要根据您实际使用的数据库或服务调整
DB_*
、REDIS_*
或MEMCACHED_*
等配置项。ServBay 默认的数据库用户名和密码可以在 ServBay 控制面板中查看。
配置 Web 服务器 (在 ServBay 中添加网站)
使用 ServBay 的网站管理功能来配置 Web 服务器,将您的域名指向 Laravel 项目的 public
目录。
打开 ServBay 控制面板
启动 ServBay 应用,打开控制面板。
添加新的网站
导航到 ServBay 控制面板的『网站』部分。点击添加按钮(通常是
+
或类似的图标)来添加一个新的网站。填写网站信息
按照以下示例填写网站配置:
名字 (Name):
My First Laravel Dev Site
(一个方便您识别的名称)域名 (Domain):
servbay-laravel-test.local
(您希望在浏览器中访问的域名)网站类型 (Site Type):
PHP
PHP 版本 (PHP Version): 选择一个适合您 Laravel 版本的 PHP 版本,例如
8.3
。网站根目录 (Site Root):
- macOS:
/Applications/ServBay/www/servbay-laravel-app/public
- Windows:
C:\ServBay\www\servbay-laravel-app\public
(重要: 必须指向 Laravel 项目根目录下的
public
子目录)- macOS:
更多详细步骤和选项,请参考 ServBay 官方文档中关于 添加第一个网站 的指南(请查找英文版本链接)。
保存并应用更改
保存您的网站配置。ServBay 会自动更新其 Web 服务器配置(默认是 Caddy)。如果提示需要重启 Web 服务器,请按照提示操作。
验证基本访问
现在,您的 Laravel 项目应该可以通过配置的域名访问了。
打开浏览器
在浏览器中输入您配置的域名,例如
https://servbay-laravel-test.local
。查看结果
如果一切配置正确,您应该会看到 Laravel 的欢迎页面。
添加简单示例代码
为了更直观地验证,我们可以在 routes/web.php
文件中添加一个简单的路由来输出 "Hello ServBay!"。
找到项目目录下的 routes/web.php
文件,并添加或修改以下内容:
php
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return 'Hello ServBay!'; // 修改或添加此行
});
// ... 其他路由
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
保存文件后,再次访问 https://servbay-laravel-test.local
。您现在应该看到浏览器输出 Hello ServBay!
。
数据库集成示例
Laravel 提供了强大的数据库抽象层和 ORM (Eloquent),可以方便地与多种数据库交互。ServBay 预装了 MySQL, PostgreSQL, MongoDB, Redis, Memcached 等,方便您进行本地开发测试。
NoSQL 数据库示例
ServBay 默认集成了 Redis 和 Memcached,并且 PHP 扩展已经预装。
Memcached 示例
配置
.env
在
.env
文件中配置 Memcached 连接信息(如果尚未配置):dotenvCACHE_STORE=memcached MEMCACHED_HOST=127.0.0.1 MEMCACHED_PORT=11211 # ServBay 默认 Memcached 端口
1
2
3使用 Memcached
在您的路由或控制器中使用 Laravel 的缓存 facade 来与 Memcached 交互:
在
routes/web.php
中添加一个路由示例:phpuse Illuminate\Support\Facades\Cache; Route::get('/memcached-test', function () { // 存储数据到缓存,有效期 10 分钟 (600 秒) Cache::put('servbay_memcached_key', 'Hello from Memcached on ServBay!', 600); // 从缓存获取数据 $value = Cache::get('servbay_memcached_key'); if ($value) { return "Memcached 数据: " . $value; } else { return "Memcached 数据不存在或已过期。"; } });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15访问
https://servbay-laravel-test.local/memcached-test
来测试。
Redis 示例
配置
.env
在
.env
文件中配置 Redis 连接信息(如果尚未配置):dotenvCACHE_STORE=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null # ServBay 默认 Redis 无密码 REDIS_PORT=6379 # ServBay 默认 Redis 端口
1
2
3
4注意: 如果您同时配置了 Memcached 和 Redis 作为缓存存储,请确保
.env
中的CACHE_STORE
只激活您当前希望测试的服务(通过注释掉另一个)。使用 Redis
在您的路由或控制器中使用 Laravel 的 Redis facade 或 Cache facade 来与 Redis 交互:
在
routes/web.php
中添加一个路由示例:phpuse Illuminate\Support\Facades\Redis; // 或者使用 Cache facade,前提是 CACHE_STORE=redis // use Illuminate\Support\Facades\Cache; Route::get('/redis-test', function () { // 使用 Redis facade Redis::set('servbay_redis_key', 'Hello from Redis on ServBay!'); $value_redis = Redis::get('servbay_redis_key'); // 或者使用 Cache facade (如果 CACHE_STORE=redis) // Cache::put('servbay_redis_key', 'Hello from Redis on ServBay!', 600); // $value_cache = Cache::get('servbay_redis_key'); return "Redis 数据: " . $value_redis; });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15访问
https://servbay-laravel-test.local/redis-test
来测试。
关系型数据库示例 (MySQL & PostgreSQL)
ServBay 预装了 MySQL 和 PostgreSQL 数据库服务器。Laravel 的 Eloquent ORM 可以轻松连接它们。
首先,我们需要为项目创建一个数据库。您可以使用 ServBay 提供的数据库管理工具(如 phpMyAdmin, Adminer, pgAdmin 等,这些工具可以通过 ServBay 控制面板访问)或命令行客户端来创建数据库 servbay_laravel_app
。
接下来,我们将使用 Laravel 的迁移功能来创建数据库表结构。
创建迁移文件
在项目根目录运行 Artisan 命令创建一个新的迁移文件:
bashphp artisan make:migration create_accounts_table --create=accounts
1这会在
database/migrations
目录下生成一个新的迁移文件。编辑迁移文件
打开新创建的迁移文件 (文件名类似
YYYY_MM_DD_HHMMSS_create_accounts_table.php
),编辑up
方法来定义accounts
表的结构:php<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('accounts', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); // 添加 created_at 和 updated_at 列 }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('accounts'); } };
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29保存文件。
运行迁移
在项目根目录运行 Artisan 命令来执行迁移,创建
accounts
表:bashphp artisan migrate
1如果数据库配置正确且数据库
servbay_laravel_app
已存在,此命令将创建accounts
表以及 Laravel 默认的users
,password_reset_tokens
,failed_jobs
,cache
,cache_locks
,jobs
,job_batches
等表。
MySQL 示例
配置
.env
for MySQL确保您的
.env
文件中的数据库配置指向 MySQL:dotenvDB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 # ServBay 默认 MySQL 端口 DB_DATABASE=servbay_laravel_app DB_USERNAME=root DB_PASSWORD=password # ServBay 默认 MySQL 密码
1
2
3
4
5
6写入示例数据
在
routes/web.php
中添加一个路由来向accounts
表插入数据:phpuse Illuminate\Support\Facades\DB; Route::get('/mysql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay Demo User', 'email' => 'demo-user@servbay.test', 'created_at' => now(), 'updated_at' => now(), ]); return 'Account added to MySQL!'; });
1
2
3
4
5
6
7
8
9
10
11访问
https://servbay-laravel-test.local/mysql-add-account
来插入一条数据。读取示例数据
在
routes/web.php
中添加一个路由来从accounts
表读取数据:phpuse App\Models\Account; // 如果您创建了 Account 模型 // 或者直接使用 DB facade Route::get('/mysql-accounts', function () { // 使用 DB facade $accounts = DB::table('accounts')->get(); // 或者使用 Eloquent ORM (如果 Account 模型存在) // $accounts = Account::all(); return $accounts; });
1
2
3
4
5
6
7
8
9
10
11
12访问
https://servbay-laravel-test.local/mysql-accounts
来查看accounts
表中的数据。
PostgreSQL 示例
配置
.env
for PostgreSQL如果您希望使用 PostgreSQL,请修改
.env
文件中的数据库配置:dotenvDB_CONNECTION=pgsql DB_HOST=127.0.0.1 DB_PORT=5432 # ServBay 默认 PostgreSQL 端口 DB_DATABASE=servbay_laravel_app DB_USERNAME=root # ServBay 默认 PostgreSQL 用户 DB_PASSWORD=password # ServBay 默认 PostgreSQL 密码
1
2
3
4
5
6注意: 在切换数据库连接后,您可能需要重新运行
php artisan migrate:refresh
或php artisan migrate
来使用 PostgreSQL 创建表结构。写入示例数据 (PostgreSQL)
在
routes/web.php
中添加一个路由来向accounts
表插入数据:phpuse Illuminate\Support\Facades\DB; Route::get('/pgsql-add-account', function () { DB::table('accounts')->insert([ 'name' => 'ServBay PG Demo User', 'email' => 'pg-demo-user@servbay.test', 'created_at' => now(), 'updated_at' => now(), ]); return 'Account added to PostgreSQL!'; });
1
2
3
4
5
6
7
8
9
10
11访问
https://servbay-laravel-test.local/pgsql-add-account
来插入一条数据。读取示例数据 (PostgreSQL)
在
routes/web.php
中添加一个路由来从accounts
表读取数据:phpuse Illuminate\Support\Facades\DB; Route::get('/pgsql-accounts', function () { $accounts = DB::table('accounts')->get(); return $accounts; });
1
2
3
4
5
6访问
https://servbay-laravel-test.local/pgsql-accounts
来查看accounts
表中的数据。
总结
通过 ServBay,您可以轻松搭建一个本地开发环境来创建和运行 Laravel 项目。ServBay 预集成的 PHP、Composer、Caddy Web 服务器以及多种数据库和缓存服务极大地简化了环境配置过程。只需简单的几步,您就可以创建一个新的 Laravel 项目,配置 Web 服务器,并开始进行开发,同时方便地集成和测试数据库及缓存功能。ServBay 致力于为开发者提供一个高效、便捷的本地开发体验。
如果您在使用过程中遇到任何问题,可以查阅 ServBay 的官方文档或寻求社区支持。