Laravel 8 公式教程的中文翻译,可以系统性地学习
关于这篇文章
この記事は、Laravel 8 のGetting Startedを和訳したものです。
公式のチュートリアルなので、安心して、かつ効率的に学習することができます。
Laravelのインストールとその設定、各種ツールの説明まで網羅されているので、初学者がLaravel 8 に初めて触れたり、中級者が基礎を振り返るのに最適です。
読者に誤解を与えない部分は、読みやすさを重視して適宜意訳しています。
英語の記事へのリンクを日本語の記事へのリンクに変更したり、新しくリンクを追加している部分があります。
DeepL等を使用して推敲は行っていますが、間違っているところやより良い表現があれば、どんどん編集リクエストをお願いいたします。
文頭にあるは、原文のリンクになっています。
Laravel 官方文檔的源頭連結是:https://github.com/laravel/docs/tree/8.x
使用的許可證是 MIT。
以下是要求的中文翻译:
请用中文进行表述,只需提供一种选项:
安装
服务器所需的物品

如果不使用Homestead,服务器需要满足以下条件。
-
- PHP >= 7.3
-
- BCMath PHP拡張
-
- Ctype PHP拡張
-
- Fileinfo PHP拡張
-
- JSON PHP拡張
-
- Mbstring PHP拡張
-
- OpenSSL PHP拡張
-
- PDO PHP拡張
-
- Tokenizer PHP拡張
- XML PHP拡張
请把下面的句子用中文进行本地化改写, 只需要一种选项:
Can you please repeat that?
安装Laravel

如果您使用Mac,可以使用HomeBrew进行安装。
运行brew install composer。
请从中文母语者的角度将以下内容改写:
如何使用Laravel安装程序
首先,使用Composer下载Laravel安装程序。
composer global require laravel/installer
请确保将Composer的vendor bin目录添加到$PATH中,以便将路径添加到Laravel的可执行文件中。vendor bin目录的位置因操作系统而异,但通常位于以下位置。
macOS: $HOME/.composer/vendor/bin
Windows: %USERPROFILE%\AppData\Roaming\Composer\vendor\bin
GNU / Linuxディストリビューション: $HOME/.config/composer/vendor/binもしくは、 $HOME/.composer/vendor/bin
您可以运行 composer global about 来确认 Composer 的全局安装路径。
当安装完成后,您可以执行laravel new命令在指定的目录中创建一个新的Laravel项目。例如,laravel new blog命令会创建一个名为blog的目录,并在其中放置已经安装了Laravel依赖关系的项目。
laravel new blog
如果你想要创建一个具有登录和注册功能的Laravel项目,那么可以考虑使用Laravel Jetstream进行检查。
请原谅我愚钝的理解,我不确定我是否完全理解了您的问题。但是,如果您希望我尝试将以下句子以汉语进行本地化改写,我非常乐意尝试并提供一种可能的选择。
如何使用Composer Create-Project
除了使用Laravel安装程序外,您还可以使用Composer的create-project命令安装Laravel。
composer create-project --prefer-dist laravel/laravel blog
以下是简单的中文释义,不需要提供多个选项:
以下是简单的中文翻译,只需提供一种选择:
请翻译以下内容至中文,只需要一种选项:
本地开发服务器
如果你的本地已经安装了PHP,并且想要在PHP内置的开发服务器上发布应用程序的话,请使用Artisan的serve命令。执行这个命令后,开发服务器将在http://localhost:8000上启动。
php artisan serve
如果想要增强本地开发环境,请使用Homestead和Valet。
请将以下内容用中文进行本国语义改写。(仅需要一个选项)
设定
公开目录

把以下内容用中文进行同义转述:
设置文件
Laravel的配置文件都存储在config目录中。请查看每个选项的文档并阅读一遍。
请用中文释义下列句子,只需给出一种选择:
目录的权限
安装Laravel后,需要进行一些权限设置。storage目录和bootstrap/cache目录需要由Web服务器进行写入操作,否则Laravel将无法启动。如果使用Homestead,则这些权限已经设置好了。
请用中文对以下内容进行改述,只需提供一个选项:
应用程序密钥
安装Laravel后必须要做的事情是为应用程序设置一个随机的字符串作为应用密钥。如果是使用Composer或Laravel安装程序安装的Laravel,那么此密钥已经通过php artisan key:generate命令设置好了。
通常情况下,这个字符串需要有32个字符。同时,键可以在名为.env的环境文件中进行设置。如果您没有将.env.example文件复制为.env文件,请进行复制。如果应用程序密钥未设置,用户会话和其他加密数据将不安全。
请用中文释义以下内容,仅提供一种选择:
The Great Wall of China is a historic landmark known for its length and defensive purpose. It was built during various dynasties and stretches across multiple provinces in northern China.
增加配置
Laravel不需要任何额外的设置,可以立即开始使用。但是,请确保阅读config/app.php文件及其相关文档。该文件包含了一些根据应用程序需要进行更改的选项,比如时区和语言环境。
也可以组合以下类似的附加组件。
Cache
Database
Session
请用中文将以下内容进行释义,只需要提供一种选项:
“I will visit my grandparents this weekend.”
网页服务器配置
目录设置

请用汉语将以下内容进行释义,只需要一个选项:
The weather is very hot today.
设置URL
阿帕奇

如果Laravel中的.htaccess在Apache上无法正常工作,请尝试以下替代方案。
Options +FollowSymLinks -Indexes
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
请用中文将以下内容进行表达,并提供一个翻译版本:
Nginx是一种高性能的Web服务器和反向代理服务器。
如果使用Nginx,请在网站配置中添加以下指令,以便所有请求都能流经前端控制器index.php。
location / {
try_files $uri $uri/ /index.php?$query_string;
}
如果您使用的是Homestead或者Valet,URL设置将自动进行。
以下是原文的中文翻译:
只需一种选项
设定
首先

请将以下内容用中文进行同义词转述,只需提供一种选项:
– How are you doing?
– 你好吗?
– Can you please help me with this?
– 你可以帮帮我吗?
– I really appreciate your assistance.
– 非常感谢你的帮助。
– What are your plans for the weekend?
– 你周末有什么计划?
– I’m sorry for the inconvenience.
– 对不起造成的不便。
环境设置

为了使这个变得简单,Laravel使用了PHP库DotEnv。在新建的Laravel项目中,应用程序的根目录中有一个.env.example文件。如果使用Composer安装了Laravel,这个文件会自动复制为.env。否则,您需要手动复制文件。
不应该将.env文件提交到应用程序的源代码管理仓库中。原因是,不同的开发者或服务器使用该应用程序时,所需的环境设置可能会有所不同。此外,如果机密信息被泄露,恶意入侵者可以访问源代码管理仓库,从而造成安全风险。
如果团队进行开发的话,可能最好将.env.example文件保留在应用程序中。在示例配置文件中放置占位符值可以让团队中的其他开发人员更好地了解哪些环境变量是应用程序运行所必需的。此外,还可以创建.env.testing文件。该文件会在执行PHPUnit测试或使用–env=testing选项运行Artisan命令时覆盖.env文件。
在.env文件中的任何变量都可以通过服务器级别或系统级别的外部环境变量进行覆盖。
请用汉语将以下句子进行同义转述,只需要一种选择:
The weather outside is very cold today.
环境变量的种类

.env
の値env()
の値true(bool) true(true)(bool) truefalse(bool) false(false)(bool) falseempty(string) ”(empty)(string) ”null(null) null(null)(null) null如果您想将包含空格的值定义为环境变量,请使用双引号将值括起来。
APP_NAME="My Application"
请将以下内容用中文进行同义改写,只需要一种选项:
获取环境变量
这个文件中的所有变量在应用程序接收到请求时,会被加载到PHP的超级全局变量$_ENV中。然而,要获取配置文件中的变量,需要使用名为env的辅助函数。事实上,看一下Laravel的配置文件,你会发现在一些选项中使用了这个辅助函数。
'debug' => env('APP_DEBUG', false),
如果给定的键对应的环境变量不存在,那么env函数传入的第二个参数将被用作默认值。
请使用正确的语法、词汇、表达,并尽量保持句子结构的一致性。
了解当前的环境

