concrete5のローカル環境を立ち上げる

技術ネタ

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.jsonScriptを追加します。

{
    "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なしで行けるかも・・・
またそのあたりあも記事にできたらと思います!

参考サイト

公式

Laravel Valet - Laravel - The PHP Framework For Web Artisans

公式翻訳サイト

Laravel Valet 5.3 Laravel

Qiita

Mac のミニマムな Web サーバー Valet 超簡単メモ - Qiita
- ( - 要 ( # 通常のコマンド インストール方法は後に記載。...

コメント