LoginSignup
3
2

More than 3 years have passed since last update.

Vagrant+VirtualBoxで作った仮想環境(CentOS)にLaravel環境構築

Posted at

はじめに

以前参画していたプロジェクトにて、コンテナ内のLaravelログをCloudWatch Logsに出力したいという要望があった。
参画しておきながら、あまり開発環境構成などの理解が浅く、この機会にLinux環境にLaravel環境を構築する手順を身につける。

目次

  • Vagrant、VirtualBoxのインストール
  • 仮想環境(CentOS)の構築
  • PHPのインストール
  • composerのインストール
  • Laravelのインストール

Vagrant、VirtualBoxのインストール

仮想環境(CentOS)の構築

コマンドプロンプトを起動し、適当なフォルダへ移動します。

> d:
> cd d:\work

CentOSのイメージをダウンロードします。(これ、結構かかります)

> vagrant box add centos/7

CentOS起動用のVagrantfileの雛形を作成します。

> vagrant init centos/7

作成したVagrantfileの雛形をカスタマイズします。
D:\work フォルダに Vagrantfileファイルが出来ているので、テキストエディタで開いて、以下の編集を行います。
以下の行のコメントアウトを解除するだけです。

Vagrantfile
35|  config.vm.network "private_network", ip: "192.168.33.10"
  • 35行目の編集は、後ほどCentOS上で起動されたLaravelのビルドインWebサーバーへ接続する為に必要になります。

さあ、Vagrantを起動しましょう。

> vagrant up

カレントフォルダのvagrantfileを参照して、そこに記載してある仮想環境を構築、起動します。

仮想環境(CentOS)が起動しているので、仮想環境にSSHで接続しましょう。

> vagrant ssh

PHPのインストール

最新のLaravel 5.8 では、PHP 7.1.3 以上が必要なので、ここでは PHP 7.2をインストールすることにします。
通常なら、yum install でphpを指定すればよいのですが、既定のリポジトリには PHP7.2系が配布されていない為、リポジトリを追加する必要があります。

今回はPHP7.2を配布しているRemiリポジトリを追加しますが、Remiリポジトリを追加する為に、EPELリポジトリを追加する必要があります。
このあたりの手順は、RemiさんのWebサイトの設定ウィザードで対象OSなどを選択して、確認するのが一番かと思います。

以下で行う yum install コマンドには全て -y オプションをつけていますが、これは途中の確認を全てYESで答えるオプションです。

では、EPELリポジトリの追加から行っていきます。

$ sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Remiリポジトリを追加します。

$ sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

yum-config-managerコマンド用にyum-utilsをインストールします。

$ sudo yum -y install yum-utils

remiリポジトリの有効化を行います。

$ sudo yum-config-manager --enable remi-php72

PHP 7.2 と関連パッケージをインストールします。

$ sudo yum -y install php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-zip php-unzip

インストールを確認します。

$ rpm -qa | grep php
$ php -v
PHP 7.2.21 (cli) (built: Jul 30 2019 14:46:08) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

無事 PHP 7.2.21 がインストールできました。

余談(Software Collections(SCL)リポジトリ)

こちらの記事によると、PHP 7.xを配布する公式のリポジトリ Software Collections(SCL) もあるそうですが、これで配布されたPHPを利用するには、ログイン毎、ソフトウェア毎に'scl enable'コマンドでSCLを有効化する必要があり、後々面倒になりそうなので、今回の手順ではRemiリポジトリからインストールしました。

PHPの設定

PHPの設定ファイル、/etc/php.ini をviで編集します。

$ sudo vi /etc/php.ini

編集箇所は以下の通りです。

php.ini
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none 

composerをインストール

composerは、PHPのライブラリ管理ツールです。
今回はLaravelのインストールに使いますが、このLaravelのインストール時に必要なPHPライブラリを自動でインストールしてくれます。

参考:PHP開発でComposerを使わないなんてありえない!基礎編

PHPのインストールほど面倒ではないです。

# curl -sS https://getcomposer.org/installer | php

curlでダウンロードしてきたインストーラをPHPで実行しています。

ダウンロードとインストールが完了すると、カレントディレクトリにcomposer.pharというファイルができます。
これが実行ファイルなので、パスの通ったディレクトリに移動します。

$ mv composer.phar /usr/local/bin/composer

これで、composerコマンドが使えます。
早速バージョン確認してみましょう。

$ composer -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.9.0 2019-08-02 20:55:32

インストール完了です。

Laravelのインストール

composerを使ってインストールします。

$ composer global require "laravel/installer"

今回は /var/www 配下にプロジェクトを作成していこうと思います。
Laravelの新規プロジェクトを作成する際のコマンドcomposerは、一般ユーザー権限で実行されますが、/var/wwwディレクトリの書き込み権限が無いので、このディレクトリの所有者変更と書き込み権限付与を行います。

$ ls -al /var/www
total 0
drwxr-xr-x.  4 root root  33 Aug 28 09:31 .
drwxr-xr-x. 19 root root 265 Aug 28 09:31 ..
drwxr-xr-x.  2 root root   6 Jul 29 17:19 cgi-bin
drwxr-xr-x.  2 root root   6 Jul 29 17:19 html
$ cd /var/www
$ sudo chown -Rv root:$USER .
changed ownership of ‘./cgi-bin’ from root:root to root:vagrant
changed ownership of ‘./html’ from root:root to root:vagrant
changed ownership of ‘.’ from root:root to root:vagrant
$ sudo chmod -Rv g+rw .
mode of ‘.’ changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)
mode of ‘./cgi-bin’ changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)
mode of ‘./html’ changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)

では、新しいLaravelプロジェクトを作成します。

$ composer create-project --prefer-dist laravel/laravel blog "5.6.*"

※プロジェクトが作成されると、最後にキーが同時に作成されるので、残しておきましょう。

動作確認します。

$ cd blog
$ php artisan --version
Laravel Framework 5.6.39

Laravelのバージョンが表示されればプロジェクトの作成は無事完了です。

あとは、PHPのビルドインWebサーバーを使用して動作確認するだけですが、CentOSにはSELinuxが導入されており、これが動作確認の邪魔になります。
一時的にアクセス制御を無効化して、動作確認をします。(恒久的に無効化する方法もありますが、ここでは割愛します)

$ sudo setenforce 0
$ php -S 0.0.0.0:8000 -t public
PHP 7.2.21 Development Server started at Wed Aug 28 11:04:35 2019
Listening on http://0.0.0.0:8000
Document root is /var/www/blog/public
Press Ctrl-C to quit.

この状態で、ホストOSのブラウザで、http://192.168.33.10:8000 にアクセスしてください。
laravel_success.png

おわりに

次は、Laravelの環境をBuildしてコンテナ化する手順を身につけたい

参考

https://qiita.com/inexp_eng4432/items/ec818f151b8ad516988b
https://qiita.com/ozawan/items/caf6e7ddec7c6b31f01e
https://qiita.com/takeshi_nozawa/items/ee01981b4fc338209437
https://rpms.remirepo.net/wizard/
https://eng-entrance.com/linux-selinux

3
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2