LoginSignup
6
5

More than 3 years have passed since last update.

Vagrant上にAmazonLinux2のLaravel開発環境構築

Last updated at Posted at 2020-04-28

前提

virtualboxとvagrantはインストール済み
Homestead使えばいいんだけど、本番と同じようにする必要があるっぽいので作成

  • AmazonLinux2
  • PHP7.4
  • Apache 2.4
  • MySQL5.7
  • Composer
  • Nodejs

1.Vagrantfile作成

作業フォルダをprjとする

vi Vagrantfile

下記を記載

Vagrant.configure("2") do |config|
  config.vm.box = "gbailey/amzn2"
  config.vm.network "private_network", ip: "192.168.33.10"
end

VagrantHubで公開されているAmazonLinux2のboxを拝借します。

2.起動

prj(Vagrantfile)と同階層で

vagrant up

起動後box内へ接続

vagrant ssh

3.PHPインストール

amazon-linux-extras list

php好きなのインストール
今回は7.4

sudo amazon-linux-extras install php7.4

必要な拡張インストール

sudo yum install php-mbstring php-gd php-xml php-opcache php-bcmath

4.Apacheインストール

sudo yum install httpd

起動

sudo systemctl start httpd

確認
active(running)になっていればOK

sudo systemctl status httpd

自動起動

systemctl enable httpd

5.MySQLインストール

MySQLの5.7を入れる

sudo yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
sudo yum install mysql-community-server

起動

sudo systemctl start mysqld.service

自動起動するように設定

sudo systemctl enable mysqld.service

rootユーザの初期パスワード確認

sudo cat /var/log/mysqld.log | grep root@localhost

このように出力されるのでパスワードをコピーしておく
[Note] A temporary password is generated for root@localhost: 【ランダム文字列】

次にMySQLにログイン
先ほど控えたパスワードを入力します

mysql -u root -p

ローカル開発なのでパスワード設定を緩めます

#パスワードの最低長
SET GLOBAL validate_password_length=4;
#ポリシーを緩める
SET GLOBAL validate_password_policy=LOW;

rootユーザのパスワードを変更

set password for root@localhost=password('ここに好きなパスワード');

exitしてMySQLからログアウト

6.Nodeインストール

Laravelでフロントやったりするときに使うので入れておく

リポジトリ追加

sudo curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -

インストール

sudo yum install nodejs

確認

node -v

7.Composer インストール

セットアップスクリプトを取得します

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

取得後、実行します

php composer-setup.php

実行完了後、ダウンロードできているのでセットアップスクリプトの削除

php -r "unlink('composer-setup.php');"

どこでも使えるように移動する

sudo mv composer.phar /usr/local/bin/composer

確認

composer -v

8.フォルダ同期とか設定

一度状態を保存をできるようにしておきます

box停止

vagrant halt

saharaのインストール

vagrant plugin install sahara

vagrantfileに同期フォルダの記載
ついでに同期してるフォルダをドキュメントルートにすると、httpdのほうが起動早くてフォルダ無いって言われて死ぬので
起動するシェルを追加する

Vagrant.configure("2") do |config|
  config.vm.box = "gbailey/amzn2"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "./src","/var/www/html/src", create:"true", group:"apache", :mount_options => ['dmode=775', 'fmode=775']
  config.vm.provision "shell", run: "always", inline: <<-SHELL
    systemctl restart httpd.service
  SHELL
end

記載内容を反映して起動

vagrant up --provision

saharaでロールバックできるように起動
これで設定等やらかしたりしても大丈夫

vagrant sandbox on

box内に接続

vagrant ssh

/var/www/html/srcとローカルのprj/srcが同期するのでここにLaravelをインストールすれば
ローカルにもできます

9.Laravelインストール

同期しているディレクトリへ移動

cd /var/www/html/src

Composer からLaravelのインストール

composer create-project --prefer-dist laravel/laravel . "6.*"

Cannot allocate memoryが出た場合
こちらを参考にswap領域の確保をしてください

ダウンロード完了後、Laravelの初期設定

chmod -R 777 storage && chmod -R 777 bootstrap/cache
cp .env.example .env
php artisan key:generate

ドキュメントルートの設定するのでバックアップを取っておく

sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.old

変更

sudo vi /etc/httpd/conf/httpd.conf

/DocumentRootで編集箇所へ

DocumentRoot "/var/www/html/src/public"

<Directory "/var/www/html">
  AllowOverride ALL#NONEから変更
</Directory>

Apache再起動

sudo systemctl restart httpd

あとは.envにMySQLの接続情報記載したら終了
Vagrantfileに記載したIPにアクセスするとLaravelの画面が表示されればOK
000000.JPG

saharaをコミットしておく

vagrant halt
vagrant sandbox commit
vagrant sandbox off

何かしらインストールする際は再度vagrant sandbox onをして、やらかしたらvagrant sandbox rollbackで戻しましょう

10.配布

ほかの人に配布します

vagrant package default --output AmazonLinux2_LAMP

AmazonLinux2_LMAPの個所は好きに決定してください

AmazonLinux2_LMAP.boxが出力されているのでVagrantfileとともに渡し、

vagrant box add Lamp AmazonLinux2_LMAP

適当にbox名を決め、追加する元のboxを指定し起動

vagrant up

参考

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5