【技術分享】在 AWS Lightsail 上佈署 Laravel 專案

目前本站是在 AWS Lightsail 架設並搭配 Laravel 框架而成,
架站初期吃足了苦頭。
決定將架站中容易忘記的步驟放置於此,
以利於後續查看。
 


1. 更新 apt-get

> sudo apt-get update


2. 安裝 NPM

> sudo apt-get install npm


3. 準備 Laravel 專案用的資料夾

> sudo mkdir /opt/bitnami/projects
> sudo chown $USER /opt/bitnami/projects


4. 把 Laravel 專案 git 下來

> git clone <URL-TO-YOUR-REPOSITORY>
> sudo chown $USER /opt/bitnami/projects/<YOUR-APP-FOLDER-NAME>


5. 安裝 Composer 及 NPM dependencies

> cd /opt/bitnami/projects/<YOUR-APP-FOLDER-NAME>
> composer install
> npm install


6. 設定適當的權限

> sudo chown daemon:daemon /opt/bitnami/projects/<YOUR-APP-FOLDER-NAME>/storage



 


7. 取得 bitnami 應用程式密碼

> cat ~/bitnami_application_password


8. 從 mysql 中開一個資料庫及創建 user

> mysql -u root -p // Using the application password of step 7
mysql> create database DATABASE_NAME;
mysql> create user 'USER_NAME'@'%' identified by 'PASSWORD';
mysql> grant all privileges on DATABASE_NAME.* TO 'USER_NAME'@'%';
mysql> flush privileges;


9. 設定 Laravel 中的 .env

> mv .env.example .env

將 mysql 的連線資訊填入,並確保 DB_HOST 是 localhost

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=<YOUR-DB-NAME>
DB_USERNAME=<YOUR-USER-NAME>
DB_PASSWORD=<PASSWORD>

生成金鑰

> php artisan key:generate 

最後跑 migrate

> php artisan migrate 



 


10. 設置虛擬主機

創建一個 /opt/bitnami/apache2/conf/vhosts/<YOUR-APP-FOLDER-NAME>-vhost.conf,
並填入以下資訊。

<VirtualHost 127.0.0.1:80 _default_:80>
  ServerAlias *
  DocumentRoot /opt/bitnami/projects/<YOUR-APP-FOLDER-NAME>/public
  <Directory "/opt/bitnami/projects/<YOUR-APP-FOLDER-NAME>/public">
    Options -Indexes +FollowSymLinks -MultiViews
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

創建一個 /opt/bitnami/apache2/conf/vhosts/<YOUR-APP-FOLDER-NAME>-https-vhost.conf,
並填入以下資訊。

<VirtualHost 127.0.0.1:443 _default_:443>
  ServerAlias *
  DocumentRoot /opt/bitnami/projects/<YOUR-APP-FOLDER-NAME>/public
  SSLEngine on
  SSLCertificateFile "/opt/bitnami/apache2/conf/bitnami/certs/server.crt"
  SSLCertificateKeyFile "/opt/bitnami/apache2/conf/bitnami/certs/server.key"
  <Directory "/opt/bitnami/projects/<YOUR-APP-FOLDER-NAME>/public">
    Options -Indexes +FollowSymLinks -MultiViews
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

接著重啟 apache

> sudo /opt/bitnami/ctlscript.sh restart apache

到這為止,Laravel 專案應該已經可以以 ip 形式瀏覽。


11. 使用域名

將想要使用的網域指向執行個體的 IP,並修改 Laravel .env 檔案的 APP_URL。
修改完成後,應可以以網址的形式瀏覽 Laravel 專案。




 


12. 創建 SSL

創建 SSL 方式是基於以下文件所簡化的版本:
使用免費的 Let's Encrypt SSL Lightsail 憑證

> sudo apt-get install software-properties-common
> sudo apt-add-repository ppa:certbot/certbot -y
> sudo apt-get update -y
> sudo apt-get install certbot -y
> DOMAIN=<YOUR-DOMAIN>
> WILDCARD=*.$DOMAIN
> sudo certbot -d $DOMAIN -d $WILDCARD --manual --preferred-challenges dns certonly


將顯示的兩組 TXT 貼到 DNS 中的紀錄上,
確保 TXT 紀錄已被正確使用,可以使用以下工具:
https://mxtoolbox.com/TXTLookup.aspx.

> sudo /opt/bitnami/ctlscript.sh stop
> sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.crt /opt/bitnami/apache/conf/bitnami/certs/server.crt.old
> sudo mv /opt/bitnami/apache/conf/bitnami/certs/server.key /opt/bitnami/apache/conf/bitnami/certs/server.key.old
> sudo ln -sf /etc/letsencrypt/live/$DOMAIN/privkey.pem /opt/bitnami/apache/conf/bitnami/certs/server.key
> sudo ln -sf /etc/letsencrypt/live/$DOMAIN/fullchain.pem /opt/bitnami/apache/conf/bitnami/certs/server.crt


最後重啟一次 apache 即可完成。

> sudo /opt/bitnami/ctlscript.sh start


希望本篇文章對未來的自己有所幫助!




 
  1. 留言發表個人論述,應由留言本人負責,且不代表本站立場。
  2. 內容不得涉及廣告、毀謗、謾罵、恐嚇、侵權、非法、色情、人身攻擊、用詞不當或偏離主題。