いろいろ変わってるみたいなので調べてメモ。
以下、root権限かsudoで実行すること前提。
前提条件
- CentOS7はMinimalインストールでyum updateした状態
- インストールにフォーカスしているのでセキュリティ設定とは一旦置いておく
- 端折ります(忙しい向け)
主な流れ
- httpd(2.4)のインストール
- php(7.2)と拡張モジュールのインストール
- MySQL(8.0)のインストール
- composer(1.8)のインストール
- Laravel(5.7)のインストールと動作確認
httpd(Apache)のインストール
何は無くともApacheのインストール。Apacheは標準リポジトリにある2.4.x系をインストール。
yum install -y httpd
サービスの開始と永続化。
systemctl start httpd.service
systemctl enable httpd.service
CentOS7は標準でFirewallが設定されているので、必要なポートを開けます。ここでは80と後々Laravelのビルトインサーバで利用する8000を開けておきます。
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload
http://サーバのIP/ でApacheの標準画面が見えるか確認しておきましょう。
PHPのインストール
続いてPHP。
標準のリポジトリにあるのは5.4.xと古いので、PHP7.2をインストールします。
Laravelの最新版の要求はPHP7.x以上です。
remiリポジトリをインストールします。依存関係としてepelのインストールされます。
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
では。PHPのインストール。
Laravelが要求してくる拡張モジュールもインストールしておきます。
yum install -y --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysqlnd
上記ではremi-php72としてますが、remi-php73でもかまいません。
モジュールを読み込むためhttpdを再起動させておきます。
systemctl restart httpd.service
MySQLのインストール
続いてMySQL。
標準でMariaDBのライブラリが入っているので消しておきます。
yum remove mariadb-libs
rm -rf /var/lib/mysql
MySQLも標準リポジトリには無いので最新のリポジトリをインストールします。
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
標準では8.0がインストールされます。
yum install -y mysql-community-server
サービスの起動と永続化を行います。
systemctl start mysqld.service
systemctl enable mysqld.service
rootのパスワードがlogに出力されるので確認しておきます。
ここではV9djjjWFd_wf。
grep password /var/log/mysqld.log
2019-02-17T01:49:46.433912Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: V9djjjWFd_wf
標準のパスワードでは怒られるのでmysql_secure_installationコマンドを実行してrootのパスワードを変更しておきます。
mysql_secure_installation
MySQL8.0から認証方法が変更されたため、Laravelからアクセスできません(migrateコマンドでエラーが出ます)。
認証方法を従来の方法に変更しておきます。以下、rootの認証方法の変更です。
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'New_P@ssw0rd!';
変更されたか確認しておきます。
select user, plugin from mysql.user;
今後createするユーザーの認証手法を変えたい場合は、my.cnfを変更します。
[mysqld]
default_authentication_plugin=mysql_native_password
my.cnfをいじったら、systemctl restart mysqld.serviceしておきましょう。
composerのインストール
LaravelのインストールのためにComposerをインストールしておきます。
ダウンロードして名称変更・移動を行います。
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Laravelのインストール
ここまで来たらいよいよLaravelのインストールですが、zipとunzipを先にインストールしておきます。
composer利用時に「zip unzipが無いぞ!」と怒られるのを防ぐためです。
yum install -y zip unzip
では、composerでcreate-projectします(ここではlaravelというフォルダが作成されるはず)。
composer create-project laravel/laravel laravel
では、Laravelのフォルダに入って、serveします。
php artisan serve --host 0.0.0.0
この時点でhttp://IPアドレス:8000/ でアクセスしてLaravel画面が見えるか確認しておきます。
見えればLaravelは動いています。
いちおうDB関連が正しく動いているかも確認します。
適当にLaravelからアクセスするDBを作成します。
mysql>create database testdb;
.evnを編集してDB情報を追加・更新します。
vi .env
migrateコマンドが実行できるか確認します。
php artisan migrate
うまく行っていればOKです。