hisayukiです。
久しぶりにconcrete5を触ってローカル環境を作ったので残しておきます。
経緯
今使ってるconcrete5で作られたアプリケーションを刷新することになったので、環境まるごと新しくすることにしました。
以前はCloud9で作ったので、環境残ってないんですよね・・・(;´∀`)
最初はこれみてDockerで全環境揃えようと思ったのですが・・・
開発時までDockerでやるとソースコード連携しんどいので、検証環境のみDockerにします。
というわけで開発環境は教えていただいたvaletを使うことにしました。
開発環境
パッケージインストール
まずはhomebrewをUpdateして、php7.3とcomposerをinstall
brew update
brew install php@7.3
brew install composer
$ php -v
PHP 7.3.4 (cli) (built: Apr 8 2019 10:21:33) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.4, Copyright (c) 1999-2018, by Zend Technologies
次にvaletをInstallします。
個人的にはあまりグローバル領域にあれこれインストールしたくないので、今回はプロジェクトディレクトリ内で使えるようにしました。
composer init
でcomposerを初期化し、composer.json
を作ります。
そのまま対話モードでSearch for a package
の質問で、laravel/valet
を指定します。
次のWould you like to define your dev dependencies (require-dev) interactively
の質問をno
で答えると、valetと依存関係のあるパッケージがインストールされます。
composer init
でcomposerを初期化し、composer.json
を作ります。
そのまま対話モードでSearch for a package
の質問で、laravel/valet
を指定します。
次のWould you like to define your dev dependencies (require-dev) interactively
の質問をno
で答えると、valetと依存関係のあるパッケージがインストールされます。
$ composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [hisayuki/reserve-system]:
Description []:
Author [*******, n to skip]: n
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []:
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
Search for a package: laravel/valet
Enter the version constraint to require (or leave blank to use the latest version):
Using version ^2.3 for laravel/valet
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]? no
{
"name": "hisayuki/reserve-system",
"require": {
"laravel/valet": "^2.3"
}
}
Do you confirm generation [yes]? yes
Would you like the vendor directory added to your .gitignore [yes]? yes
Would you like to install dependencies now [yes]? yes
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 19 installs, 0 updates, 0 removals
- Installing symfony/polyfill-php72 (v1.11.0): Downloading (100%)
- Installing symfony/polyfill-mbstring (v1.11.0): Downloading (100%)
- Installing symfony/var-dumper (v4.2.7): Downloading (100%)
- Installing tightenco/collect (v5.8.13): Downloading (100%)
- Installing nategood/httpful (0.2.20): Downloading (100%)
- Installing symfony/process (v4.2.7): Downloading (100%)
- Installing psr/container (1.0.0): Downloading (100%)
- Installing php-di/invoker (2.0.0): Downloading (100%)
- Installing symfony/contracts (v1.0.2): Downloading (100%)
- Installing symfony/console (v4.2.7): Downloading (100%)
- Installing mnapoli/silly (1.7.1): Downloading (100%)
- Installing symfony/translation (v4.2.7): Downloading (100%)
- Installing nesbot/carbon (2.17.0): Downloading (100%)
- Installing psr/simple-cache (1.0.1): Downloading (100%)
- Installing illuminate/contracts (v5.8.12): Downloading (100%)
- Installing doctrine/inflector (v1.3.0): Downloading (100%)
- Installing illuminate/support (v5.8.12): Downloading (100%)
- Installing illuminate/container (v5.8.12): Downloading (100%)
- Installing laravel/valet (v2.3.0): Downloading (100%)
symfony/contracts suggests installing psr/cache (When using the Cache contracts)
symfony/contracts suggests installing symfony/cache-contracts-implementation
symfony/contracts suggests installing symfony/service-contracts-implementation
symfony/console suggests installing symfony/event-dispatcher
symfony/console suggests installing symfony/lock
symfony/console suggests installing psr/log (For using the console logger)
symfony/translation suggests installing symfony/config
symfony/translation suggests installing symfony/yaml
illuminate/support suggests installing illuminate/filesystem (Required to use the composer class (5.8.*).)
illuminate/support suggests installing moontoast/math (Required to use ordered UUIDs (^1.1).)
illuminate/support suggests installing ramsey/uuid (Required to use Str::uuid() (^3.7).)
illuminate/support suggests installing vlucas/phpdotenv (Required to use the env helper (^3.3).)
Writing lock file
Generating autoload files
valetインストール
個人的にはあまりグローバル領域にあれこれインストールしたくないので、今回はcomposer script
で呼び出します。
というわけでcomposer.json
にScriptを追加します。
{
"name": "hisayuki/reserve-system",
"require": {
"laravel/valet": "^2.3"
},
"scripts": {
"valet": "valet install",
"start": "valet start",
"restart": "valet restart",
"stop": "valet stop",
"park": "valet park",
"paths": "valet paths",
"forget": "valet forget",
"uninstall": "valet uninstall"
}
}
追加したらcomposer valet
でインストール。
$ composer valet
> valet install
Password:
Stopping nginx...
Installing nginx...
[nginx] is not installed, installing it now via Brew... 🍻
Installing nginx configuration...
Installing nginx directory...
Updating PHP configuration...
Restarting php...
Installing dnsmasq...
[dnsmasq] is not installed, installing it now via Brew... 🍻
Restarting dnsmasq...
Valet is configured to serve for TLD [.test]
Restarting nginx...
Valet installed successfully!
実行後にパスワードを聞かれますが、こちらはPCのユーザーログインパスワード
で通りました。
これで開発環境の準備は終わりです!
ローカル環境立ち上げ
今回は新規環境用なので、既存環境のやり方は割愛します。
既存環境の場合はこちらを参考にしてくださいw
まずは、実際にwebサーバに配置するファイルのあるディレクトリの2つ上の階層に行きます。
階層はこんな感じにしてます。
$ tree -L 2
.
├── README.md
├── composer.json
├── composer.lock
└── concrete5
└── public
├── LICENSE.TXT
├── application
├── composer.json
├── composer.lock
├── concrete
├── index.php
├── packages
├── robots.txt
└── updates
concrete5の下のpublicを挟んでるのはあとで書きます。
そこで以下のコマンド
$ composer start
> valet start
Password:
Restarting php...
Restarting nginx...
Valet services have been started.
$ composer park
> valet park
Password:
This directory has been added to Valet's paths.
start
で起動して、park
で今いる階層にあるディレクトリすべてをディレクトリ名.test
でアクセス出来るようにエイリアスが貼られます。
なので例にした階層だと、http://concrete5.test
でアクセス出来るようになります。
まとめ
このやり方を教えていただいた上野さんには感謝です、めっちゃ楽でした・・・w
laravel/valetは気にならない方はグローバル領域にインストールすることをおすすめしますw
毎回パスワード聞かれるのは結構鬱陶しいです(;´∀`)
Dockerは出来なくはないんですが、どうもDocker for Macだと余計なものまで読み込んでしまいすっごい遅くなるっぽい・・・
publicディレクトリを挟んでいるのは、valetのソース内にあるdriverが初期設定だとinidexの読み込み先が/public/index.php
になってるからです。
ただ、driverは変えられるみたいなので変更しちゃえばわざわざpublicを挟む必要はなさそうです。
そしてconcrete5も新しい機能いくつか付いていて、今ほぼcode書かずに出来てますw
もしかしたらやりたいこと次第で、codeなしで行けるかも・・・
またそのあたりあも記事にできたらと思います!
コメント