RedHatディストリビューションであるCentOS7にLaravelをインストールしました。
CentOS7は2024年7月1日以後サポートされなくなるため、他のOSの利用を推奨しますが、私が使う環境がCentOS7でしたのでこちらのOSで実施しています。
Laravelとは、PHPのウェブアプリケーションフレームワークでよく使われています。
PHPのフレームワークではCakePHPも有名ですが、最近はLaravelが採用されるのをよく聞きます。
私はCakePHPで開発はしたことがないためLaravelを使ってみての感想しかないのですが、多くのライブラリが提供されていることや、コードがシンプルで初めて利用したときでも後で読み返してすぐに内容を追える可読性の高いコードを書くことができたことは魅力でした。
このLaravelをCentOS7でインストールしていきたいと思います。
apacheとPHPをインストールしていることは前提とします。
必要あれば下記記事を参考にしてください。
Laravelで接続するDBをインストールする
Laravelで接続するDBをインストールします。
DBにはオープンソースのリレーショナルデータベースで人気のあるMySQLを使います。
下記URLをブラウザから自身のOSをもとにインストールするパッケージを判別します。
https://dev.mysql.com/downloads/repo/yum/
私の場合、CentOS7でRedHat Enterprise Linux 7系にあたるため、インストールするのは下記のパッケージです。
mysql80-community-release-el7-11.noarch.rpm
上記のパッケージをインストールします。
yum -y localinstall http://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
インストールできたか確認します。
yum repolist install | grep mysql
パッケージをインストールできたらmysql8.0のバージョンのパッケージを無効化し5.7のパッケージを有効化します。
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
もちろん8.0のほうが新しく性能も向上しているためよいのですが、この環境に昔からあるシステムを載せ替えたりすることも考えていため5.7を使う必要がありました。
8.0では機能が廃止されており5.7からの代替で使おうとすると、少なくないプログラム修正が必要と思われます。
5.7のパッケージを有効化できたらmysql-community-serverをインストールします。
yum list | grep mysql-community-server
yum -y install mysql-community-server
mysqlのデフォルト言語コードはlatin1で日本語ユーザーには不便であるためutf-8に変更します。
vi /etc/my.cnf
下記のmysqldのcharacter-set-serverの値をutf8にしてください。
[mysqld]
...
character-set-server = utf8
この後下記コマンドで起動するのですがそのまま起動すると起動しません。
systemctl start mysqld
mysqldサービスのステータスを確認します。
systemctl status mysqld
下記のエラーが発生していることが分かるため、mysql.pidの所有者を変更します。
New main PID 135 does not belong to service, and PID file is not owned by root. Refusing.
エラーメッセージのrootユーザーはmysqlで言うところのmysqlユーザーを指すため、それに合わせてmysql.pidの所有者・所有グループをmysqlに変更します。
chown mysql:mysql /run/mysqld/mysqld.pid
mysqldを起動します。
systemctl start mysqld
上記を実行すると前回の実行同様処理が終わらないように見えるのですが、Ctrl+Cで中断しmysqldのステータスを確認すると起動していることが分かります。
systemctl status mysqld
起動を確認できたらログインします。
初期パスワードを下記で確認します。
grep root /var/log/mysqld.log
確認したパスワードを使ってログインします。
mysql -u root -p
初期パスワードは変えておきます。
alter user 'root'@'localhost' identified by '[任意のパスワード]';
MySQLにDatabaseとUserを作成する
インストールは完了しましたがこれだけでは利用できないため、利用のための準備としてDatabaseとroot以外のUserの作成をしてしまいます。
下記コマンドでtestdbというDatabaseを作成します。
create database testdb;
Databaseは下記のコマンドで一覧できます。
show databases;
次にUserを作成します。
create user 'testuser' Identified by 'testuserpass';
testuserというUserが作成されたことを確認します。
select user,host from mysql.user where user = 'testuser';
このtestuserにtestdbの全権限をつけます。
grant all privileges on testdb.* to 'testuser'@'%';
これでDBの準備が一通り整いました。
Laravelをインストールする
Composerを用いてLaravelのインストールをしたいので、Composerをインストールします。
ComposerはPHPのlibrary間の依存関係を調整しながらlibraryをインストール・アップデートしてくれるツールです。
インストールコードでなくリンクそのものを記載してくださいと公式に書かれているのを見つけたため、公式のインストール手順のリンクを貼っておきます。
Composerをインストールできたら、それを用いてLaravelのインストーラーをインストールします。
composer global require laravel/installer
composer requireがインストールコマンドで、globalをつけることでプロジェクトごとでなく環境全体で使える場所にインストールするよう指示しています。
Laravelプロジェクトを作成する
Laravelプロジェクトを作成したい場所に移動します。
cd /var/www/html
Composerを用いてlrvl-testというLaravelプロジェクトを作成します。
composer create-project --prefer-dist laravel/laravel testlrvl
composer create-objectでComposerで管理するプロジェクトを作成できます。
–prefer-distはプロジェクトを圧縮してダウンロードするオプションです。
LaravelでDBの接続設定をする
プロジェクトルートにある.envファイルを更新します。
vi .env
開いたら該当項目を下記の通り修正してください。
DB_CONNECTION=mysql
DATABASE_URL=mysql://testuser:testuserpass@127.0.0.1/testlrvl
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testlrvl
DB_USERNAME=testuser
DB_PASSWORD=testuserpass
DB_CONNECTIONには接続するDBを指定するため先ほどインストールしたmysqlを設定します。
DATABASE_URLは接続情報を1つの文字列で指定するための項目です。
下記のように書きます。
mysql://[ユーザー名]:[パスワード]@[ホスト名]/[データベース名]
DB_HOSTはDBのホスト名もしくはIPアドレスを記載します。
DB_PORTはDBにアクセスするためのポート番号を記載します。
MySQLのデフォルトポートである3306を設定しておりますが、セキュリティ強度を上げたい場合は別のポート番号にしたほうがよいです。
DB_DATABASEは接続するDB名、DB_USERNAMEには接続に使うユーザー名、DB_PASSWORDにはそのユーザーのパスワードを記載します。
Laravelのタイムゾーンとロケールを日本に合わせる
Laravelのタイムゾーンとロケールを日本に合わせておきます。
プロジェクト内にあるapp.phpを編集します。
vi config/app.php
タイムゾーンの項目をデフォルトのUTCから書き換えます。
'timezone' => 'Asia/Tokyo',
ロケールの項目をデフォルトのenから書き換えます。
'locale' => 'ja',
Laravelの開発サーバーを起動する
Laravelの開発サーバーを起動してみます。
開発サーバーを起動することで開発時点での環境構築の手間を省いてローカルからブラウザでLaravelプロジェクトにアクセスできます。
Laravelプロジェクトを構築できたことの確認のため開発サーバーを立ち上げてアクセスしてみます。
何を使っても構いませんがTera Termの利用を想定して記載します。
TeraTermを立ち上げてLaravelプロジェクトを作成したサーバーにアクセスします。
アクセスしたら設定 > SSH転送をクリックします。

SSHポート転送のダイアログがでたら追加をクリックします。

ローカルのポート、リッスン、リモート側ホスト、ポートを設定しOKをクリックします。

被らなければなんでもいいのでウェルノウンポートや使っているポートを避け、私の場合はローカルのポートには18000を入れました。
18000にしたのは昔参照したサイトでそうしていたからだったように思います。
リッスンはlocalhostにします。
リモート側ホストは127.0.0.1にします。
127.0.0.1は自身のIPを指すので、この場合SSH接続しているLaravelプロジェクトを立てたサーバーを指します。
ポートはLaravel開発サーバーのデフォルトポートである8000を指定します。
上記の設定ができたら開発サーバーを立ち上げます。
php artisan serve
下記にアクセスしてLaravelのウェルカムページが開けば完了です。
http://localhost:18000
もしフロントエンド開発も行うのであればLaravel Mixも入れたほうがいいので必要あれば下記を参照してください。

