すでにVirtual Box + Vagrant(+sandbox)は入っている前提です。
Windows10での操作を前提にして記載しますので、macの方はローカルでの作業部分は適宜読み替えてください。
素のCentOSにPHP7.3やMySQL8.0をインストールし、Composerを入れ、Laravel6をインストールところまで行きます。
#CentOS7サーバーを立てる
##CentOS7.3のダウンロード
powershell(PS)にて
PS vagrant box add centos73 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.3/vagrant-centos-7.3.box
PS box: Successfully added box 'centos73' (v0) for 'virtualbox'!
##CentOS7.3サーバーの起動
###作業ディレクトリの作成
今回の環境を置きたいディレクトリを
C:\work\centos7-laravel6
とする。
powershellを使って、そこに移動して、
PS vagrant init centos73
###vagrantfileの編集
35行目くらいに書かれている
# config.vm.network "private_network", ip: "192.168.33.10"
の部分を
config.vm.network "private_network", ip: "192.168.33.190"
と書き替え。(ご自分の環境に合わせて適宜変えて下さい)
###起動
PS vagrant up
##sshで接続
PS ssh vagrant@192.168.33.190
パスワードは「vagrant」
##curl、nssのアップデート
$ sudo yum update curl -y
$ sudo yum update nss -y
#PHP7.3のインストール
すでにインストールされていないか確認。
$ yum list installed | grep php
何も出てこなければOK。
##インストールファイルのダウンロード
$ sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo yum info --enablerepo=remi,remi-php73 php
$ sudo yum search --enablerepo=remi,remi-php73 php
$ sudo yum info --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql php-bcmath
エラーが出ないことを確認する。
##PHPのインストール
$ sudo yum install -y --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql php-bcmath
##再起動時にhttpdが自動で起動するように設定
$ sudo systemctl enable httpd.service
##httpd を起動
$ sudo systemctl start httpd.service
##バージョン確認
$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Aug 8 2019 11:41:18
$ php -v
PHP 7.3.16 (cli) (built: Mar 17 2020 10:18:38) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.16, Copyright (c) 1998-2018 Zend Technologies
##FireWallの無効化
$ sudo systemctl status firewalld
で
Active: active (exited)
と返ってきたら動いている。
もしアクティブになっていたら停止する。Vagrant(ローカル)だし。
$ sudo systemctl stop firewalld
##自動起動禁止
二度と起動しないようにする。
$ sudo systemctl disable firewalld
##この状態でセーブ
一旦、sshを抜けて、vagrant sandbox on にしてセーブしておく。
PS vagrant sandbox on
PS vagrant suspend
PS vagrant sandbox commit
##再び起動
PS vagrant resume
#MySQLのインストール
##インストールファイルの取得
$ sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
##リポジトリの確認
$ sudo yum repolist all | grep mysql
・・・
mysql80-community/x86_64 MySQL 8.0 Community Server enabled: 161
・・・
「mysql80-community/x86_64」が「enabled」となっていることを確認。
「disabled」になっていたら、他記事を探して「enabled」にする。略。
##インストール
$ sudo yum install -y mysql-community-devel
$ sudo yum install -y mysql-community-server
##バージョン確認
$ mysql --version
mysql Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)
##MySQLの設定ファイルの追加
以下の設定を MySQL の設定ファイルに追加します。
$ sudo vi /etc/my.cnf
#ログのタイムゾーンの設定(初期値:UTC)
log_timestamps=SYSTEM
#クライアントの文字セットの設定を無視する
skip-character-set-client-handshake
#デフォルトの文字セット(初期値:utf8mb4 >= 8.0.1)
character-set-server=utf8mb4
#タイムスタンプのデフォルト値に関する設定(初期値:ON >= 8.0.2)
explicit_defaults_for_timestamp=ON
##kernelのアップデート
以前、ここでmysqlを再起動するとハングすることがあった。kernelをアップデートする。(今は不要かもしれないが、やって損はない。)
###yumでアップデート
$ sudo yum update kernel -y
###再起動
$ sudo reboot
##再度sshで接続
##起動確認
$ rpm -qa | grep mysql
##自動起動設定
$ sudo systemctl enable mysqld
##初期パスワードの確認
$ grep -i password /var/log/mysqld.log
と打つと下記が戻る
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: {ランダム文字列}
##初期パスワードの変更
Vagrantだし、簡単なパスワードに変えたい。
$ mysql -u root -p
Enter password: (上記で確認したランダムパスワードを入力)
mysql> SET GLOBAL validate_password.length=4;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL validate_password.mixed_case_count=0;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL validate_password.number_count=0;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL validate_password.special_char_count=0;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL validate_password.policy=LOW;
Query OK, 0 rows affected (0.00 sec)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Query OK, 0 rows affected (0.02 sec)
##この状態(PHP+MySQL)でセーブ
一旦、sshを抜ける。
PS vagrant suspend
PS vagrant sandbox commit
PS vagrant resume
##再びSSHで接続
略
#composerのインストール
##インストール
homeディレクトリ
/home/vagrant
にて
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php
##パーミッション緩和
$ sudo chmod 777 /usr/local/bin/
$ sudo mv composer.phar /usr/local/bin/composer
##確認
$ composer
と打つと以下が返る。
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.10.1 2020-03-13 20:34:27
#gitのインストール
$ sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
$ sudo yum -y install git2u yum-utils
$ sudo yum-config-manager --disable ius
##確認
# git --version
git version 2.16.6
ちょっと古いがまぁいい。
#圧縮解凍のライブラリをインストール
$ sudo yum install -y zip unzip
##この状態(PHP+MySQL+細々としたMW)でセーブ
一旦、sshを抜ける。
PS vagrant suspend
PS vagrant sandbox commit
PS vagrant resume
##再びSSHで接続
略
#Laravel6のインストール
いよいよLaravel6のインストール
phpのライブラリが一部足りないようなので追加インストール
$ sudo yum install -y --enablerepo=remi,remi-php73 php-devel php-zip
これで準備完了。
##Laravel6のインストール
インストールしたいディレクトリに移動する。
/var/www/html/
の下にディレクトリを切って入れたいが、vagrantユーザーはここに書込権限がないので、suする。
$ su
passwordは「vagrant」
$ cd /var/www/html/
##プロジェクトの作成
$ composer create-project --prefer-dist laravel/laravel=6 {project_name}
{project_name}はsampleとする
実行すると長い間無反応になる。(10分くらいかかる)
sampleに入って、バージョン確認
$ cd sample
$ php artisan --version
以下が返る。
Laravel Framework 6.18.6
##root から抜ける
$ exit
##パーミッション変更
$ sudo chmod 777 -R storage/
$ sudo chmod -R 777 bootstrap/cache
#動作確認
$ php artisan serve --host=192.168.33.190 --port=8000
としておき、Windows側のブラウザから
http://192.168.33.190:8000
でアクセスしてみる。
Laravelのオープニング画面が出ればここまでは成功!