$environment = App::environment();
此外,您还可以通过将参数传递给环境方法来确认当前环境是否与指定值相符。如果当前环境符合指定值中的任何一个,该方法将返回true。
if (App::environment('local')) {
// 環境がlocalである
}
if (App::environment(['local', 'staging'])) {
// 環境がlocalかstagingのいずれかである
}
应用程序的环境可以通过服务器级环境变量APP_ENV进行覆盖。利用这一点,可以在不同的环境中共享应用程序。
以下内容的中文本地化改写选项(只需要一个):
从调试页面隐藏环境变量

有些变量会同时在环境变量和服务器/请求数据中使用。因此,有时候需要在 $_ENV 和 $_SERVER 两者中都指定。
return [
// ...
'debug_hide' => [
'_ENV' => [
'APP_KEY',
'DB_PASSWORD',
],
'_SERVER' => [
'APP_KEY',
'DB_PASSWORD',
],
'_POST' => [
'password',
],
],
];
请用中文进行重新表达,只需要给出一种选项:
Can you please help me with this task?
設定值的访问

$value = config('app.timezone');
// 設定値が存在しない場合、デフォルト値が使用される
$value = config('app.timezone', 'Asia/Seoul');
如果想要在运行时设置参数值,可以将数组传递给助手函数config。
config(['app.timezone' => 'America/Chicago']);
和译者备忘录
可以通过三种方法获取环境的值。
>>> config(‘app.env’)
=> “local”
>>> App::environment()
=> “local”
>>> env(‘APP_ENV’)
=> “local”和译者备忘录
有三种方法可以获取环境的值。
>>> config(‘app.env’)
=> “local”
>>> App::environment()
=> “local”
>>> env(‘APP_ENV’)
=> “local”和译者备忘录
可以使用三种方法来获取环境的值。
>>> config(‘app.env’)
=> “local”
>>> App::environment()
=> “local”
>>> env(‘APP_ENV’)
=> “local”
请用中文将以下内容作简直引述。只需要提供一种选项:
Can you please help me with this task?
请帮帮我这个任务可以吗?
缓存设定

在部署到生产环境时,通常应执行php artisan config:cache命令作为一种常规步骤。在应用程序开发过程中,由于频繁更改配置选项,因此不应执行此命令。
请注意,如果在部署过程中执行config:cache命令,请确保仅从配置文件中调用env函数。一旦配置被缓存,.env文件将不会被读取,并且env函数将返回null值。
请将以下内容用中文进行本地化改写:
“Can you help me with this problem?”
维护模式 hù

请运行Artisan命令”down”以启用维护模式。
php artisan down
另外,如果给down命令添加retry选项,会将Retry-After的值设置为HTTP头部。
php artisan down --retry=60
请给我一个中文的例子来改述以下内容:
“Can you please paraphrase the following sentence in Chinese? I only need one option.”
绕过维护模式
即使在维护模式下,也可以使用secret选项来指定一个令牌以绕过维护模式。
php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"
将应用程序置于维护模式之后,打开指定应用程序URL时,Laravel会生成一个Cookie来绕过浏览器的维护模式。
https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515
当访问这个隐藏的路径时,将会重定向到应用程序的根目录/。一旦在浏览器中生成了Cookie,就可以像在维护模式关闭时一样浏览应用程序。
请使用中文原生方式改写以下内容,只需要一种选项:
请夫人留步,我能帮您一些什么吗?
维护页面的预渲染
如果在部署时使用`php artisan down`命令,当Composer的依赖关系和其他基础设施组件正在更新时,用户访问应用程序时可能会发生错误。这是因为应用程序需要判断是否处于维护模式,并使用模板引擎来渲染维护页面,这需要启动Laravel的大部分功能。
因此,您可以在请求周期的开头预先渲染维护模式页面。该页面将在应用程序的依赖关系加载之前进行渲染。预渲染将使用render选项中指定的模板来进行。
php artisan down --render="errors::503"
请用中文再表述以下内容,只需要一种选项:
将请求重定向到维护模式。
在维护模式下,用户尝试访问的所有应用程序URL将显示维护页面。根据需要,可以将所有请求重定向到指定的URL。这可以使用redirect选项来实现。以下是将所有请求重定向到URI / 的示例。
php artisan down --redirect=/
请用汉语将以下内容进行改写:
愿你所有的梦想都能实现。
退出维护模式
要结束维护模式,请使用up命令。
php artisan up
提示:
可以通过在resources/views/errors/503.blade.php中定义自己的模板来自定义维护模式的模板。
请用中文从母语者的角度进行改写,只需要给出一种版本:
请为我翻译以下句子为中文。
维护模式和队列
当应用处于维护模式时,任务队列将不被处理。一旦应用退出维护模式,任务将按正常流程处理。
请用中文将以下内容进行释义:仅需提供一种选项。
请将以下内容中文释义为以下选项之一:
我们希望今天晚上你能和我们一起去看电影。
维护模式的替代方案
如果你希望在Laravel中实现无停机部署,而不想让应用程序在维护模式下停机数秒钟,请考虑使用Envoyer等替代方案。
请用中文将以下句子进行同义改写:
只需要一个选项。
目录结构
首先

请用中文将以下内容翻译成同义句:
“Can you please help me with this problem?”
根目录
应用程序目录

请使用中文将以下内容进行改写,仅需要一个选项:
引导目录

以下是原文:
“The Great Wall is a UNESCO World Heritage Site and is considered one of the most famous tourist attractions in China. It stretches over 13,000 miles and was built to protect the Chinese empire from invasions.”
中文翻译:
长城是联合国教科文组织世界遗产,被认为是中国最著名的旅游景点之一。它延伸超过13,000英里,是为了保护中国帝国免受入侵而建造的。
配置文件夹

下雨了,所以我没有去公园。
数据库目录

请用中文转述以下内容,只需提供一种选项:
1. Can you please help me with my homework?
请问你能帮我做作业吗?
公共目录

请用汉语将以下内容进行释义,只需要提供一种选项:
“Can you explain this concept in simpler terms?”
资源目录

请以本地汉语重新表述以下内容,仅需要一种选项:
You should always strive for excellence and never settle for mediocrity. Your potential is boundless if you push your limits and embrace challenges. Believe in yourself and never be afraid to step out of your comfort zone. Success comes to those who dare to dream big and work diligently towards their goals. So, keep pushing yourself and never give up, because the sky is the limit!
路由目录

在web.php文件中,包含了RouteServiceProvider将路由放置在名为web的中间件组中,并提供了会话状态、CSRF保护和Cookie加密功能。如果应用程序不提供无状态的RESTful API,则所有路由都很可能在web.php文件中定义。
api.php文件中包含了一个名为api的中间件组的路由,并提供了速率限制。这些在该文件中定义的路由被意图为无状态,因此通过这些路由进入应用程序的请求将通过令牌进行身份验证,并且不能访问会话状态。
在console.php文件中,您可以定义基于闭包的控制台命令。每个闭包都绑定到命令实例,并允许它们与每个命令的输入/输出方法进行通信。该文件定义了基于控制台而不是基于HTTP的应用程序入口点(路由)到应用程序.
在channels.php文件中,您可以注册应用程序支持的所有事件广播频道。
翻译者备注
由于在console.php中定义了inspire,所以执行以下命令将显示英语的格言。
php artisan inspire
请用中文重新表达以下句子(只需要一种说法):
存储目录

