PHPのWebアプリケーションフレームワークLaravelの環境構築

目次

1.開発環境の構成
  Laravelの開発環境の構成をイメージ図に示します。
開発環境のイメージ図

2.環境構築手順
Laravelの開発環境の構成を以下の順で説明します。
(1)VirtualBoxのインストール
(2)仮想マシンの作成とUbuntu(Ubuntuディスクトップ環境)をインストール
(3)Dockerインストール
(4)Docker-Composeのインストール
(5)SSHサービスのインストール
 ローカルと仮想マシン間でFTP通信ができるようにするため
(6)WinScp(FTPソフト)のインストール
(7)Dockerコンテナの作成とLaravelプロジェクトの作成
(8)ホストOS(windows)のブラウザからゲストOS(Ubuntu)にアクセスするポートを追加
(9)Putty(SSH対応リモートターミナルクライアント)ソフトのインストール
(10)WinScp(FTPソフト)をUbuntuに接続して、root権限で操作するための設定追加

3.VirtualBoxのインストール
https://www.virtualbox.org/wiki/Downloads

4.仮想マシンの作成とUbuntu(Ubuntuディスクトップ環境)をインストール
4.1 64-bitPC(AMD64)desktop imageをダウンロードします。
http://www.releases.ubuntu.com/16.04/

上記サイトからダウンロードしたファイル

4.2 仮想マシンの作成
①VirtualBoxを起動します。

②「新規」を選択し、名前の入力とタイプ、バージョンの選択

③メモリサイズの設定

④ハードディスクの選択

ここで仮想マシンが作成されます。

4.3 起動ハードディスクの設定
 今回作成した仮想マシンを選択して、「起動」します。

フォルダの釦を押します。

「追加」釦押すとディレクトリが表示されるので、ダウンロードしたUbuntuのイメージファイルを選択し、「開く」釦を押すと、光学ディスク選択の選択肢にUbuntuが表示されるので、Ubuntuを選択して、「選択」釦を押します。
「起動ハードディスクを選択」の画面に移ります。

4.4 Ubuntuを選択して、起動します。

「日本語」を選択して、「Ubuntuをインストール」を押します。

名前、ユーザ名、パスワードを登録します。

しばらく待つ(本稿では約1時間)

remove・・・がでたらリターン

マウス右ボタンでメニューが出て、「端末を開く」を選択するとコマンド入力画面が開きます。

4.5 Ubuntuのバージョン確認
$ cd /etc
$ cat os-release

5.Dockerインストール
$ sudo apt-get update

$ sudo apt-get install docker.io

$ docker –version

6.Docker-Composeのインストール

(途中、省略)

Yを入力

Docker-composeのバージョン確認

sudoなしでもdockerを使えるようにするため、dockerグループを作ります。
$ sudo groupadd docker
ユーザをdockerグループに追加します。
$ sudo gpasswd -a $USER docker

7.SSHサービスのインストール
 ローカルと仮想マシン間でFTPでファイル転送ができるようにするため、SSHサービスを使えるようにします。

7.1 仮想マシンの設定
①仮想マシンを選択して、「設定」釦押下します。

②ネットワーク>高度>ポートフォワーディングを選択

③「+」(追加)釦を押します。

④名前、プロトコル、ホストポート、ゲストポートを設定します。

ここではホストポート番号”2222”とした仮想マシンのUbntuにはローカルループバックアドレス127.0.0.1、ポート番号:2222で接続できます。

7.2 Ubuntuにopensshをインストールする
$ sudo apt-get install openssh-server

(途中、省略)

8.WinScp(FTPソフト)のインストール
https://forest.watch.impress.co.jp/library/software/winscp/

WinScpを起動します。

仮想マシンは起動されているものとします。

9.Dockerコンテナの作成とLaravelプロジェクトの作成
① /home/(ユーザ)配下にアプリケーションをおくフォルダを作成します。ここでは、”kadai”としました。
②”kadai”配下 にdockerフォルダとdocker-compose.ymlファイルを置きます。

\kadai\docker\web\default.conf

\kadai\docker\phpdocker\Dockerfile

