搜尋此網誌
由於從事Client端工作較多年,所以可能相關的領域較為了解,但是程式這種職業,其實能拆分細數成無數分支的程式職業,每個不同的程式區塊都是隔行如隔山,不同公司的習慣與水平都有著巨大的差距,所以看到不同的寫法也許只是習慣不同,而大家也都是希望遊戲領域或是程式領域能發展的更好,所以歡迎討論,但是希望避免那種都沒說明就說別人錯誤的狀況~
精選
遊戲伺服器2025年初架設與研究part3-Python與PostgreSQL/Nginx
那主要目標也是架設遊戲可以使用的伺服器,還有資料庫的部分
而初步自然要先選擇相關的語言,還有資料庫的種類
當然有些資料庫是要進行購買的,不過個人使用者或是小工作室,免費的應該就很夠用了
如果有某些追求的自然也可以去看看那些付費資料庫的版本分別有什麼特色來進行選擇
首先部分使用到的指令應該也整理到了part1_1那邊,如果後續還有指令整理再看看放置的位置
我這邊的話是選擇Python+PostgreSQL
這邊也簡單說明一下測試流程,並且我們先預想好要測試的功能
先來個簡單的測試,就是透過瀏覽器瀏覽自己的網域,然後你的伺服器就會處理寫入資料到資料庫去進行記錄的動作,根據這個需求來展開後續我們測試的流程
首先我是使用另一台電腦安裝PyCharm建置對應的python環境與專案來進行開發
版本的話看建議是選擇3.8以上就可以,這邊目前沒看出有什麼差異,就選自己喜好的版本就好
那準備好寫程式的環境後,可以先回到伺服器那邊,把需要的資料庫建置一下
這邊就是可以查一下SQL的語法
首先在PostgreSQL底下建立新的使用者,建議不要使用預設的那個user,那個user權限太高,測試的時候也是可以暫時使用,記得之後要替換就好
然後在你想放置資料庫的位置Creat一個table,當然欄位可以自己定義
CREATE TABLE test(
id SERIAL PRIMARY KEY,
test_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
假設這樣建立一個叫做test的表格,然後有主key,欄位則是有記錄寫入的時間
接下來記得先前的Nginx需要做反向代理的動作,然後Flask需要轉發請求的部分
所以這兩個都要記得安裝
那這邊為了反向代理,所以必須編輯Nginx的設定檔案
當然這邊要注意可能需要先停用default,然後建立一個新的
sudo nano /etc/nginx/sites-available/你想要的設定檔名稱
透過nano文字編輯器編輯內容
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri; # 導向 HTTPS
}
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5000; # Flask 預設在這個 port
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
透過這個指令連結新的設定檔
接下來打sudo nginx -t
可以測試,如果先前的語法有錯,這邊會直接測試error
接下來就重新讀取sudo systemctl reload nginx
這樣新的設定就會生效了
接下來回到PyCharm新增一個.py的程式碼檔案
例如main.py也可以,以下是詳細的程式碼範例內容
from flask import Flask
import psycopg2
from datetime import datetime
app = Flask(__name__)
# 連線參數請依實際修改
def get_db_connection():
return psycopg2.connect(
dbname="yourdbname",
user="yourdbuser",
password="yourdbpass",
host="localhost"
)
@app.route('/')
def log_visit():
conn = get_db_connection()
cur = conn.cursor()
# 寫入目前時間
cur.execute("INSERT INTO test (test_time) VALUES (%s)", (datetime.now(),))
conn.commit()
cur.close()
conn.close()
return "Visit time recorded!"
if __name__ == '__main__':
app.run()
接下來把python檔案存檔之後透過遠端傳到伺服器內指定的資料夾
這邊通常應該先放在先前建立虛擬環境的資料夾底下就可以了
接下來就在對應的路徑底下python3 yourfile.py輸入你的py檔案名稱,就可以運作這個測試用的伺服器了
然後可以隨意到任何瀏覽器輸入你自己的網域名稱,就可以看到有資料被寫入資料庫了
這次就先分享到這裡,今天已經讓我們瀏覽器瀏覽網域時順利的觸發了對應的事件,去寫入資料庫。
如果還有疑問也可以直接發問,或是有什麼想指正的歡迎~
熱門文章
遊戲伺服器2025年初架設與研究part14收送封包的Json格式與Unity內建JsonUtility相關的問題(支援性)
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
留言
張貼留言