在 ServBay 中创建并运行 Laravel 项目
概述
ServBay 是一款功能强大的本地 Web 开发环境,专为 macOS 设计,集成了多种流行的软件包,包括 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 推荐将您的网站项目统一存放在 /Applications/ServBay/www
目录下,这有助于保持文件结构的整洁和统一管理。
确认 Composer 已安装
ServBay 在安装时已经自带了 Composer,您无需单独安装。您可以通过终端验证 Composer 是否可用:
bashcomposer --version
1如果命令正常执行并显示版本号,则表示 Composer 已准备就绪。
创建新的 Laravel 项目
打开终端,导航到 ServBay 推荐的网站目录,并使用 Composer 创建一个新的 Laravel 项目。我们将项目目录命名为
servbay-laravel-app
: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
7Composer 将下载并安装 Laravel 及其所有依赖项。
进入项目目录
确保您当前终端位于新创建的 Laravel 项目根目录:
bashcd /Applications/ServBay/www/servbay-laravel-app
1
初始化配置
生成应用密钥
Laravel 使用一个应用密钥来保护用户会话和加密数据。在项目根目录(
/Applications/ServBay/www/servbay-laravel-app
)下运行 Artisan 命令生成密钥:bashphp artisan key:generate
1该命令会在您的
.env
文件中生成并设置APP_KEY
值。配置环境变量 (
.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):
/Applications/ServBay/www/servbay-laravel-app/public
(重要: 必须指向 Laravel 项目根目录下的public
子目录)
更多详细步骤和选项,请参考 ServBay 官方文档中关于 添加第一个网站 的指南(请查找英文版本链接)。
- 名字 (Name):
保存并应用更改
保存您的网站配置。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' => '[email protected]', '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' => '[email protected]', '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,您可以在 macOS 上轻松搭建一个本地开发环境来创建和运行 Laravel 项目。ServBay 预集成的 PHP、Composer、Caddy Web 服务器以及多种数据库和缓存服务极大地简化了环境配置过程。只需简单的几步,您就可以创建一个新的 Laravel 项目,配置 Web 服务器,并开始进行开发,同时方便地集成和测试数据库及缓存功能。ServBay 致力于为开发者提供一个高效、便捷的本地开发体验。
如果您在使用过程中遇到任何问题,可以查阅 ServBay 的官方文档或寻求社区支持。