搜尋此網誌
由於從事Client端工作較多年,所以可能相關的領域較為了解,但是程式這種職業,其實能拆分細數成無數分支的程式職業,每個不同的程式區塊都是隔行如隔山,不同公司的習慣與水平都有著巨大的差距,所以看到不同的寫法也許只是習慣不同,而大家也都是希望遊戲領域或是程式領域能發展的更好,所以歡迎討論,但是希望避免那種都沒說明就說別人錯誤的狀況~
精選
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
遊戲伺服器2025年初架設與研究part4透過服務功能(service)自動啟用腳本/架站-支援開機啟動
那先前我們已經測試過程式碼已經可以順利運行
也就是在伺服器的對應虛擬環境中,已經可以順利的透過python3 yourfile.py來執行
執行後也沒有看到錯誤,並且透過瀏覽器瀏覽設定好的網域
應該就能從對應的資料庫中看到資料被寫入
那以我使用PostgreSQL的資料庫來看
這邊也提供一個可以遠端查看資料庫的方式
不過這邊也要提醒一下,如果有安全性考量,記得要設計的嚴謹一些
畢竟資料庫也是遊戲中相當重要的一環,跟SSH連線一樣需要相當程度的保護
避免被駭入的準備還是相當重要的~
例如只接受內網連線等等,以下這個就是指定8080的內網,可以根據需要調整
sudo ufw allow from 192.168.1.0/24 to any port 8080
而這邊使用遠端查看DB的方式也就選用PostgreSQL官方提供的pgadmin
這個可以去官網上下載,可以根據自己的系統選擇版本下載
那想查詢表格的話,可以在sql輸入區域輸入
SELECT * FROM public.test_logs
ORDER BY id ASC
當然表格名稱要打自己的
就可以看到寫入到table的資料了
那確定這個python檔案確實正確執行後,我們接下來就可以來測試將這個腳本當作網站部屬起來
並且我們通常都會希望能伺服器一開機就自動啟用這種功能(如同伺服器開機就啟動遊戲伺服器功能)
那我們需要先建立一個服務檔案,例如以下這樣,當然檔名可以自己取
sudo nano /etc/systemd/system/myapp.service
接下來內容如以下範例
[Unit]
Description=My Python App
After=network.target
[Service]
ExecStart=/home/user/appname/venv/bin/gunicorn --bind 127.0.0.1:8000 main:app
WorkingDirectory=/home/yourname/myproject
Restart=always
User=yourname
Group=your_group_name
Environment="PATH=/home/user/appname/venv/bin"
[Install]
WantedBy=multi-user.target
內容中雖然可以打註解,並且註解是用#
那這邊要注意註解不能直接加在字後面
例如前面有After=network.target 你直接在後面打#這表示服務要在網路後啟動
這樣打會有問題,得換行打註解
當然這部分我只是根據測試結果說明一下,也許詳細有更複雜的規則
所以只是提醒不能直接在後面打#+註解
那主要這執行也包含了要使用虛擬環境來啟用,所以如果沒有用虛擬環境的話這邊寫法會稍微有一些不同,這邊要注意一下
修改完記得ctrl+O按Enter存檔,接著crtl+X退出
接下來可以手動啟用一下測試看看有沒有問題
sudo systemctl start myapp.service
啟用後可以透過以下這個確認狀態,或是是否有log印出來
sudo systemctl status myapp.service
那如果沒問題,接下來就可以設置開機自動啟用了
sudo systemctl enable myapp.service
在這邊輸入
sudo systemctl daemon-reexec
或是
sudo systemctl daemon-reload
可以重新加載(修改完可以輸入)
接下來這個類網站的功能就成功可以自動啟用了
並且跟先前不同,先前如果用python打指令啟用的話會占用你的SSH輸入(並且ctrl+C可以中止)
那現在就不會看到任何訊息,而且不會占用SSH了,就可以繼續實作其他功能,或是其它網站了,並做其它測試了
當然如果怕忘了先前有啟用的服務,也可以手動檢查
例如使用
ls /etc/systemd/system/
找一下那些.service的檔案
這次就先分享到這邊
主要這個功能就已經可以讓我們伺服器有基本的自動重啟的能力了
如有疑問也歡迎詢問,並且有需要指證的地方也歡迎~
熱門文章
遊戲伺服器2025年初架設與研究part7遊戲中常見的websocket使用,並且在Unity與伺服器中建立連線
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
留言
張貼留言