ほぼ受け売りです。
参考:
公式
LaravelをAWSのEC2へデプロイする手順
laravelをAWS EC2にデプロイする
##インバウンド HTTP (ポート 80) 接続をインスタンスに許可するセキュリティルールを追加していない場合には、ルールを追加する。
公式の最初のほうに書かれてあるのを参考に。
##php8.0をインストール
sudo amazon-linux-extras install -y php8.0
sudo yum install php-mbstring php-openssl php-xml unzip
##Apacheのインストール
sudo yum install -y httpd
設定
wabサーバの起動
sudo service httpd start
システムがブートするたびにapacheが起動するよう設定
sudo chkconfig httpd on
有効か確認
chkconfig --list httpd
ウェブサーバーをテストします。ウェブブラウザで、インスタンスのパブリック DNS アドレス (またはパブリック IP アドレス) を入力します。
Apacheの初期画面が表示されれば成功です。
ec2-user アカウントがこのディレクトリで複数のファイルを操作することを許可するには、ディレクトリの所有権とアクセス許可を変更する必要があります。
ec2-userをapacheグループに追加
sudo usermod -a -G apache ec2-user
いったんログアウトして、再度ログイン
exit
/var/www とそのコンテンツのグループ所有権を apache グループに変更
sudo chown -R ec2-user:apache /var/www
グループに、/var/wwwの書き込み許可追加
sudo chmod 2775 /var/www
/var/www とサブディレクトのディレクトリ許可を変更
find /var/www -type d -exec sudo chmod 2775 {} \;
/var/www とサブディレクトリのファイル許可を変更
find /var/www -type f -exec sudo chmod 0664 {} \;
##MYSQL8インストール
既存でインストールされている邪魔者を削除
sudo yum remove mariadb-libs
sudo rm -rf /var/lib/mysql
リポジトリのインストール
sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
MYSQLのインストール
cd /usr/lib64
sudo ln libsasl2.so.3 libsasl2.so.2
sudo yum clean all
sudo yum -y install mysql-community-server mysql-devel
MYSQLの起動
sudo systemctl start mysqld.service
sudo systemctl enable mysqld.service
初期パスワードに確認
sudo cat /var/log/mysqld.log | grep 'temporary password'
パスワード変更
sudo mysql_secure_installation
再起動
sudo systemctl restart mysqld.service
##gitをインストール
インストール
sudo curl -sS https://getcomposer.org/installer | php
パスを通す
sudo mv composer.phar /usr/local/bin/composer
##composer自身のインストール
curl -sS https://getcomposer.org/installer | php
composerコマンドのパスを通す
sudo mv composer.phar /usr/local/bin/composer
パス確認(/usr/local/bin/composerと表示されればOK)
which composer
##Laravelプロジェクトをgit clone
sudo yum install git
cd /var/www
git clone [URL]
Apacheの設定変更
http.confファイルのDocumentRootの変更
Laravelでは、プロジェクト内のpublicディレクトリをドキュメントルートに指定する必要がある
sudo vi /etc/httpd/conf/httpd.conf
キーボードで「i」を押して入力状態にする
DocumentRoot "/var/www/html"の箇所をDocumentRoot "/var/www/プロジェクト名/public"に変更
http.confファイルに以下のDirectoryを追加(.htaccessの有効化)
<Directory /var/www/プロジェクト名/public>
AllowOverride All
</Directory>
Escキーを押して次のコマンドを入力(画面左下に入力中のコマンドが表示される)
:wq
Apacheの設定変更後は、再起動。
sudo service httpd restart
##パッケージのインストール
cd /var/www/[プロジェクトのフォルダ名]
composer.jsonファイルがない場合
composer init
vendorディレクトリが生成される
composer install
Laravelプロジェクトの設定
sudo chmod -R 777 /var/www/[プロジェクト名]/storage
sudo chmod -R 775 /var/www/[プロジェクト名]/bootstrap/cache
config, routeのキャッシュクリア
だいたいなんかエラー出たら、これ打っときゃ直る。
php artisan config:cache
php artisan route:cache
.envの設定
git cloneしたLaravelプロジェクトには.envファイルがないので、
composer insatallで作成された、.env.exampleを使用する
cp .env.example .env
vi .env
APP_URL=http://IPアドレス ←サーバーのIPにする
DB_CONNECTION=mysql
DB_HOST=←RDSのエンドポイント
DB_DATABASE=データベース名
DB_USERNAME=RDS作成時のユーザ名
DB_PASSWORD=設定したパスワード
キーを作成し、キャッシュをクリアする
php artisan key:generate
php artisan config:clear
後は煮るなり焼くなり