はじめに
以前参画していたプロジェクトにて、コンテナ内のLaravelログをCloudWatch Logsに出力したいという要望があった。
参画しておきながら、あまり開発環境構成などの理解が浅く、この機会にLinux環境にLaravel環境を構築する手順を身につける。
目次
- Vagrant、VirtualBoxのインストール
- 仮想環境(CentOS)の構築
- PHPのインストール
- composerのインストール
- Laravelのインストール
Vagrant、VirtualBoxのインストール
-
VirtualBox
\https://www.virtualbox.org/wiki/Downloads
仮想環境(CentOS)の構築
コマンドプロンプトを起動し、適当なフォルダへ移動します。
> d:
> cd d:\work
CentOSのイメージをダウンロードします。(これ、結構かかります)
> vagrant box add centos/7
CentOS起動用のVagrantfileの雛形を作成します。
> vagrant init centos/7
作成したVagrantfileの雛形をカスタマイズします。
D:\work フォルダに 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
編集箇所は以下の通りです。
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の環境を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