请使用php artisan storage:link命令,在public目录下创建一个指向storage/app/public目录的符号链接。这个目录是用来存放用户生成的文件,例如个人资料头像等需要公开的文件。
请给我两瓶矿泉水。
测试目录

请用中文对下面的句子进行释义,只需要提供一种选择:
供应商目录

请将以下内容以中国当地语言进行改写(只需要一种选择):
“Can you please help me find the nearest hospital?”
应用程序目录

应用程序的app目录中包含了各种附加目录,如Console、Https和Providers。请将Console目录和Http目录视为提供应用程序核心API的部分。HTTP协议和CLI都是与应用程序通信的机制,但它们不包含任何应用程序逻辑。换句话说,它们是应用程序发出命令的两种方法。在Console目录中,存储了所有Artisan命令,而在Http目录中,存储了控制器、中间件和请求。
使用Artisan命令的make方法生成类时,会在app目录中生成各种不同的子目录。因此,例如执行Artisan命令的make:job来生成job类之前,app/Jobs目录是不存在的。
提示:
在app目录中的许多类可以通过Artisan通过命令进行生成。要查看可用命令,请在终端中运行php artisan list make。
请用汉语将以下句子进行本地化改写,只需要提供一种选项:
Here is a list of recommendations for popular tourist destinations in China.
广播目录

请原谅我的错误。
控制台目录

请把下面的句子用中文进行释义,只需要一个选项:
“She is very talented and creative in her artistic expressions.”
活动目录

请用中文将以下内容进行释义:只需要一个选项。
只需要提供一个选项即可。
例外目錄

请用中文解释以下内容,只需要提供一种选项:
The circumstances surrounding the incident are still unclear, and the authorities are conducting an investigation to gather more information.
Http目录

请你尽快完成这份报告。
职位目录

请提供以下内容的中文本地化改写。只需要一种选项:
听众目录

请用中文将以下句子进行释义,只需要一个版本:
邮件目录

请用中文将以下内容翻译成同样意思的句子:
1. I am going to the supermarket to buy some groceries.
我要去超市购买一些食品杂货。
2. Can you please turn off the lights before leaving?
请你离开前把灯关掉好吗?
3. The movie last night was very entertaining.
昨晚的电影非常有趣。
4. I need to go to the bank to deposit some money.
我需要去银行存一些钱。
5. My friend recommended this restaurant, saying their food is delicious.
我的朋友推荐了这家餐厅,说他们的食物很好吃。
模型目录

请用中文将以下内容进行释义,只需一种选择:
Sure! Please provide me with the content you want me to paraphrase in Chinese.
通知目录

请用中文用一种方式改述以下内容:
政策目录

请提供以下中文的本地化版本,只需一个选项:
“Can you please help me find the nearest subway station?”
提供者目录 zhě mó lù)

如果你新建了一个Laravel应用程序,这个目录已经有一些提供者了。根据需要,你可以将自己的提供者添加到这个目录中。
请用中文将以下句子进行表达。
– Can you please pass me the salt?
规则目录

请你以中文将以下内容改写为原汁原味的句子。只需要提供一种选项:
“Can you please help me with this task? I’m not sure how to proceed.”
农田
首先

Laravel Homestead是一个安装了所有必要软件(例如PHP和Web服务器等)的官方Vagrant Box,它提供了一个出色的开发环境,无需在本地计算机上安装服务器软件。使用它,您不再需要担心系统混乱的问题。Vagrant Box是一次性的,如果出现问题,您可以在几分钟内销毁并重新创建该Box。
Homestead 是在 Windows / Mac / Linux 上运行的,包含了开发 Laravel 应用所需的所有组件,如 Nginx / PHP / MySQL / PostgreSQL / Redis / Memcached / Node。
注意:
如果你使用的是Windows操作系统,需要启用硬件虚拟化(VT-x)。这通常可以在BIOS中进行设置。
如果你正在使用UEFI系统并且开启了Hyper-V,需要禁用Hyper-V以便访问VT-x。
包括的软件
-
- Ubuntu 18.04
-
- Git
-
- PHP 7.4
-
- PHP 7.3
-
- PHP 7.2
-
- PHP 7.1
-
- PHP 7.0
-
- PHP 5.6
-
- Nginx
-
- MySQL
-
- lmm for MySQL or MariaDB database snapshots
-
- Sqlite3
-
- PostgreSQL (9.6, 10, 11, 12)
-
- Composer
-
- Node (With Yarn, Bower, Grunt, and Gulp)
-
- Redis
-
- Memcached
-
- Beanstalkd
-
- Mailhog
-
- avahi
-
- ngrok
-
- Xdebug
-
- XHProf / Tideways / XHGui
- wp-cli
请使用汉语将以下内容进行本地化释义,只需要提供一种选项:
The city is known for its stunning architecture and vibrant nightlife.
软件选项
-
- Apache
-
- Blackfire
-
- Cassandra
-
- Chronograf
-
- CouchDB
-
- Crystal & Lucky Framework
-
- Docker
-
- Elasticsearch
-
- Gearman
-
- Go
-
- Grafana
-
- InfluxDB
-
- MariaDB
-
- MinIO
-
- MongoDB
-
- MySQL 8
-
- Neo4j
-
- Oh My Zsh
-
- Open Resty
-
- PM2
-
- Python
-
- RabbitMQ
-
- Solr
- Webdriver & Laravel Dusk Utilities
请用中文将以下句子进行改述,只需一种选项:
1. She is a talented artist.
她是一位有才华的艺术家。
安装和设置
开始做的第一件事

如果您要使用 VMware 提供程序,您需要购买 VMware Fusion / Workstation 和 VMware Vagrant 插件。虽然不是免费的,但使用 VMware 可以加速共享文件夹的性能。
如果要使用Parallels提供商,请安装Parallels Vagrant插件。这是免费的。
由于Vagrant存在限制,因此Hyper-V提供程序将忽略所有网络设置。
参考にしてください:
在Homebrew中安装Vagrant,请执行以下命令。
brew cask install vagrant有关Parallels Vagrant插件的概述和安装方法,请参考以下日本文的文章。
https://qiita.com/Michinosuke/items/eae539a1880f223d239e
请原谅我犯下的错误,我从中学到了很重要的教训。我会努力改正我的错误,并避免再次犯同样的错误。希望你能够理解并给我一个机会重新证明自己。非常抱歉给你带来的困扰。
安装Homestead Vagrant Box
安装了VirtualBox / VMware和Vagrant之后,需要在终端上运行以下命令来将laravel/homestead Box添加到Vagrant中。根据互联网通信速度的快慢,下载Box可能需要几分钟时间。
vagrant box add laravel/homestead
如果命令执行失败,请确认一下 Vagrant 是否是最新版本。
请注意,为了测试目的,Homestead定期发布”alpha” / “beta” Box,但这可能会影响到vagrant box add命令。如果执行vagrant box add时出现问题,请尝试执行vagrant up命令来下载正确的Box,以便Vagrant在尝试启动虚拟机时能够正常工作。
请帮忙用中文给下列句子进行同义改写,只需要一种选项:
1. The weather is really nice today.
今天的天气非常好。
2. I will go to the supermarket to buy some groceries.
我会去超市买些杂货。
3. She is a talented singer with a beautiful voice.
她是一位有才华的歌手,嗓音很美。
4. The movie was very entertaining and kept me engaged throughout.
这部电影非常有趣,让我从头到尾都很入迷。
5. We had a great time at the party last night.
昨晚的聚会很愉快。
家庭农场的安装
请在主机上克隆存储库并安装Homestead。Homestead Box可作为所有Laravel项目的主机,建议将存储库克隆到主目录的Homestead文件夹内。
git clone https://github.com/laravel/homestead.git ~/Homestead
请检查标有标签的Homestead版本,因为master分支并不总是稳定版本。最新的稳定版本可以在GitHub的发布页面上找到。
还有一种方法,可以切换到始终发布最新稳定版本的release分支。
cd ~/Homestead
git checkout release
在克隆Homestead存储库之后,请在Homestead目录中运行bash init.sh命令以生成名为Homestead.yaml的配置文件。Homestead.yaml文件将放置在Homestead目录中。
// Mac / Linuxの場合
bash init.sh
// Windowsの場合
init.bat
请将以下内容用中文进行翻译:只需要一种选项:
家园的设置
启动提供者

provider: virtualbox
请将以下内容以中文进行本地化转述,只需提供一个选项:
“This novel takes place in a fictional world that resembles ancient China, where a young protagonist embarks on a thrilling adventure to uncover the secrets of a mystical relic.”
设置共享文件夹
在Homestead.yaml文件的folders属性中,列出要与Homestead环境共享的文件夹。当这些文件夹中的文件发生更改时,将在本地机器和Homestead环境之间进行同步。可以设置任意数量的共享文件夹。
folders:
- map: ~/code/project1
to: /home/vagrant/project1
如果您使用的是Windows操作系统,请不要像“~/”一样输入路径,而应该使用类似于“C:\Users\user\Code\project1”这样的完整路径来指向项目。
请将每个项目映射到其自己的文件夹中,而不是将所有内容映射到/code文件夹中。当映射文件夹时,虚拟机将跟踪文件夹中所有文件的所有磁盘IO操作。这样,当文件夹中有大量文件时,会影响性能。
folders:
- map: ~/code/project1
to: /home/vagrant/project1
- map: ~/code/project2
to: /home/vagrant/project2
请注意,绝对不要使用Homestead将当前目录挂载为(/vagrant)。Vagrant不会将当前目录映射到/vagrant,并且这将导致选项功能中断或在配置期间发生意外情况。
请在同步文件夹设置中添加标志以启用NFS。
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "nfs"
如果在Windows上使用NFS,请考虑安装vagrant-winnfsd插件。通过使用此插件,您可以为Homestead Box内的文件和目录授予适当的用户/组权限。
另外,您还可以通过在选项键中列出来传递Vagrant的同步文件夹支持的选项。
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "rsync"
options:
rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
rsync__exclude: ["node_modules"]
请使用中文将以下内容进行释义,只需一种选项:
Can you help me find a hotel near the airport?
Nginx网站的配置
即使您对Nginx不太了解也没有问题。通过使用sites属性,您可以轻松地将“域名”与Homestead环境的文件夹进行映射。网站配置示例已包含在Homestead.yaml文件中。在这里,您可以根据需要向Homestead中添加任意数量的网站。Homestead为您所有的Laravel项目提供了方便和高可读性的环境。
sites:
- map: homestead.test
to: /home/vagrant/project1/public
如果在配置 Homestead Box 后更改了 sites 属性,为了更新虚拟机上的 Nginx 配置,您需要再次执行 vagrant reload –provision 命令。
Homestead的脚本被设计成尽可能避免出现问题。但如果在配置过程中遇到问题,可以使用vagrant destroy && vagrant up命令来销毁并重新构建机器。
请使用中文进行下列句子的表述,只需要一种选项:
启用/禁用服务
Homestead默认启动了一些服务。 但是,在配置时,您可以自定义启用哪些服务,禁用哪些服务。 在下面的例子中,我们启用了PostgresSQL,并禁用了MySQL。
services:
- enabled:
- "postgresql@12-main"
- disabled:
- "mysql"
根据启用和禁用指令,指定的服务将被启动或停止。
请你用中文将下面的句子进行释义,只需提供一种方案:
“Can you grab the red bag on the table for me?”
主机名解析
Homestead使用mDNS来自动解析主机名并公开它们。通过在Homestead.yaml中设置hostname: homestead,您可以使用homestead.local来访问主机。macOS、iOS和Linux桌面发行版默认支持mDNS,但在Windows操作系统上需要安装Bonjour Print Services for Windows。
安装在每个项目上的Homestead,可以自动解决主机名的便利之处。如果在一个Homestead实例上托管多个网站,需要将Web站点的“域名”添加到主机的hosts文件中。hosts文件会将Homestead网站的请求重定向到Homestead主机。在Mac和Linux上,该文件位于/etc/hosts中,在Windows上,它位于C:\Windows\System32\drivers\etc\hosts。在这个文件中,我们需要添加以下行。
192.168.10.10 homestead.test
需要将与Homestead.yaml文件中设置相同的IP地址写入hosts文件,并在启动Vagrant Box后通过Web浏览器访问该网站。
http://homestead.test
请以中文将以下内容进行释义:只需要一种选择。
请给出一种选择。
只需要一个选项。
启动 Vagrant Box

要销毁虚拟机,使用vagrant destroy –force命令。
请把以下内容用中文进行表述:只需提供一种选项:
“Can you please explain the process to me step by step?”
项目单位的安装

プロジェクトに直接Homesteadをインストールするには、Composerを使用する必要があります。
composer require laravel/homestead --dev
Homesteadをインストールしたら、makeコマンドでVagrantfileとHomestead.yamlファイルをプロジェクトルートに作成してください。makeコマンドは、Homestead.yamlファイル内のsitesとfoldersディレクティブを自動で設定します。
Mac / Linux :
php vendor/bin/homestead make
Windows :
vendor\\bin\\homestead make
次に、ターミナルでvagrant upコマンドを実行してから、ブラウザでhttp://homestead.testを開いてプロジェクトにアクセスしてください。覚えておいていただきたいのは、自動的なホスト名の解決を使用していない場合、homestead.testまたは任意のドメインを/etc/hostsファイルに追加する必要があります。
オプション機能のインストール

features:
- blackfire:
server_id: "server_id"
server_token: "server_value"
client_id: "client_id"
client_token: "client_value"
- cassandra: true
- chronograf: true
- couchdb: true
- crystal: true
- docker: true
- elasticsearch:
version: 7.9.0
- gearman: true
- golang: true
- grafana: true
- influxdb: true
- mariadb: true
- minio: true
- mongodb: true
- mysql8: true
- neo4j: true
- ohmyzsh: true
- openresty: true
- pm2: true
- python: true
- rabbitmq: true
- solr: true
- webdriver: true
MariaDB
MariaDBを有効化すると、MySQLは削除され、MariaDBがインストールされます。MariaDBはMySQLの完全な互換なので、アプリケーションデータベースの設定では、mysqlというデータベースドライバを引き続き使用できます。
MongoDB
デフォルトのMongoDBでは、データベースのユーザ名はhomestead、対応するパスワードはsecretに設定されています。
Elasticsearch
Elasticsearchのバージョンは、メジャーバージョンを指定するか、正確なバージョン番号(メジャー.マイナー.パッチ の形式)で指定できます。デフォルトのインストールでは、「homestead」という名前のクラスタを作成します。ElasticsearchにOSのメモリの半分以上を使わせるべきではないので、Homesteadマシンのメモリの過半数をElasticsearchアプリケーションに割り当てないでください。
設定をカスタマイズする方法については、Elasticsearchドキュメントを参照してください。
Neo4j
デフォルトでインストールしたNeo4jは、データベースのユーザ名にhomesteadが設定され、対応するパスワードはsecretになっています。Neo4jブラウザにアクセスするには、Webブラウザでhttp://homestead.test:7474を開いてください。Neo4jクライアントのために、7687 (Bolt)、7474 (HTTP)、7473 (HTTPS)のポートが用意されています。
エイリアス

alias c='clear'
alias ..='cd ..'
aliasesファイルをアップデートしたら、vagrant reload –provisionコマンドでHomesteadマシンを再度プロビジョニングする必要があります。これによって、新しいエイリアスがマシン上で利用できるようになります。
よくある使い方
Homesteadへのグローバルアクセス

Mac / Linux
function homestead() {
( cd ~/Homestead && vagrant $* )
}
関数内の~/Homesteadパスは、実際にHomesteadがインストールされている場所に合わせて書き換えてください。関数をインストールしたら、システムのどこからでもhomestead up やhomestead sshのようにコマンドを実行できます。
和訳者メモ
macOS「Catalina」では、デフォルトシェルがbashからzshに変更されているのでご注意ください。特にこだわりがなければ、bashをご利用の場合は~/.bash_profileに、zshをご利用の場合は~/.zprofileに上述のスクリプトを書き込んでください。
Windows
どこにでもいいのでhomestead.batというバッチファイルを作成し、以下の内容を書き込んでください。
@echo off
set cwd=%cd%
set homesteadVagrant=C:\Homestead
cd /d %homesteadVagrant% && vagrant %*
cd /d %cwd%
set cwd=
set homesteadVagrant=
スクリプト内で例としてあげたC:\Homesteadパスは、実際にHomesteadがインストールされている場所に合わせて書き換えてください。ファイルを作成した後、ファイルがある場所をPATHに追加してください。そうすれば、システムのどこからでもhomestead up やhomestead sshのようなコマンドが実行できるようになります。
SSHを用いた接続

ただし、HomesteadマシンへのSSHアクセスは頻繁に利用するので、前の項でご紹介した関数を追加した方が、Homestead Boxに素早くSSHでアクセスできておすすめです。
データベースへの接続

ホストマシンからデータベースに接続するときには、このように一般的ではないポートのみを使用してください。Laravelは仮想マシン内で動いているので、標準的な3306と5432ポートをLaravelのデータベース設定に使用します。
和訳者メモ
私の環境では、ホストマシンからHomesteadのMySQLに接続しようとすると、以下のようなエラーが発生しました。
$ mysql -h 127.0.0.1 -P 33060 -u homestead -psecret
ERROR 2007 (HY000): Protocol mismatch; server version = 11, client version = 10ホストマシンのMySQLデーモンが33060番ポートをバインドしていることが原因のようだったので、ホストマシン上のMySQLデーモンを停止させた状態でHomesteadを起動し、解決しました。
$ brew services stop mysql
$ homestead reload –provision
$ mysql -h 127.0.0.1 -P 33060 -u homestead -psecret
mysql>
データベースのバックアップ

backup: true
設定した後、vagrant destroyコマンドを実行すると、Homesteadは、データベースをmysql_backupとpostgres_backupディレクトリに出力します。これらのディレクトリは、クローンしたHomesteadディレクトリにありますが、プロジェクト単位のインストールを使用した場合は、プロジェクトのルートディレクトリにあります。
データベースのスナップショット

内部では、コピーオンライトをサポートしたLVMの薄いスナップショット機能をLMMが利用しています。つまり、テーブルの一つの行を書き換えるということは、書き込んだ変更がただディスクに移されるというだけなので、大幅に時間を短縮し、リストア中のディスク容量を節約できます。
lmmコマンドはLVMの操作に使用するので、rootで実行する必要があります。実行可能な全てのコマンドを確認するには、Vagrant Box内でsudo lmmコマンドを実行してください。一般的な流れは、以下のようになります。
-
- デフォルトのlmmのmasterブランチにデータベースをインポートする。
sudo lmm branch prod-YYYY-MM-DDコマンドを使用して、変更前のデータベースのスナップショットを保存する。
データベースを編集する。
sudo lmm merge prod-YYYY-MM-DDコマンドを実行して、全ての変更をなかったことにする。
sudo lmm delete コマンドを実行して、必要なくなったブランチを削除する。
サイトの追加
Homestead環境をプロビジョニングして実行したあとに、Laravelアプリケーションに新しいNginxサイトを追加したいことがあります。一つのHomestead環境で、何個でもLaravelは実行できます。サイトを追加するには、Homestead.yamlファイルにサイトを追加してください。
sites:
- map: homestead.test
to: /home/vagrant/project1/public
- map: another.test
to: /home/vagrant/project2/public
Vagrantがhostsファイルを自動管理していない場合は、hostsファイルにも新しいサイトを追加する必要があります。
192.168.10.10 homestead.test
192.168.10.10 another.test
サイトを追加できたら、Homesteadディレクトリでvagrant reload –provisionコマンドを実行してください。
サイトの種類
Homesteadでは、Laravelベースではないプロジェクトを簡単に実行できるようにするため、数種類のサイトがサポートされています。例えば、symfony2というサイトタイプを使用すると、SymfonyアプリケーションをHomesteadに簡単に追加できます。
sites:
- map: symfony2.test
to: /home/vagrant/my-symfony-project/web
type: "symfony2"
利用可能なサイトのタイプは次の通りです:apache, apigility, expressive, laravel (デフォルト), proxy, silverstripe, statamic, symfony2, symfony4, zf
サイトパラメータ
paramsというサイトディレクティブを使用して、Nginxのfastcgi_param値をサイトに追加できます。例えば、以下ではBARという値を持ったFOOパラメータを追加しています。
sites:
- map: homestead.test
to: /home/vagrant/project1/public
params:
- key: FOO
value: BAR
環境変数

variables:
- key: APP_ENV
value: local
- key: FOO
value: bar
Homestead.yamlを編集したら、必ずvagrant reload –provisionコマンドを実行して、再度マシンをプロビジョニングしてください。インストールしている全PHPバージョンのPHP-FPMの設定がアップデートされ、vagrantユーザの環境もアップデートされます。
ワイルドカードSSL
Homesteadでは、Homestead.yamlファイルのsites:セクションに定義したサイトそれぞれに、自己署名付きのSSL証明書が設定されます。サイトのワイルドカードSSL証明書を生成したい場合は、サイト設定にwildcardオプションを追加してください。サイトは、特定ドメインの証明書ではなく、ワイルドカード証明書を使用するようになります。
- map: foo.domain.test
to: /home/vagrant/domain
wildcard: "yes"
use_wildcardオプションがnoになっている場合、ワイルドカード証明書は生成されますが、使用されません。
- map: foo.domain.test
to: /home/vagrant/domain
wildcard: "yes"
use_wildcard: "no"
Cronスケジュールの設定

サイトに対してschedule:runコマンドを実行したい場合は、サイト設定のscheduleオプションにtrueを設定してください。
sites:
- map: homestead.test
to: /home/vagrant/project1/public
schedule: true
サイトのCronジョブは、仮想マシンの/etc/cron.dフォルダ内に定義されます。
Mailhogの設定

MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
Mailhogの設定が終わったら、http://localhost:8025を開いて、Mailhogダッシュボードにアクセスできます。
Minioの設定

minio: true
デフォルトでは、Minioは9600番ポートで利用できます。Minioのコントロールパネルにアクセスするには、http://localhost:9600/を開いてください。デフォルトのアクセスキーはhomesteadで、シークレットキーはsecretkeyです。Minioにアクセスする際には、常にus-east-1リージョンを使用してください。
Minioを使用するために、config/filesystems.phpという設定ファイルで、S3のディスク設定を調整する必要があります。ディスク設定にuse_path_style_endpointオプションを追加し、urlキーをendpontに変更してください。
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'endpoint' => env('AWS_URL'),
'use_path_style_endpoint' => true,
]
最後に、.envに以下のオプションが含まれていることを確認してください。
AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1
AWS_URL=http://localhost:9600
バケットをプロビジョニングするには、Homesteadの設定ファイルにbucketsディレクティブを追加してください。
buckets:
- name: your-bucket
policy: public
- name: your-private-bucket
policy: none
policyの値には、none, download, upload, publicが使用できます。
ポート

SSH: 2222 → 22 に転送
ngrok UI: 4040 → 4040 に転送
HTTP: 8000 → 80 に転送
HTTPS: 44300 → 443 に転送
MySQL: 33060 → 3306 に転送
PostgreSQL: 54320 → 5432 に転送
MongoDB: 27017 → 27017 に転送
Mailhog: 8025 → 8025 に転送
Minio: 9600 → 9600 に転送
ポートフォワーディングの追加
必要なら、特定のプロトコル以外にも、追加のポートフォワーディングをVagrant Boxに設定できます。
ports:
- send: 50000
to: 5000
- send: 7777
to: 777
protocol: udp
環境の共有

この問題を解決するために、Homestead自体にもshareコマンドが搭載されています。これを使用するには、vagrant sshコマンドでHomesteadマシンにSSH接続したあと、share homestead.testコマンドを実行します。すると、設定ファイルのHomestead.yamlからhomestead.testというサイトが共有されます。他に構築しているサイトがあれば、homestead.testの代わりに使用できます。
share homestead.test
コマンドを実行すると、Ngrokの画面が表示され、そこにはアクティビティログと、共有したサイトの公開URLが含まれています。任意のリージョンやサブドメインなど、Ngrokのランタイムオプションを指定したい場合は、shareコマンドにそれらを付け加えることで実現可能です。
share homestead.test -region=eu -subdomain=laravel
注意
忘れないで欲しいのは、Vagrantは本質的に安全ではなく、shareコマンドを実行すれば、仮想マシンがインターネット上に晒されてしまうということです。
複数のPHPバージョン

sites:
- map: homestead.test
to: /home/vagrant/project1/public
php: "7.1"
さらに、コマンドライン上では、サポートされているPHPバージョンを全て利用できます。
php5.6 artisan list
php7.0 artisan list
php7.1 artisan list
php7.2 artisan list
php7.3 artisan list
php7.4 artisan list
また、Homesteadの仮想マシン内で以下のコマンドを実行すると、デフォルトのCLIバージョンを変更できます。
php56
php70
php71
php72
php73
php74
Webサーバ

flip
メール

デバッグ&分析
Xdebugを用いたWebリクエストのデバッグ

Xdebugはデフォルトで既に起動していて、いつでも接続できます。コマンドラインでXdebugを有効化する必要がある場合は、Vagrant Box内でsudo phpenmod xdebugコマンドを実行してください。次は、IDEの指示に従って、デバッグを有効化してください。最後に、ブックマークレットや拡張を使用して、Xdebugを起動するようにブラウザを設定してください。
注意
Xdebugを使用すると、PHPの動作は著しく遅くなります。Xdebugを無効にするには、Vagrant Box内でsudo phpdismod xdebugコマンドを実行し、FPMサービスを再起動してください。
CLIアプリケーションのデバッグ

xphp path/to/script
Xdegugの自動起動
Webサーバのリクエストを作成する機能テストをデバッグする場合、デバッグするためにカスタムヘッダやCookieを使用するように変更するより、自動起動のデバッグを使用した方が簡単です。Xdebugを自動起動にする方法は、Vagrant Box内の/etc/php/7.x/fpm/conf.d/20-xdebug.iniを編集し、以下の設定を追記してください。
; ここに記述すべきIPアドレスは、Homestead.yamlに記載されているIPアドレスです。
xdebug.remote_host = 192.168.10.1
xdebug.remote_autostart = 1
Blackfireを用いたアプリケーションの分析

Blackfire Playerは、分析方法を記述するためにBlackfireと共に使用できる、オープンソースのWebクローラ / Webテスト / Webスクレイピングアプリケーションです。
Blackfireを有効化するには、Homesteadの設定ファイル内の「features」設定を使用します。
features:
- blackfire:
server_id: "server_id"
server_token: "server_value"
client_id: "client_id"
client_token: "client_value"
Blackfireサーバの資格情報とクライアントの資格情報には、ユーザアカウントが必要です。Blackfireには、アプリケーションを分析するために、コマンドラインツールとブラウザ拡張を含めた様々なオプションがあります。詳細は、Blackfireのドキュメントをご覧ください。
XHGuiを用いたPHPパフォーマンスの分析
XHGuiは、PHPアプリケーションのパフォーマンスを調査するためのユーザインターフェースです。XHGuiを有効化するには、サイト設定にxhgui: ‘true’を加えてください。
sites:
-
map: your-site.test
to: /home/vagrant/your-site/public
type: "apache"
xhgui: 'true'
サイトが既に存在している場合、設定を更新した後にvagrant provisionコマンドを実行してください。
Webリクエストを分析するには、リクエストのクエリパラメータにxhgui=onを追加してください。XHGuiは、レスポンスに自動でCookieを付与するので、次回のリクエストにクエリパラメータは必要ありません。また、アプリケーションの分析結果を閲覧するには、ブラウザでhttp://your-site.test/xhguiにアクセスしてください。
XHGuiを使用してCLIリクエストを分析するには、コマンドの前にXHGUI=onを付与してください。
XHGUI=on path/to/script
CLIの分析結果は、Webの分析結果と同じように閲覧できます。
分析を行うと、スクリプトの実行速度が遅くなり、実時間が実際のリクエストの約2倍になることに注意してください。したがって、実際の数字ではなく、常に改善率を比較するようにしてください。また、実行時間には、デバッガ内で一時停止される時間も含まれています。
分析を行うと、ディスクスペースの大部分を消費してしまうので、数日経つと自動的に消去されます。
ネットワークインターフェース

networks:
- type: "private_network"
ip: "192.168.10.20"
ブリッジインターフェースを有効化するには、bridge設定を追加し、ネットワークタイプをpublic_networkに変更してください。
networks:
- type: "public_network"
ip: "192.168.10.20"
bridge: "en1: Wi-Fi (AirPort)"
DHCPを有効化するには、設定からipオプションを削除してください。
networks:
- type: "public_network"
bridge: "en1: Wi-Fi (AirPort)"
Homesteadの拡張

Homesteadをカスタマイズするとき、Ubuntuは、パッケージの元の設定を維持するか、新しい設定ファイルで上書きするかを確認する場合があります。これを回避するには、パッケージをインストールする際に以下のコマンドを使用して、Homesteadで以前に書かれた設定を上書きしないようにします。
sudo apt-get -y \
-o Dpkg::Options::="--force-confdef" \
-o Dpkg::Options::="--force-confold" \
install your-package
ユーザカスタマイズ
チーム設定でHomesteadを使用する場合、個人の開発スタイルに合わせるために、Homesteadを微調整できます。Homesteadディレクトリ(Homestead.yamlがあるのと同じディレクトリ)のルートに、user-customizations.shというファイルを作成してください。このファイル内には、独自のカスタマイズを作成できます。ただし、user-customizations.shはバージョン管理しないでください。
Homesteadのアップデート

vagrant destroy
次に、Homesteadのソースコードをアップデートする必要があります。レポジトリをクローンしている場合、レポジトリをクローンした場所で以下のコマンドを実行してください。
git fetch
git pull origin release
これらのコマンドは、GitHubレポジトリからHomesteadの最新のコードを取得し、latestタグをフェッチしてから、latestタグのついたリリースにチェックアウトしています。最新の安定版のリリースバージョンは、GitHubリリースページで確認できます。
プロジェクトのcomposer.jsonファイルを介してHomesteadをインストールした場合、composer.jsonファイルに”laravel/homestead”: “^11″が含まれていることを確認した上で、依存関係をアップデートしてください。
composer update
それから、vagrant box updateコマンドを使用して、Vagrant Boxをアップデートします。
vagrant box update
次に、追加の設定ファイルをアップデートするために、Homesteadディレクトリでbash init.shコマンドを実行します。すると、既に存在するHomestead.yaml、after.sh、aliasesファイルを上書きするか尋ねられます。
// Mac / Linux...
bash init.sh
// Windows...
init.bat
最後に、Homestead Boxを再構築して、最新のVagrantをインストールしてください。
vagrant up
プロバイダ固有の設定
VirtualBox

