Vagrant上にAmazonLinux2のLaravel開発環境構築
前提
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
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 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
参考
Author And Source
この問題について(Vagrant上にAmazonLinux2のLaravel開発環境構築), 我々は、より多くの情報をここで見つけました https://qiita.com/ntm718/items/b06188c459fe70a3fe87著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .