【技術分享】在 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
希望本篇文章對未來的自己有所幫助!