provider: virtualbox
natdnshostresolver: 'off'
Windowsでのシンボリックリンク
Windowsマシンでシンボリックリンクがうまく動作しない場合は、以下のブロックをVagrantfileファイルに書き加える必要があります。
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
Valet
はじめに

Valetは、マシンを起動すると、常にNginxをバックグラウンドで起動するように設定します。そして、DnsMasqを使用すれば、Valetは*.testドメインへの全てのリクエストを、ローカルマシンにインストールしているサイトへプロキシします。
言い換えると、RAM(メモリ)を7MB程度しか使用しない爆速Laravel開発環境です。ValetはVagrantやHomesteadに完全に取って代わる存在にはなりませんが、柔軟性のある基本的な機能が欲しかったり、極端なスピードを求めていたり、RAMが限られているマシンで作業する場合には、素晴らしい代替手段になります。
Valetは最初から以下をサポートしていますが、これ以外が使用できないということではありません。
-
- Laravel
-
- Lumen
-
- Bedrock
-
- CakePHP 3
-
- Concrete5
-
- Contao
-
- Craft
-
- Drupal
-
- ExpressionEngine
-
- Jigsaw
-
- Joomla
-
- Katana
-
- Kirby
-
- Magento
-
- OctoberCMS
-
- Sculpin
-
- Slim
-
- Statamic
-
- Static HTML
-
- Symfony
-
- WordPress
- Zend
いずれにしろ、カスタムドライバを使用すればValetを拡張できます。
ValetかHomesteadか

ValetはMacしかサポートしておらず、PHPとデータベースサーバをローカルマシン上に直接インストールする必要があります。PHPとデータベースサーバは、Homebrewのbrew install phpとbrew install mysqlというコマンドを使用すれば、簡単に入手できます。Valetは、最小限のリソース消費で爆速のローカル開発環境を構築できるので、必要なものはPHP / MySQLだけであり、完全に仮想化された開発環境が必要でない人には最適です。
ValetもHomesteadも、Laravelの開発環境を構築するとても便利なものです。どちらを使うかは、個人的な好みと、チームが必要としているものによるでしょう。
インストール

Homebrewをインストールするか、brew updateコマンドを使用して最新バージョンにアップデートしてください。
Homebrewのbrew install phpコマンドでPHP 7.4をインストールしてください。
Composerをインストールしてください。
Composerのcomposer global require laravel/valetコマンドでValetをインストールしてください。~/.composer/vendor/binディレクトリがシステムの「PATH」に含まれている必要があります。
valet installコマンドを実行してください。ValetとDnsMasqの構築とインストールが行われ、システム起動時に実行されるValetデーモンが登録されます。
Valetのインストールが終わったら、ping foobar.testのようなコマンドをターミナルで実行して、*.testドメインにpingを試してみてください。Valetが正常にインストールされている場合、このドメインは127.0.0.1で応答するはずです。
Valetは、マシンが起動するたびに自動でデーモンを始動させます。一度Valetをインストールしてしまえば、valet startやvalet installのようなコマンドを実行する必要はありません。
データベース
データベースが必要な場合、コマンドラインでbrew install mysql@5.7を実行し、MySQLを試してみてください。MySQLをインストールしたら、brew services start mysql@5.7コマンドで起動できます。データベースには127.0.0.1で接続でき、ユーザ名はroot、パスワードは空文字を使用してください。
PHPのバージョン
Valetでは、valet use php@versionコマンドでPHPバージョンの変更が可能です。指定されたバージョンのPHPがインストールされていない場合、ValetはBrewを使用してインストールを行います。
valet use php@7.2
valet use php
注意
複数のバージョンのPHPがインストールされている場合でも、Valetでは一度に一つのバージョンしか使用できません。
リセット
Valetのインストールで問題が発生して正しく実行できない場合は、composer global updateコマンドの後でvalet installを実行すると、インストールしたものをリセットして、問題を解決できます。まれにValetの「ハードリセット」が必要な場合がありますが、その場合は、valet uninstall –forceコマンドの後でvalet installを実行してください。
アップデート

サイトの配信

Parkコマンド
mkdir ~/Sitesのようなコマンドを実行して、新しいディレクトリをMac上に作成します。次に、cd ~/Sitesとvalet parkを実行します。すると、Valetがサイトを探すパスとして、カレントディレクトリが登録されます。
laravel new blogコマンドで、このディレクトリに新しいLaravelサイトを作成します。
ブラウザでhttp://blog.testを開きます。

Linkコマンド

このコマンドを使用するには、プロジェクトを開き、ターミナルでvalet link app-nameを実行します。すると、カレントディレクトリを指すシンボリックリンクが~/.config/valet/Sitesに作成されます。
linkコマンドを実行したら、ブラウザでhttp://app-name.testを開いてサイトにアクセスできます。
リンクしたディレクトリの一覧は、valet linksコマンドで確認できます。valet unlink app-nameを使用すると、シンボリックリンクを破棄できます。
ヒント
valet linkを使用することで、一つのプロジェクトを複数の(サブ)ドメインで配信できます。プロジェクトにサブドメインや他のドメインを追加するには、プロジェクトフォルダでvalet link subdomain.app-nameを実行してください。
TLSを用いたサイトの暗号化

valet secure laravel
暗号化をやめて、HTTPでの配信に戻したい場合、unsecureコマンドを使用してください。secureコマンドと同じように、このコマンドにも暗号化をやめたいホスト名を指定します。
valet unsecure laravel
サイトの共有

Ngrokを用いたサイトの共有
サイトを共有するには、ターミナルでサイトのディレクトリまで移動し、valet shareコマンドを実行してください。公開URLがクリップボードにコピーされ、ブラウザに直接ペーストしたり、チームと共有することが可能です。
サイトの共有を停止するには、Control + Cでプロセスを中止してください。
valet share –region=euのように、shareコマンドには追加のパラメータを渡すこともできます。詳しくは、ngrokドキュメントを参照してください。
Exposeを用いたサイトの共有
Exposeをインストールしている場合、ターミナルでサイトのディレクトリに移動し、exposeコマンドを実行することで、サイトを共有できます。サポートされているコマンドラインのパラメータについては、Exposeのドキュメントを参照してください。サイトを共有すると、他のデバイスやチームメンバーと共有できるURLが表示されます。
サイトの共有を停止するには、Control + Cでプロセスを中止してください。
ローカルネットワーク上でのサイト共有
Valetは、デフォルトで、受け入れる通信を127.0.0.1の内部に限定しています。これによって、開発マシンがインターネットに晒されて、セキュリティリスクが生じることを防いでいます。
ローカルネットワーク内の他のデバイスから、マシンのIPアドレス(例:192.168.1.10/app-name.test)を使ってValetのサイトにアクセスさせたい場合は、Nginxの設定ファイルを編集し、80番と443番ポートのlistenディレクティブの先頭についている127.0.0.1:という部分を削除してください。
valet secureを実行していない場合、/usr/local/etc/nginx/valet/valet.confファイルを編集することで、全てのHTTPSではないサイトにネットワークアクセスを解放できます。ただし、HTTPSでプロジェクトのサイトを配信している場合(valet secureを実行している場合)は、~/.config/valet/Nginx/app-name.testファイルを編集してください。
Nginxの設定を更新したら、valet restartコマンドで、設定の変更を適用してください。
サイト固有の環境変数

<?php
// foo.test サイトの $_SERVER['key'] に "value" を設定する
return [
'foo' => [
'key' => 'value',
],
];
// 全てのサイトの $_SERVER['key'] に "value" を設定する
return [
'*' => [
'key' => 'value',
],
];
プロキシサービス