\kadai\docker-compose.yml

③kadaiのディレクトリに移動して、下記のビルドコマンドを入力します。
$ sudo docker-compose up -d –build

④web、app(php)、dbの3つのコンテナが起動されていることを確認します。
$ sudo docker ps

⑤app(php)のコンテナに入り、Laravelプロジェクトを作成する
下記のコマンドでappコンテナに入ります。
$ sudo docker-compose exec app bash

# composer create-project –prefer-dist laravel/laravel sample-app
※ここでLaravelプロジェクトのフォルダ名(sample-app)は任意、但し、webの”default.conf”のファイルの「root  /var/www/html/sample-app/public;」の名前と一致させる必要があります。

Laravelプロジェクトの作成に成功したときは、⑥へ進む

Laravelプロジェクト作成に失敗したとき
Laravelプロジェクト作成中に下記のスワップメモリ不足のエラーが出て、Laravelプロジェクトの作成に失敗した場合は、スワップメモリ領域を拡張する必要があります。

# exit
でコンテナから抜ける
SWAP領域用のファイルを作成
$ sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
SWAP領域作成
$ sudo /sbin/mkswap /var/swap.1
SWAP領域を有効化
$ sudo /sbin/swapon /var/swap.1

コンテナを再起動します。

$ sudo docker-compose up -d
再度、appのコンテナに入り、Laraveプロジェクトを作成します。
※途中まで作成されたフォルダが残っていると失敗するため、フォルダ(sample-app)毎削除します。

appコンテナに入ります。
$ sudo docker-compose exec app bash
Laravelプロジェクトの作成
# composer create-project –prefer-dist laravel/laravel sample-app

(途中、省略)

⑥”storage”フォルダのアクセス権限を変更する
下記のフォルダの権限を変える(chmod 777)
/var/www/html/sample-app/storage/logs
/var/www/html/sample-app/storage/framework
/var/www/html/sample-app/storage/framework/sessions
/var/www/html/sample-app/storage/framework/views

⑦ブラウザでローカルホスト(127.0.0.1)にアクセスする
 Laravelの画面が出れば、Webサーバとアプリケーションサーバ(php)は動作しています

フォルダ構成

10.ホストOS(windows)のブラウザからゲストOS(Ubuntu)にアクセスするポートを追加

TCP ホストポート:8080 ゲストポート:8000を追加

Windowsのブラウザから、127.0.0.1:8080で、VirtualBoxのゲストOSのWebサーバにアクセスできます。

11.Putty(SSH対応リモートターミナルクライアント)ソフトのインストール
Puttyを起動し、接続先を設定
IP:127.0.0.1 ポート:2222

文字コード、文字サイズの設定

UTF-8を選択

文字サイズの変更

12.WinScp(FTPソフト)をUbuntuに接続して、root権限で操作するための設定追加
 Ubuntu側のファイルの権限が”root”になっているときでも、WinScpを使って、Windows側とUbuntu間でファイルのコピーができる設定を追加します。

12.1 Ubuntu側の設定
Ubuntuの端末、又はputtyなどのターミナルから
$ cd /
$ sudo visudo
パスワード:

/etc/sudoers.tmpファイルが開く、下記を最後の行に追加します。
[ユーザ名] ALL=NOPASSWD:/usr/lib/openssh/sftp-server
※このユーザ名はUbuntuをインストールしたときに設定したユーザ名

Ctrl+Cで書込みされ、Ctrl+Xで終了し、コマンドプロンプトに戻ります。

12.2 WinScp側の設定
WinScpを起動し、「編集」選択

「設定」選択

SFTPサーバのところに下記を入力して、「OK」押します。
sudo /usr/lib/openssh/sftp-server

「保存」を押して、「ログイン」します。

.envなど書込みがroot権限のみになっているファイルの変更ができれば、設定はOKです。

※接続できない場合は、Ubuntuの”sftp-server”のある場所を確認する
$cd /usr/lib
$ls -al
7.2項の「Ubuntuにopensshをインストール」で自動的に下記のようにシンボリックリンクが設定されています。

The end