# **Heroku難民漂流記之移居<span>fly.io</span>** ###### tags: `fly.io` `deploy` `Heroku` `部署` > 有鑑於heroku取消了免費的服務,只能另覓他處。 --- # fly.io > 目前使用fly,主要也是免費且方便部署。  ## 在fly.io建立專案 > https://fly.io/docs/hands-on/ > 照著裡面的步驟,一步一步完成。 以下步驟皆在terminal完成(以MacOS為例),其他作業系統請參考[官網](https://hackmd.io/@littlehsun/r1RK0QDwj)。 1. 安裝`flyctl` 如果有homebrew的話,執行: ``` brew install flyctl ``` 沒有就執行: ``` curl -L https://fly.io/install.sh | sh ``` 2. 註冊 ``` flyctl auth signup ``` 會彈出瀏覽器視窗,可以直接連結GitHub或是用email建立帳號。 3. 登入 ``` flyctl auth login ``` 一樣會彈出視窗,登入完成後會到terminal。 前置作業完成了,可以開時進行專案部署了! 如果沒有現成的專案,是要從頭開始的話,可以下載[fly的官方範例](https://github.com/fly-apps/python-hellofly-flask),再加以修改。 先進入專案資料夾 ```terminal cd {project_folder} ``` 4. 啟動一個專案 ``` flyctl launch ```  如果原本有`Procfile`檔,會問是否要overwrite,選No就好。  輸入專案的名稱。  選擇喜歡的伺服器,比較近的應該是香港跟東京。  如果沒有要使用資料庫,就選`No`,要使用的話要研究一下收費標準。  執行完成後,會發現`{project_folder}`資料夾中多了一個`fly.toml`檔,這是fly的參數檔案,原則上可以不用去動,詳細參數調整可以參考[fly.io官網](https://fly.io/docs/reference/configuration/)。 要注意的是,如果從範例下載的`Procfile`檔,原本為`web: gunicorn server:app`記得改成自己的專案名稱以及執行方式。 5. 完成前面的步驟後,開始部署: ``` flyctl deploy ```  這時候如果打開[Dashboard](https://fly.io/dashboard/personal)會看到多了一個`fly-builder-#####`,那是執行deploy用的,完成後隔一段時間會自己關閉。 順利的話,等待執行完成,專案也就成功部署了! BUT,如果很不幸的,執行了`flyctl deploy`後,發現卡在  一直沒有跳出`Building image with Buildpacks`,那就`ctrl+c`停止deploy,執行下面的指令([參考](https://community.fly.io/t/first-steps-with-nodejs-tutorial/4715/2)): Install the prerelease: ``` curl -L https://fly.io/install.sh | sh -s pre ``` Then: ``` fly wireguard websockets enable ``` 完成後再次執行`flyctl deploy`即可。 6. 可以執行`flyctl status`查看專案狀況。 其中`{hostname}`便是webhook所需要的網域,通常webhook網址會是`{hostname}/callback`,這邊就看個人程式內的設定了。 ## 直接從heroku同步 > 最偷懶的方式就是直接從heroku同步到fly  如果原本使用heroku,可以直接用fly內建的轉換功能: https://fly.io/launch/heroku - 優點:簡單快速,選擇好要同步的專案等待同步完成即可。 - 缺點:要更新專案得從heroku端進行。 ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up