これを解決するには、proxyコマンドを使用して、プロキシを生成します。以下は、http://elasticsearch.testへの全てのトラフィックをhttp://127.0.0.1:9200にプロキシする例です。
valet proxy elasticsearch http://127.0.0.1:9200
unproxyコマンドを使えば、プロキシを削除できます。
valet unproxy elasticsearch
proxiesコマンドを使えば、プロキシされている全てのサイト構成を一覧表示できます。
valet proxies
カスタムValetドライバ

これら3つのメソッドは全て、引数として$sitePath、 $siteName、$uriという値をとります。$sitePathは、/Users/Lisa/Sites/my-projectのような、現在配信しているサイトのフルパスです。$siteNameは、ドメイン(my-project)の”ホスト” / “サイト名”の部分です。$uriは、リクエストのURI(/foo/bar)です。
カスタムのValetドライバが完成したら、~/.config/valet/DriversディレクトリにFrameworkValetDriver.php形式の名前で配置してください。例えば、WordPressのためのカスタムValetドライバを書いた場合、ファイル名はWordPressValetDriver.phpとします。
それぞれのメソッドのサンプル実装を見てみましょう。
servesメソッド
servesメソッドは、ドライバがリクエストを処理すべきならばtrueを返します。そうでない場合は、falseを返します。なので、このメソッドの内部では、渡された$sitePathに動作させようとしている種類のプロジェクトが含まれているかを判定します。
例として、WordPressValetDriverを書いているとしましょう。servesメソッドは以下のようになります。
/**
* ドライバをリクエストに適用するかを判定する
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return bool
*/
public function serves($sitePath, $siteName, $uri)
{
return is_dir($sitePath.'/wp-admin');
}
isStaticFileメソッド
isStaticFileは、リクエストが画像やスタイルシートのような静的なファイルに対してかを判断します。静的なファイルであった場合、静的ファイルのディスク上のフルパスを返します。静的ファイルでなかった場合、メソッドはfalseを返します。
/**
* リクエストが静的ファイルに対してのものかを判定する
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string|false
*/
public function isStaticFile($sitePath, $siteName, $uri)
{
if (file_exists($staticFilePath = $sitePath.'/public/'.$uri)) {
return $staticFilePath;
}
return false;
}
注意
isStaticFileメソッドが呼び出されるのは、servesメソッドがリクエストに対してtrueを返し、かつリクエストURIが/ではなかった場合のみです。
frontControllerPathメソッド
frontControllerPathメソッドは、アプリケーションのフロントコントローラのフルパスを返します。多くの場合、index.phpかそれに相当するものです。
/**
* アプリケーションのフロントコントローラのフルパスを取得する
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string
*/
public function frontControllerPath($sitePath, $siteName, $uri)
{
return $sitePath.'/public/index.php';
}
ローカルドライバ

class LocalValetDriver extends LaravelValetDriver
{
/**
* ドライバをリクエストに適用するかを判定する
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return bool
*/
public function serves($sitePath, $siteName, $uri)
{
return true;
}
/**
* アプリケーションのフロントコントローラのフルパスを取得する
*
* @param string $sitePath
* @param string $siteName
* @param string $uri
* @return string
*/
public function frontControllerPath($sitePath, $siteName, $uri)
{
return $sitePath.'/public_html/index.php';
}
}
その他のValetコマンド

valet forget
parkしたディレクトリで実行することで、parkしたディレクトリのリストから削除します。valet log
Valetのサービスによって書かれたログの一覧を表示します。valet paths
全てのparkしたパスを表示します。valet restart
Valetデーモンを再起動します。valet start
Valetデーモンを起動します。valet stop
Valetデーモンを停止します。valet trust
sudoersファイルにBrewとValetを追加して、パスワード入力なしでValetコマンドを実行できるようにします。valet uninstall
Valetをアンインストールします。手動アンインストールのための説明が表示されますが、--force
パラメータを使用することで、強制的にValetを全て削除することもできます。Valetディレクトリ&ファイル

~/.config/valet/
Valetの設定が全て入っています。このフォルダはバックアップしておくといいでしょう。~/.config/valet/dnsmasq.d/
DNSMasqの設定が全て入っています。~/.config/valet/Drivers/
カスタムのValetドライバが入っています。~/.config/valet/Extensions/
カスタムのValet拡張 / コマンドが入っています。~/.config/valet/Nginx/
Valetが生成した全てのNginxサイトの設定が入っています。install
、secure
、tld
コマンドを実行すると、これらのファイルは再生成されます。~/.config/valet/Sites/
リンクしたプロジェクトの全てのシンボリックリンクが入っています。~/.config/valet/config.json
Valetのマスタ設定ファイルです。~/.config/valet/valet.sock
ValetのNginx設定によって使用されるPHP-FPMソケットです。PHPが正常に動作している場合のみ存在します。~/.config/valet/Log/fpm-php.www.log
PHPエラーのユーザログです。~/.config/valet/Log/nginx-error.log
Nginxエラーのユーザログです。/usr/local/var/log/php-fpm.log
PHP-FPMエラーのシステムログです。/usr/local/var/log/nginx
Nginxのアクセスログとエラーログが入っています。/usr/local/etc/php/X.X/conf.d
さまざまなPHPの構築設定のための*.ini
ファイルが含まれています。/usr/local/etc/php/X.X/php-fpm.d/valet-fpm.conf
PHP-FPMのプール設定ファイルです。~/.composer/vendor/laravel/valet/cli/stubs/secure.valet.conf
サイト証明書の構築に使用されるデフォルトのNginx設定ファイルです。デプロイ
はじめに

サーバの設定
Nginx

server {
listen 80;
server_name example.com;
root /srv/example.com/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
最適化
オートローダの最適化

composer install --optimize-autoloader --no-dev
ヒント
オートローダの最適化に加えて、プロジェクトのソース管理リポジトリにcomposer.lockファイルを含めるようにしてください。composer.lockがある方が、プロジェクトの依存関係をより速くインストールできます。
設定の読み込みの最適化

php artisan config:cache
このコマンドは、全てのLaravelの設定ファイルを一つのキャッシュファイルにまとめることで、設定値を読み込む時にフレームワークが参照しなければいけないファイル数を大幅に減らします。
注意
デプロイの流れの中でconfig:cacheコマンドを実行する場合、設定ファイル内でのみenv関数が呼び出されるようにしてください。設定がキャッシュされると、.envファイルは読み込まれなくなり、env関数は全ての呼び出しに対してnullを返します。
ルートの読み込みの最適化

php artisan route:cache
このコマンドは、全てのルート登録をキャッシュファイル内の単一のメソッド呼び出しに集約させ、何百ものルートを登録した場合のパフォーマンスを向上させます。
ビューの読み込みの最適化

php artisan view:cache
このコマンドは、全てのBladeビューをプリコンパイルすることで、要求されたときにコンパイルされるのを防ぎ、ビューを返すリクエストのパフォーマンスを向上させます。
Forge / Vaporを使ったデプロイ

Laravel Forgeは、DigitalOceanやLinodeやAWSなど、さまざまなインフラプロバイダ上でサーバを作成できます。加えて、Forgeは、NginxやMySQL、Redis、Memcached、Beanstalkなど、強靭なLaravelアプリケーションを構築するのに必要な全てのツールのインストールと管理を行います。
Laravel Vapor
完全にサーバレスで、オートスケール開発プラットフォームにチューニングされたLaravelを使用したい場合、Laravel Vaporを参照してください。Laravel Vaporは、AWSを利用した、Laravelのサーバレス開発プラットフォームです。LaravelのインフラをVaporで立ち上げ、サーバレスでシンプルにスケールできます。Laravel Vaporは、Laravelの開発者によって、フレームワークとシームレスに動作するようにチューニングされているので、今までと同じようにLaravelアプリケーションを書くことができます。