アンシブル&ララベル

2019-05-23

アンシブル(Ansible)とLaradockで作った開発環境にララベル(Laravel)をインストールして開発環境を構成してみます。

概要

以前のブログでアンシブル(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

追加したroletaskを一つずつみてみます。

- 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 first page

ララベル(Laravel)設定がよく出来てない時は下記のように500エラー画面が出ます。

laravel 500 error page

ララベル(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の画面が見えます。

phpmyadmin login

何も設定してなかったら下の情報を入力して接続します。

server: mysql
username: root
password: root

このように接続した後下記のような画面が見えます。

phpmyadmin change password

画面の真ん中にあるChange passwordを押してパスワードを変更します。

phpmyadmin new password

上部にあるメニュー中でDatabaseを押してララベル(Laravel)と連結するデータベースを生成します。

phpmyadmin new database

ララベル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_DATABASEDB_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)で確認できます。

参考

Buy me a coffeeBuy me a coffee
Posts