#前提
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
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
#参考