はじめに
業務でLaravelを使用するので環境構築してみました。
検証に使用した環境
ホストOS:MacOS Monterey 12.6
Docker:20.10.14
CentOS:7
PHP:7.4.30
Laravel:7.30.6
DockerでCentOSを用意する
こちらのページを参考にCentOSを用意します。
httpdで構築したLaravelにアクセスし、ソースはホストと共有したいです。
そのため、ports、volumesに設定を加えてコンテナを立ち上げます。
最終的には以下の通り
version: "3"
services:
centos:
build: ./docker
ports:
- 8081:80
privileged: true
volumes:
- ./src:/var/www/html
- /sys/fs/cgroup:/sys/fs/cgroup:rw
working_dir: /var/www/html
必要なものをインストール
yumのリポジトリを最新化+追加
まず、yumのパッケージをアップデートし、PHPをインストールためにRemi Repositoryを追加します。
sh-4.2# yum -y update
sh-4.2# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
httpd、git、zip、unzipをインストール
httpdは、Webサーバに使用し、 git、zip、unzipは、Laravelのインストーラダウンロードやプロジェクト作成に必要のため、インストールします。
sh-4.2# yum -y install httpd git zip unzip
PHPと拡張機能をインストール
ドキュメントより、Laravel Homestead仮想マシンを使用しない場合、
以下のソフトウェアがインストールされている必要があります。
・PHP >= 7.2.5
・BCMath PHP拡張
・Ctype PHP拡張
・Fileinfo PHP extension
・JSON PHP拡張
・Mbstring PHP拡張
・OpenSSL PHP拡張
・PDO PHP拡張
・Tokenizer PHP拡張
・XML PHP拡張
PHPと拡張機能をインストールします。
sh-4.2# yum -y install php74 php74-php php74-php-bcmath php74-php-ctype php74-php-json php74-php-mbstring php74-php-openssl php74-php-tokenizer php74-php-xml
インストールしたphp74を「php」でコマンド実行できるようにシンボリックリンクを作成します。
sh-4.2# ln -s /usr/bin/php74 /usr/bin/php
インストール結果を確認
PHPのバージョンを確認します。
sh-4.2# php -v
PHP 7.4.30 (cli) (built: Jun 7 2022 08:38:19) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
次に組み込まれたモジュールを確認します。
「php -m」で一覧されます。
サーバー要件にあったPDOがありませんが、PHP 5.1.0から標準で導入されています。
sh-4.2# php -m
[PHP Modules]
bcmath
・・・
ctype
・・・
fileinfo
・・・
json
・・・
mbstring
・・・
openssl
・・・
tokenizer
・・・
xml
・・・
[Zend Modules]
Composerをインストール
Composerのインストーラーをダウンロードします。
インストーラーはPHPで作られてるため、念のため拡張子をつけておきます。
sh-4.2# php -r "copy('https://getcomposer.org/installer', 'installer.php');"
sh-4.2# ls
installer.php
インストーラーを実行します。
sh-4.2# php installer.php
All settings correct for using Composer
Downloading...
Composer (version 2.2.18) successfully installed to: /var/www/html/composer.phar
Use it: php composer.phar
実行が成功すれば、インストーラーは不要のためファイルを削除します。
sh-4.2# php -r "unlink('installer.php');"
スクリプトの実効結果として、「composer.phar」が出力されます。
composerコマンドとして実行出来るように「/usr/local/bin」に移動します。
sh-4.2# mv composer.phar /usr/local/bin/composer
Laravelの環境を構築
Laravelのインストーラをダウンロード
Composerを使用し、Laravelインストーラをダウンロードします。
sh-4.2# composer global require laravel/installer
Laravelのプロジェクトを作成
次にプロジェクトを作成します。
「composer create-project --prefer-dist laravel/laravel プロジェクト名 バージョン番号」で作成できます。
今回はLaravel7でhogeプロジェクトを作成します。
sh-4.2# composer create-project --prefer-dist laravel/laravel hoge 7
作成が出来ればプロジェクトディレクトリに移動し、バージョンを確認します。
artisanコマンドはプロジェクトディレクトリ内でのみ使用できます。
(こちら)[https://laravelversions.com/ja/7]でバージョンを比較できます。
sh-4.2# cd hoge/
sh-4.2# php artisan -V
Laravel Framework 7.30.6
httpdを設定
次にhttpdを設定します。
自動起動を設定
httpdが自動起動するように設定します。
sh-4.2# systemctl enable httpd
httpd.confを修正
Laravelプロジェクトには「PJディレクトリ/public」内に.htaccessがあります。
AllowOverRideがNoneのままだと.htaccessでの設定の書き換えが効かなくなります。
そのため、httpd.confを修正し、「/var/www/html」へのAllowOverRideをAllに修正します。
sh-4.2# vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
・・・
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
・・・
</Directory>
再起動
httpd.confを修正出来たらリスタートします。
sh-4.2# systemctl restart httpd
ステータスを確認
リスタートが出来たらステータスを確認し、httpdがアクティブになっていることを確認します。
sh-4.2# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-09-27 05:17:06 UTC; 42s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 585 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /docker/64d1ffc8d42daf603a7b36e84832ab1cf52cb5690ac8b7158f92ce692e9f2f77/system.slice/httpd.service
├─585 /usr/sbin/httpd -DFOREGROUND
├─586 /usr/sbin/httpd -DFOREGROUND
├─587 /usr/sbin/httpd -DFOREGROUND
├─588 /usr/sbin/httpd -DFOREGROUND
├─589 /usr/sbin/httpd -DFOREGROUND
└─590 /usr/sbin/httpd -DFOREGROUND
Sep 27 05:17:06 64d1ffc8d42d systemd[1]: Starting The Apache HTTP Server...
Sep 27 05:17:06 64d1ffc8d42d httpd[585]: AH00558: httpd: Could not reliably ...e
Sep 27 05:17:06 64d1ffc8d42d systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
環境構築の最後に
環境構築が完了したら、最後にyumのキャッシュをクリアしておきます。
sh-4.2# yum clean all
Laravelの動作を確認
Laravelのデフォルトページを表示
「http://localhost:8080/hoge/public 」にアクセスします。
Laravelのデフォルトページが表示されていれば成功です。
追加ページの表示を確認
Laravelでは、「PJディレクトリ/routes/web.php」でURLを管理出来ます。
「hello」を返すRouteを追加し、httpd.confへの修正が適用されていることを確認します。
Route::get('hello', function () {
return 'hello';
});
「http://localhost:8080/hoge/public/hello」にアクセスします。
helloが表示されていれば成功です。
参考文献