概要
以前のブログでアンシブル(Ansible)を使ってLaradockをインストールしました。今回はララベル(Laravel)を開発するためララベル(Laravel)をインストールしてララベル(Laravel)プロジェクトを生成してみます。
このブログは下記のブログのシリーズです。理解のため下記のブログを先見ることをお勧めします。
phpとcomposer設定
自分のローカルマシン(host system)にphpとcomposerがインストールされたらこの段階はスキップしてもいいです。ララベル(Laravel)プロジェクトを生成するためphpとcomposerを仮想マシン(guest system)にインストールする予定です。
今まで作ったフォルダにphpとcomposerをインストールするアンシブルプレイブック(Ansible Playbook)のrole
を追加します。
|-- ansible
| |-- init
| | |-- tasks
| | | |-- main.yml
| |-- docker
| | |-- tasks
| | | |-- main.yml
| |-- laradock
| | |-- tasks
| | | |-- main.yml
| |-- php
| | |-- tasks
| | | |-- main.yml
| |-- playbook.yml
|-- Vagrantfile
アンシブルプレイブック(Ansible Playbook)ファイルにも新しく追加したphpのrole
を追加します。
---
- hosts: localhost
connection: local
roles:
- init
- docker
- laradock
- php
追加したアンシブルプレイブック(Ansible Playbook)のrole
ファイルであるphp/tasks/main.yml
ファイルを下記のように修正します。
---
- name: Add php7.2 repo
apt_repository:
repo: 'ppa:ondrej/php'
tags: php
- name: Install php
become: true
apt:
pkg:
- php7.2
- php7.2-mbstring
- php7.2-xml
state: present
update_cache: yes
tags: php
- name: check composer
stat: path=/usr/local/bin/composer
register: composer_bin
tags: php
- block:
- name: download composer
get_url:
url: https://getcomposer.org/installer
dest: /tmp/installer
- name: install composer
shell: cat /tmp/installer | php -- --install-dir=/usr/local/bin
- name: rename composer.phar to composer
shell: mv /usr/local/bin/composer.phar /usr/local/bin/composer
- name: make composer executable
file:
path: /usr/local/bin/composer
mode: a+x
state: file
when: not composer_bin.stat.exists
tags: php
- name: stop apache2
become: true
shell: update-rc.d apache2 disable
tags: php
追加したrole
のtask
を一つずつみてみます。
- name: Add php7.2 repo
apt_repository:
repo: 'ppa:ondrej/php'
tags: php
php 7.2をインストールするためapt
へphp7.2のリポジトリ(repository)を追加します。
- name: Install php
become: true
apt:
pkg:
- php7.2
- php7.2-mbstring
- php7.2-xml
state: present
update_cache: yes
tags: php
php7.2とララベル(Laravel)インストールや実行に必要なphpモジュールをインストールします。
- name: check composer
stat: path=/usr/local/bin/composer
register: composer_bin
tags: php
composerのインストールする前composerの実行ファイルが存在するかチェックしてその結果をcomposer_bin
に保存します。
- block:
...
when: not composer_bin.stat.exists
tags: php
色んなtask
をブロック(block)で囲みます。また、このブロックは私たちが上記で保存したcomposer_bin
が存在しない場合のみで実行します。
ブロック(block)中を一つずつみてみます。
- name: download composer
get_url:
url: https://getcomposer.org/installer
dest: /tmp/installer
composerインストールスクリプトを/tmp/instller
ファイルにダウンロードします。
- name: install composer
shell: cat /tmp/installer | php -- --install-dir=/usr/local/bin
composerインストールスクリプトを使って/usr/local/bin
にcomposerをインストールします。
- name: rename composer.phar to composer
shell: mv /usr/local/bin/composer.phar /usr/local/bin/composer
インストールされたcomposerファイルを(composer.phar
)の名前をcomposer
に変更します。
- name: make composer executable
file:
path: /usr/local/bin/composer
mode: a+x
state: file
composerが実行ができるように権限を変更します。
- name: stop apache2
become: true
shell: update-rc.d apache2 disable
tags: php
phpをインストールした後、仮想マシン(guest system)を再起動するとapache2
サーバが起動されて同じポート(port)を使ってるドッカー(Docker)が起動されない問題があります。apache2
サーバが仮想マシン(guest syste)が再起動する時再起動されないように設定します。
phpとcomposerインストール
上記で作ったアンシブルプレイブック(Ansible Playbook)のrole
を実行してphpとcomposerをインストールします。私たちはこのrole
だけ実行できるようにタグ(tag)を指定したのでタグ(tag)オプションを追加したアンシブルプレイブック(Ansible Playbook)コマンドを下記のように実行します。
#vagrant ssh
sudo ansible-playbook /vagrant/ansible/playbook.yml --tags 'php'
下にあるコマンドでインストールがうまくできたか確認します。
#vagrant ssh
php --version
composer --version
ララベルプロジェクト生成
下記のコマンドでララベル(Laravel)プロジェクトを生成します。既存のララベル(Laravel)プロジェクトを持ってる方はこの部分はスキップしてもいいです。
#vagrant ssh
cd /vagrant
composer create-project laravel/laravel app
ララベルプロジェクト設定
私たちは以前のブログ(アンシブル&Laradock)でLaradockのインストールrole
を下記のように作成しました。
...
- name: change project folder
replace:
path: /vagrant/lib/laradock/.env
regexp: 'APP_CODE_PATH_HOST=*.*'
replace: 'APP_CODE_PATH_HOST=/vagrant/app'
tags:
- replace
...
この部分でLaradockのworkspaceドッカー(Docker)が実行される時/vagrant/appp
フォルダと同期化するように設定しました。したがって、私たちは新しプロジェクトを/vagrant
フォルダに/app
のフォルダ名で生成しました。皆さんが既存のララベル(Laravel)プロジェクトを持ってるだったら/vagrant/appp
フォルダにコピーするか以前のブログで作ったLaradockのrole
中で上記の部分を皆さんのララベル(Laravel)プロジェクトフォルダで指定して使ってください。
ララベルプロジェクト確認
また、localhostに接続したら下記のようにララベル(Laravel)の基本画面が見えます。
ララベル(Laravel)設定がよく出来てない時は下記のように500エラー画面が出ます。
ララベル(Laravel)設定中で下記の部分を全て実行したか確認します。composer create-project laravel/laravel app
コマンドでララベル(Laravel)プロジェクトを新しく生成し場合、下記の設定は自動で実行されます。
ララベル(Laravel)プロジェクトに必要なライブラリはインストルしたか?
composer install
ララベル(Laravel)の環境ファイルは生成したか?
cp .env.example .env
ララベル(Laravel)のキーは生成したか?
php artisan key:generate
phpmyadmin
データベースを触るためインストールしたphpmyadmin
に接続してみます。localhost:8080
で接続したらphpmyadmin
の画面が見えます。
何も設定してなかったら下の情報を入力して接続します。
server: mysql
username: root
password: root
このように接続した後下記のような画面が見えます。
画面の真ん中にあるChange password
を押してパスワードを変更します。
上部にあるメニュー中でDatabase
を押してララベル(Laravel)と連結するデータベースを生成します。
ララベルDB設定
上記でphpmyadmin
を使って作ったデータベース(Database)をララベル(Laravel)プロジェクトに連結する必要があります。ララベル(Laravel)プロジェクトの環境ファイルである.env
を開いたら下のように内容を確認することができます。
...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
...
この部分を下記のように修正します。DB_DATABASE
とDB_PASSWORD
の部分は皆さんが設定した内容を入力します。
...
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=app
DB_USERNAME=root
DB_PASSWORD=*******
...
このように修正したら下記のララベル(Laravel)コマンドでララベル(Laravel)が基本的提供してるユーザーテーブル(User Table)を生成してみます。
# vagrant ssh
# sudo docker exec -it laradock_workspace_1 bash
php artisan migrate
ララベル(Laravel)が基本的提供してるユーザーテーブル(User Table)を使わない予定ならララベル(Laravel)コマンドを使って生成したテーブルを削除します。
php artisan migrate:rollback
完了
vagrant、アンシブル(Ansible)、Laradockを使ってララベル(Laravel)開発環境を構築してみました。また、この開発環境構築を通じてアンシブル(Ansible)とドッカー(Docker)を少しみてみました。アンシブル(Ansible)とドッカー(Docker)を上手く使えばよく聞こえるDevops
ができる開発者になれるんじゃないかなと思います。
今後はこの開発環境カテゴリには開発構築、ドッカー(Docker)、アンシブル(Ansible)と関係ある内容を追加する予定です。また、ララベル(Laravel)開発と関係あるブログはララベルカテゴリに作成する予定なのでご参考してください。
今まで作ったララベル(Laravel)開発環境を下記のレポジトリ(Repository)で確認できます。
参考
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。