76 KiB
YouleGames Docker 閮ㄧ讲鐗?
鍘熼」鐩?
codes/agent/game鐨?Docker 鍖栨敼閫狅紝鎵€鏈夌‖缂栫爜鍩熷悕/IP/瀵嗙爜宸插閮ㄥ寲涓虹幆澧冨彉閲忥紝閫氳繃鍗曚竴.env鏂囦欢鎺у埗鎵€鏈夐厤缃€?
鐩綍缁撴瀯
game-docker/
鈹溾攢鈹€ .env.example # 鐜鍙橀噺妯℃澘锛堥儴缃叉椂澶嶅埗涓?.env锛?
鈹溾攢鈹€ docker-compose.yml # Docker Compose 缂栨帓锛? 涓湇鍔★級
鈹溾攢鈹€ deploy.sh # 涓€閿儴缃茶剼鏈?
鈹溾攢鈹€ init-ssl.sh # SSL 璇佷功棣栨鐢宠鑴氭湰
鈹溾攢鈹€ env_config.php # PHP 鐜鍙橀噺鍔犺浇鍣紙api/ 鍜?dlweb/ 鍏辩敤锛?
鈹溾攢鈹€ api/ # 缃戠珯1: 娓告垙鏍稿績 API 鏈嶅姟婧愮爜
鈹溾攢鈹€ dlweb/ # 缃戠珯2: 浠g悊绠$悊鍚庡彴婧愮爜
鈹溾攢鈹€ wxserver_daoqi/ # 缃戠珯3: 寰俊灏忕▼搴忓悗绔簮鐮?
鈹溾攢鈹€ docker/
鈹? 鈹溾攢鈹€ nginx/
鈹? 鈹? 鈹溾攢鈹€ default.conf.template # Nginx 閰嶇疆妯℃澘锛坋nvsubst 鍔ㄦ€佸煙鍚嶆敞鍏ワ級
鈹? 鈹? 鈹斺攢鈹€ ssl-params.conf # SSL 瀹夊叏鍙傛暟
鈹? 鈹溾攢鈹€ api/
鈹? 鈹? 鈹溾攢鈹€ Dockerfile # API 闀滃儚锛圥HP 8.1 + Apache锛?
鈹? 鈹? 鈹斺攢鈹€ docker-entrypoint.sh # 鍚姩鏃?sed 鏇挎崲 JS 涓‖缂栫爜鍩熷悕
鈹? 鈹溾攢鈹€ dlweb/
鈹? 鈹? 鈹溾攢鈹€ Dockerfile # DLWEB 闀滃儚锛圥HP 8.1 + Apache + Redis ext锛?
鈹? 鈹? 鈹斺攢鈹€ docker-entrypoint.sh # 鍚姩鏃?sed 鏇挎崲 JS/HTML 涓‖缂栫爜鍩熷悕
鈹? 鈹溾攢鈹€ wxserver/
鈹? 鈹? 鈹斺攢鈹€ Dockerfile # wxserver 闀滃儚锛圢ode.js 18 Alpine锛?
鈹? 鈹溾攢鈹€ syncjob/
鈹? 鈹? 鈹斺攢鈹€ sync.sh # Synchronize.php 杞鑴氭湰锛堟瘡 30s锛?
鈹? 鈹溾攢鈹€ cronjob/
鈹? 鈹? 鈹溾攢鈹€ entrypoint.sh # cron 瀹瑰櫒鍏ュ彛
鈹? 鈹? 鈹斺攢鈹€ daily-task.sh # 姣忔棩瀹氭椂浠诲姟锛堟浛浠?autorun.cmd锛?
鈹? 鈹斺攢鈹€ certbot/ # SSL 璇佷功鐩稿叧
鈹斺攢鈹€ game/ # 鍘熷鏈慨鏀逛唬鐮佸浠斤紙涓嶅弬涓庨儴缃诧級
鏁翠綋鏋舵瀯
浜掕仈缃?
鈹?
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹粹攢鈹€鈹€鈹€鈹€鈹€鈹?
鈹? Nginx 鈹?鈫?SSL 缁堢 + 鍩熷悕璺敱
鈹? :80 :443 鈹? 鍩熷悕閫氳繃 .env 娉ㄥ叆
鈹斺攢鈹€鈹攢鈹€鈹€鈹攢鈹€鈹€鈹攢鈹?
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹? 鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈻? 鈻? 鈹? 鈻? 鈹?
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹粹攢鈹€鈹?鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? API 鈹?鈹? DLWEB 鈹?鈹?wxserver 鈹?
鈹? PHP 8.1 鈹?鈹? PHP 8.1 鈹?鈹?Node.js 鈹?
鈹? Apache 鈹?鈹? Apache 鈹?鈹? :3000 鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹攢鈹€鈹€鈹€鈹€鈹€鈹?鈹斺攢鈹€鈹€鈹€鈹€鈹攢鈹€鈹€鈹€鈹€鈹?鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? 鈹?
鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?Docker 鍐呯綉 (youle-net)
鈹? 鈹? 鈹?
鈹? 鈻? 鈹?
鈹?鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹?鈹?syncjob 鈹傗梽鈹尖攢鈹€鈹€鈹€鈻衡攤 cronjob 鈹? 鈹? certbot 鈹?
鈹?鈹?姣?0s杞 鈹?鈹? 鈹?姣忔棩4:00 鈹? 鈹?12h缁 鈹?
鈹?鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? 鈹?
鈻? 鈻?
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹? MySQL (闃块噷浜?RDS) 鈹? 鈹? Redis 鈹?
鈹? 澶氬疄渚嬶細agent_db / 鈹? 鈹? :6379 鈹?
鈹? game_db / grade_db 鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鏈嶅姟娓呭崟锛? 涓鍣級
| 瀹瑰櫒鍚? | 闀滃儚 | 浣滅敤 | 绔彛 |
|---|---|---|---|
youle-nginx |
nginx:alpine | SSL 缁堢 + 鍩熷悕璺敱鍙嶅悜浠g悊 | 80, 443 |
youle-api |
php:8.1-apache (鑷畾涔? | 娓告垙鏍稿績 API锛堢櫥褰?鏀粯/SDK锛? | 8081 (鍐呴儴) |
youle-dlweb |
php:8.1-apache (鑷畾涔? | 浠g悊绠$悊鍚庡彴 | 8082 (鍐呴儴) |
youle-wxserver |
node:18-alpine (鑷畾涔? | 寰俊灏忕▼搴忓悗绔? | 3000 (鍐呴儴) |
youle-syncjob |
alpine:3.19 | 姣?30s POST Synchronize.php锛堟暟鎹悓姝ワ級 |
鏃? |
youle-cronjob |
alpine:3.19 | 姣忔棩鍑屾櫒 4:00 鎵ц鎶ヨ〃鍚屾 | 鏃? |
youle-redis |
redis:7-alpine | 缂撳瓨鏈嶅姟锛堝彲閫夛級 | 6379 (鍐呴儴) |
youle-certbot |
certbot/certbot | Let's Encrypt SSL 璇佷功鑷姩缁 | 鏃? |
蹇€熼儴缃?
鍓嶇疆瑕佹眰
- Linux 鏈嶅姟鍣紙鎺ㄨ崘 Ubuntu 22.04 / CentOS 8+锛屾渶浣?2C 2G锛?
- 鍩熷悕宸茶В鏋愬埌鏈嶅姟鍣?IP锛? 涓煙鍚嶏細API / DLWEB / wxserver锛?
- 鏈嶅姟鍣?80 鍜?443 绔彛鍙敤
- Docker 鍜?Docker Compose锛堝鏈畨瑁咃紝
deploy.sh浼氳嚜鍔ㄥ畨瑁呭苟閰嶇疆鍥藉唴闀滃儚鍔犻€燂級
0. 閰嶇疆 SSH 瀵嗛挜璁よ瘉锛堝繀椤伙級
sync.ps1 姣忔鎵ц浼氳皟鐢ㄥ娆?scp / ssh锛屽鏋滄湭閰嶇疆瀵嗛挜璁よ瘉锛屾瘡鏉″懡浠ら兘浼氬脊鍑哄瘑鐮佹彁绀哄鑷磋剼鏈腑鏂€備互涓嬫楠ゅ湪 Windows PowerShell 涓畬鎴愶紙Windows 10/11 鍐呯疆 OpenSSH 瀹㈡埛绔紝鏃犻渶棰濆瀹夎锛夈€?
绗竴姝ワ細妫€鏌ユ槸鍚﹀凡鏈?SSH 瀵嗛挜
# 榛樿瀵嗛挜璺緞
Test-Path "$env:USERPROFILE\.ssh\id_ed25519"
# 杈撳嚭 True 琛ㄧず宸叉湁瀵嗛挜锛屽彲璺冲埌绗笁姝?
濡傛灉宸叉湁 RSA 鏃у瘑閽ワ紙id_rsa锛夛紝鍚屾牱鍙敤锛屾妸涓嬮潰鍛戒护涓殑 id_ed25519 鏇挎崲涓?id_rsa銆?
绗簩姝ワ細鐢熸垚瀵嗛挜瀵?
# 鐢熸垚 Ed25519 瀵嗛挜锛堟洿瀹夊叏銆佹洿鐭級
ssh-keygen -t ed25519 -C "youle-deploy" -f "$env:USERPROFILE\.ssh\id_ed25519"
# 鎻愮ず passphrase 鏃剁洿鎺ュ洖杞︿袱娆★紙涓嶈瀵嗙爜锛岃剼鏈墠鑳借嚜鍔ㄨ繍琛岋級
鎵ц鍚庣敓鎴愪袱涓枃浠讹細
| 鏂囦欢 | 璇存槑 |
|---|---|
~/.ssh/id_ed25519 |
绉侀挜锛岀粷涓嶄笂浼犳湇鍔″櫒锛屾湰鍦颁繚绠? |
~/.ssh/id_ed25519.pub |
鍏挜锛岃鍙戠粰鏈嶅姟鍣? |
绗笁姝ワ細灏嗗叕閽ヤ笂浼犲埌鏈嶅姟鍣?
姝ゆ楠や細瑕佹眰杈撳叆涓€娆″瘑鐮侊紝涔嬪悗涓嶅啀闇€瑕併€?
# 涓€琛屽懡浠わ細璇诲彇鍏挜 鈫?杩藉姞鍒版湇鍔″櫒 authorized_keys
cat "$env:USERPROFILE\.ssh\id_ed25519.pub" | ssh root@47.98.203.17 `
"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
绗洓姝ワ細楠岃瘉鍏嶅瘑鐧诲綍
# 鐩存帴鐧诲綍锛屼笉寮瑰瘑鐮佹彁绀哄垯鎴愬姛
ssh root@47.98.203.17 "echo 'SSH key auth OK'"
杈撳嚭 SSH key auth OK 鍗宠〃绀洪厤缃垚鍔燂紝sync.ps1 鍙甯镐娇鐢ㄣ€?
鍙€夛細閰嶇疆 SSH 鍒悕锛堢畝鍖栧懡浠わ級
鍦?C:\Users\<浣犵殑鐢ㄦ埛鍚?\.ssh\config锛堟枃浠朵笉瀛樺湪鍒欐柊寤猴級涓坊鍔狅細
Host youle
HostName 47.98.203.17
User root
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
閰嶇疆鍚庡彲浣跨敤鐭悕绉版搷浣滐細
ssh youle # 鐩存帴鐧诲綍
# sync.ps1 浣跨敤鍒悕
.\sync.ps1 -Server youle
鍙€夛細澶氬彴鐢佃剳鍏辩敤鍚屼竴鍙版湇鍔″櫒
鎶婃瘡鍙扮數鑴戠敓鎴愮殑 id_ed25519.pub 鍐呭閮借拷鍔犲埌鏈嶅姟鍣ㄧ殑 ~/.ssh/authorized_keys锛堜竴琛屼竴涓級锛屼笉闇€瑕佸垹闄ゆ棫鐨勫叕閽ワ細
# 鍦ㄧ浜屽彴鐢佃剳涓婃墽琛屽悓鏍风殑涓婁紶鍛戒护鍗冲彲锛?> 杩藉姞鑰屼笉鏄鐩栵級
cat "$env:USERPROFILE\.ssh\id_ed25519.pub" | ssh root@47.98.203.17 `
"cat >> ~/.ssh/authorized_keys"
1. 妫€鏌ュ苟淇琛屽熬绗︼紙LF锛?
涓轰粈涔堥渶瑕佽繖姝ワ紵 Windows 鐨?Git 榛樿
core.autocrlf=true锛屽彲鑳藉皢鑴氭湰鏂囦欢鍐欐垚 CRLF銆侰RLF 鏍煎紡鐨?shell 鑴氭湰鍦?Linux 瀹瑰櫒涓細鎶?not found/syntax error閿欒锛屽鑷村鍣ㄦ棤娉曞惎鍔ㄣ€?
鍦ㄤ笂浼犲墠杩愯 fix-lf.ps1锛岃嚜鍔ㄦ壂鎻忔墍鏈夊叧閿枃浠跺苟淇锛?
.\fix-lf.ps1
鏍规湰淇锛堜竴娆℃€э紝涔嬪悗鏃犻渶鍐嶈窇锛夛細 鎵ц浠ヤ笅鍛戒护璁?
.gitattributes姘镐箙鎺ョ琛屽熬绗︼紝姝ゅ悗浠讳綍鏈哄櫒 clone 鍧囪嚜鍔ㄧ敓鏁堬細git config core.autocrlf false git add --renormalize . git commit -m "fix: normalize all line endings to LF" git push
2. 涓婁紶椤圭洰鍒版湇鍔″櫒
灏?game-docker 鐩綍涓婁紶鍒版湇鍔″櫒 /opt/youle/ 涓嬶細
# 鎺ㄨ崘锛氫娇鐢?sync.ps1锛坱ar 鍘嬬缉鍗曡繛鎺ワ紝姣?scp -r 蹇害 10-50 鍊嶏級
# 棣栨閮ㄧ讲鐢?full 妯″紡锛屼笂浼犲叏閮ㄦ枃浠讹紙绾?10 MB 鍘嬬缉鍖咃級
.\sync.ps1 -Mode full
# 鏃ュ父浠g爜鏇存柊鐢?app 妯″紡锛堟帓闄ゆ枃妗?娴嬭瘯锛岀害 7 MB锛?
.\sync.ps1
# 浠呮洿鏂?Docker 閰嶇疆鏂囦欢锛坉ocker-compose.yml銆乨eploy.sh 绛夛紝涓嶅埌 1 MB锛?
.\sync.ps1 -Mode config
*鍓嶆彁锛? 宸插畬鎴愭楠?0 鐨?SSH 瀵嗛挜璁よ瘉閰嶇疆锛屽惁鍒?
sync.ps1浼氬弽澶嶅脊瀵嗙爜鎻愮ず銆?
sync.ps1 浼氳嚜鍔ㄥ湪鏈嶅姟鍣ㄤ笂鍒涘缓 /opt/youle/game-docker/ 鐩綍锛堝涓嶅瓨鍦級銆?
濡備笉浣跨敤 sync.ps1锛屼篃鍙墜鍔ㄤ笂浼狅細
# 浠?Git 浠撳簱鎷夊彇
ssh root@your-server-ip
mkdir -p /opt/youle
cd /opt/youle
git clone <浠撳簱鍦板潃> game-docker
涓婁紶鍚庢湇鍔″櫒涓婄殑鐩綍缁撴瀯锛?
/opt/youle/game-docker/
鈹溾攢鈹€ .env.example
鈹溾攢鈹€ docker-compose.yml
鈹溾攢鈹€ deploy.sh
鈹溾攢鈹€ init-ssl.sh
鈹溾攢鈹€ api/
鈹溾攢鈹€ dlweb/
鈹溾攢鈹€ wxserver_daoqi/
鈹斺攢鈹€ docker/
3. 鍑嗗鐜鍙橀噺
cd /opt/youle/game-docker
cp .env.example .env
vim .env
蹇呴』淇敼鐨勫叧閿厤缃細
# 鐖跺煙鍚嶏紙涓変釜瀛愬煙鍚嶈嚜鍔ㄦ帹瀵硷紝鏃犻渶鍗曠嫭閰嶇疆锛?
# 灏嗚嚜鍔ㄧ敓鎴? api.<ROOT_DOMAIN> dlapi.<ROOT_DOMAIN>
ROOT_DOMAIN=yourdomain.com
# 鏁版嵁搴擄紙鍚勬湇鍔℃暟鎹簱杩炴帴锛?
API_DB_HOST=your-rds-host
API_DB_PASSWORD=your-password
DLWEB_DB_HOST=your-rds-host
DLWEB_DB_PASSWORD=your-password
# ... 鍏朵粬鏁版嵁搴撻厤缃?
# 寰俊閰嶇疆
WX_MINI_APPID=your-appid
WX_MINI_APPSECRET=your-secret
WX_PAY_MCHID=your-mchid
WX_PAY_KEY=your-key
# SSL 閭
SSL_EMAIL=your-email@example.com
4. 棣栨鐢宠 SSL 璇佷功
chmod +x deploy.sh init-ssl.sh
# 鍏堟祴璇曪紙涓嶇湡姝g敵璇凤紝楠岃瘉鍩熷悕瑙f瀽鏄惁姝g‘锛?
./deploy.sh ssl-init --dry-run
# 姝e紡鐢宠
./deploy.sh ssl-init
5. 鍚姩鎵€鏈夋湇鍔?
./deploy.sh up
鍚姩鍚庨獙璇侊細
# 鏌ョ湅鎵€鏈夊鍣ㄧ姸鎬?
./deploy.sh status
# 鏌ョ湅鐗瑰畾鏈嶅姟鏃ュ織
./deploy.sh logs api
./deploy.sh logs dlweb
./deploy.sh logs syncjob
./deploy.sh logs cronjob
6. 閮ㄧ讲鍛戒护閫熸煡
| 鍛戒护 | 璇存槑 |
|---|---|
./deploy.sh up |
鏋勫缓骞跺惎鍔ㄦ墍鏈夋湇鍔? |
./deploy.sh down |
鍋滄骞剁Щ闄ゆ墍鏈夊鍣? |
./deploy.sh restart |
閲嶅惎鎵€鏈夋湇鍔? |
./deploy.sh rebuild |
鏃犵紦瀛橀噸寤烘墍鏈夐暅鍍? |
./deploy.sh rebuild api |
鍙噸寤烘寚瀹氭湇鍔? |
./deploy.sh logs [service] |
鏌ョ湅鏃ュ織锛堟敮鎸?-f 瀹炴椂璺熻釜锛? |
./deploy.sh status |
鏌ョ湅瀹瑰櫒杩愯鐘舵€? |
./deploy.sh ssl-init |
棣栨鐢宠 SSL 璇佷功 |
./deploy.sh ssl-init --staging |
鐢?Let's Encrypt 娴嬭瘯鐜鐢宠 |
./deploy.sh ssl-renew |
鎵嬪姩缁璇佷功 |
./deploy.sh ssl-status |
鏌ョ湅璇佷功鍒版湡鏃堕棿 |
瀹氭椂浠诲姟璇存槑
Docker 閮ㄧ讲鍖呭惈涓や釜瀹氭椂浠诲姟瀹瑰櫒锛屾浛浠e師 Windows 鐜鐨?HttpRequestService.exe 鍜?autorun.cmd銆?
syncjob 鈥?瀹炴椂鍚屾浠诲姟
*鏇夸唬锛? Windows HttpRequestService.exe锛堥€氳繃 HttpRequest.exe.json 閰嶇疆锛?
*浣滅敤锛? 姣?30 绉?POST 璇锋眰 dlweb/ext/Synchronize.php锛屼粠娓告垙鏁版嵁搴?ct_user_process_log 琛ㄦ秷璐规湭澶勭悊鏃ュ織锛屽皢鐜╁/浠g悊鏁版嵁鍚屾鍒颁唬鐞嗗悗鍙版暟鎹簱銆?
*杩愯鏂瑰紡锛? 閫氳繃 Docker 鍐呯綉鐩磋繛 http://dlweb/ext/Synchronize.php锛屼笉缁忚繃鍏綉鍩熷悕锛岄浂娴侀噺娑堣€椼€?
鍙厤缃」锛坄.env`锛夛細
# 杞闂撮殧锛堢锛夛紝榛樿 30
SYNC_INTERVAL=30
# 姣忔澶勭悊鐨勬棩蹇楁潯鏁帮紝榛樿 200
SYNC_PROCESSCOUNT=200
*鏌ョ湅鍚屾鏃ュ織锛?
./deploy.sh logs syncjob
# 鎴栧疄鏃舵煡鐪?
docker logs -f youle-syncjob
cronjob 鈥?姣忔棩瀹氭椂浠诲姟
*鏇夸唬锛? Windows 璁″垝浠诲姟璋冪敤鐨?tools-docker/autorun.cmd
*浣滅敤锛? 姣忔棩鍑屾櫒 4:00 鎵ц浠ヤ笅娴佺▼锛堜笌鍘?autorun.cmd 瀹屽叏涓€鑷达級锛?
| 姝ラ | 鍘?autorun.cmd | Docker cronjob |
|---|---|---|
| 1. 鍋滄鍚屾鏈嶅姟 | net stop HttpRequestService |
鍒涘缓 /shared/syncjob.pause 淇″彿鏂囦欢 |
| 2. 绛夊緟褰撳墠璇锋眰瀹屾垚 | 锛圵indows 鏈嶅姟绔嬪嵆鍋滄锛? | sleep 5 |
| 3. 鍚屾鎶ヨ〃鏁版嵁 | HttpRequest.exe POST SynchronizeReportData.php |
curl POST http://dlweb/ext/SynchronizeReportData.php |
| 4. 鎭㈠鍚屾鏈嶅姟 | net start HttpRequestService |
鍒犻櫎 /shared/syncjob.pause 淇″彿鏂囦欢 |
*鏆傚仠鏈哄埗锛?
syncjob鍜?cronjob閫氳繃鍏变韩 Docker volume锛坄shared-signal锛夐€氫俊銆俙cronjob鍒涘缓/shared/syncjob.pause鏂囦欢鏃讹紝syncjob浼氳嚜鍔ㄨ烦杩囪疆璇紝鎶ヨ〃鍚屾瀹屾垚鍚庡垹闄よ鏂囦欢鎭㈠銆?
鍙厤缃」锛坄.env`锛夛細
# cron 琛ㄨ揪寮忥紝榛樿鍑屾櫒 4:00
CRON_SCHEDULE=0 4 * * *
*淇敼鎵ц鏃堕棿绀轰緥锛?
# 鍑屾櫒 3:30 鎵ц
CRON_SCHEDULE=30 3 * * *
# 姣忓ぉ鍑屾櫒 2:00 鍜?14:00 鍚勬墽琛屼竴娆?
CRON_SCHEDULE=0 2,14 * * *
*鏌ョ湅鎵ц鏃ュ織锛?
./deploy.sh logs cronjob
# 鎴栧疄鏃舵煡鐪?
docker logs -f youle-cronjob
鎵嬪姩瑙﹀彂锛堟祴璇曠敤锛夛細
docker exec youle-cronjob /bin/sh /app/daily-task.sh
鐜鍙橀噺璇存槑
鎵€鏈夌‖缂栫爜鐨勫煙鍚嶃€佹暟鎹簱鍦板潃銆佸瘑閽ラ兘宸插閮ㄥ寲涓虹幆澧冨彉閲忋€?淇敼閰嶇疆涓嶅啀闇€瑕佹敼浠g爜锛屽彧闇€鏀?.env 鏂囦欢銆?
鍙橀噺鍒嗙粍鎬昏
| 鍙橀噺鍒嗙粍 | 璇存槑 |
|---|---|
API_DB_* |
娓告垙鏍稿績 API 鏁版嵁搴? |
DLWEB_DB_* |
浠g悊鍚庡彴涓诲簱 |
DLWEB_SLAVE_DB_* |
浠g悊鍚庡彴浠庡簱 |
EXT_GAME_DB_* |
澶栭儴娓告垙鏁版嵁搴擄紙Synchronize / SynchronizeReportData锛? |
EXT_GRADE_DB_* |
鎴樼哗鏁版嵁搴擄紙game.php锛? |
EXT_DEV_DB_* |
寮€鍙戞暟鎹簱锛圖EBUG 妯″紡锛? |
REDIS_* |
Redis 閰嶇疆 |
WX_MINI_* |
寰俊灏忕▼搴?AppID / Secret |
WX_OA_* |
寰俊鍏紬鍙?AppID / Secret |
WX_PAY_* |
寰俊鏀粯鍟嗘埛閰嶇疆 |
REMOTE_CONFIG_* |
杩滅▼閰嶇疆锛圙itee锛? |
ROOT_DOMAIN |
鐖跺煙鍚嶏紙鑷姩鎺ㄥ 3 涓瓙鍩熷悕 + 鎵€鏈夋淳鐢?URL锛? |
SITE_* |
PHP 鍚庣鍚勭珯鐐瑰煙鍚? |
DLWEB_*_URL |
鍓嶇 JS/HTML 纭紪鐮佸煙鍚嶆浛鎹? |
SYNC_INTERVAL / SYNC_PROCESSCOUNT |
syncjob 鍚屾鍙傛暟 |
CRON_SCHEDULE |
cronjob 鎵ц鏃堕棿 |
GAME_SERVER_QUERY_URL |
娓告垙鏈嶅姟鍣ㄦ煡璇㈠湴鍧€ |
INTERNAL_WHITELIST |
IP 鐧藉悕鍗曪紙閫楀彿鍒嗛殧锛? |
鍩熷悕閰嶇疆鍏崇郴
.env 閰嶇疆 鈹? 鑷姩鎺ㄥ缁撴灉
鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹尖攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
ROOT_DOMAIN 鈹? API_DOMAIN = api.<ROOT_DOMAIN> 鈫?Nginx 缃戠珯1锛堝惈 wxserver /wx/ 璺敱锛?
锛堝敮涓€蹇呭~锛? 鈹? DLWEB_DOMAIN = dlapi.<ROOT_DOMAIN> 鈫?Nginx 缃戠珯2
鈹? SITE_API_URL = https://api.<ROOT_DOMAIN>
鈹? SITE_PAY_NOTIFY_URL = https://api.<ROOT_DOMAIN>
鈹? SITE_OPEN_URL = http://open.<ROOT_DOMAIN>
鈹? DLWEB_DL_API_V3_URL = https://dlapi.<ROOT_DOMAIN>
鎺ㄥ鐢?
docker-compose.yml鐨?environment:鍧楀畬鎴愶紝瀹瑰櫒鍐呮墍鏈夋淳鐢熷彉閲忓潎鏃犻渶鎵嬪姩閰嶇疆銆傚瀛愬煙鍚嶄笉绗﹀悎<鍓嶇紑>.<ROOT_DOMAIN>瑙勫緥锛屽彲鍦?.env涓崟鐙鐩栧搴斿彉閲忋€?
鐜鍙橀噺鍔犺浇鏈哄埗
PHP 鏈嶅姟锛坋nv_config.php锛?
鎵€鏈?PHP 鏂囦欢閫氳繃 env($key, $default) 鍑芥暟璇诲彇閰嶇疆锛?
// 浼樺厛璇?OS 鐜鍙橀噺锛圖ocker 鍦烘櫙锛夛紝鍥為€€璇?.env 鏂囦欢
$host = env('API_DB_HOST', 'localhost');
鍔犺浇浼樺厛绾э細Docker 瀹瑰櫒鐜鍙橀噺锛坄docker-compose env_file锛? .env` 鏂囦欢 > 浠g爜榛樿鍊笺€?
Node.js 鏈嶅姟锛坵xserver_daoqi锛?
鐩存帴浣跨敤 process.env.VARIABLE_NAME锛岀敱 docker-compose env_file 娉ㄥ叆銆?
鍓嶇 JS / HTML
鍓嶇闈欐€佹枃浠舵棤娉曡鍙栫幆澧冨彉閲忥紝閫氳繃 Docker entrypoint 鑴氭湰鍦ㄥ鍣ㄥ惎鍔ㄦ椂鐢?sed 鏇挎崲纭紪鐮佸煙鍚嶏細
docker/api/docker-entrypoint.sh鈥?鏇挎崲 API 鏈嶅姟涓殑 JS 鏂囦欢docker/dlweb/docker-entrypoint.sh鈥?鏇挎崲 DLWEB 鏈嶅姟涓殑 30+ 涓?JS/HTML 鏂囦欢
Nginx 鍩熷悕娉ㄥ叆
default.conf.template 浣跨敤 ${API_DOMAIN} / ${DLWEB_DOMAIN} 鍗犱綅绗︼紝Nginx 瀹瑰櫒鍚姩鏃堕€氳繃 envsubst 鑷姩鏇挎崲銆倃xserver 涓嶇嫭绔嬪崰鐢ㄥ煙鍚嶏紝閫氳繃 api.xxx/wx/* 璺敱鎺ュ叆銆?
SSL 璇佷功绠$悊
浣跨敤 Let's Encrypt 鍏嶈垂璇佷功锛岀敱 certbot 瀹瑰櫒鑷姩绠$悊銆?
# 棣栨鐢宠锛堝繀椤诲厛纭繚鍩熷悕宸茶В鏋愶級
./deploy.sh ssl-init
# 鐢ㄦ祴璇曠幆澧冮獙璇侊紙涓嶆秷鑰楃敵璇烽檺棰濓級
./deploy.sh ssl-init --staging
# 鎵嬪姩缁
./deploy.sh ssl-renew
# 鏌ョ湅璇佷功鐘舵€?
./deploy.sh ssl-status
certbot 瀹瑰櫒姣?12 灏忔椂鑷姩妫€鏌ョ画绛撅紝璇佷功鍒版湡鍓?30 澶╄嚜鍔ㄦ洿鏂帮紝鏃犻渶浜哄伐骞查銆?
鏁版嵁鎸佷箙鍖?
浠ヤ笅 Docker volume 鐢ㄤ簬鎸佷箙鍖栧瓨鍌細
| Volume | 鎸傝浇鐐? | 璇存槑 |
|---|---|---|
api-logs |
/var/www/html/logs | API 鏈嶅姟鏃ュ織 |
api-source-logs |
/var/www/html/source/logs | API source 妯″潡鏃ュ織 |
dlweb-logs |
/var/www/html/api/logs | DLWEB 鏈嶅姟鏃ュ織 |
dlweb-debug |
/var/www/html/api/ext/debug | DLWEB 鍚屾/鎶ヨ〃璋冭瘯鏃ュ織 |
redis-data |
/data | Redis 鎸佷箙鍖栨暟鎹? |
shared-signal |
/shared | syncjob 鈫?cronjob 鏆傚仠淇″彿鏂囦欢 |
certbot-webroot |
/var/www/certbot | ACME 鍩熷悕楠岃瘉鏂囦欢 |
certbot-certs |
/etc/letsencrypt | SSL 璇佷功鏂囦欢 |
涓庡師鐗堬紙Windows 閮ㄧ讲锛夌殑鍖哄埆
| 椤圭洰 | 鍘熺増 Windows | Docker 鐗? |
|---|---|---|
| 鐜 | Windows + Apache/XAMPP + Node.js | Docker 瀹瑰櫒鍖? |
| 閰嶇疆鏂瑰紡 | 纭紪鐮佸湪 PHP/JS/HTML 涓? | 缁熶竴 .env 鏂囦欢 |
| 鍩熷悕鍒囨崲 | 闇€鏀?30+ 涓枃浠? | 鍙敼 .env 鐨?3 涓煙鍚嶅彉閲? |
| 鏁版嵁搴撳瘑鐮? | 鏄庢枃鏁e竷鍦ㄥ涓厤缃枃浠? | 闆嗕腑鍦?.env锛堜笉杩涚増鏈簱锛? |
| SSL | 鎵嬪姩鐢宠/閮ㄧ讲璇佷功 | certbot 鑷姩鐢宠 + 12h 鑷姩缁 |
| Synchronize 杞 | HttpRequestService.exe锛圵indows 鏈嶅姟锛? |
syncjob 瀹瑰櫒锛圓lpine + curl锛? |
| 姣忔棩瀹氭椂浠诲姟 | Windows 璁″垝浠诲姟 鈫?autorun.cmd |
cronjob 瀹瑰櫒锛圓lpine crond锛? |
| 鍐呯綉璇锋眰 | localhost:80锛堝悓鏈?Apache锛? |
Docker 鍐呯綉 http://dlweb锛堥浂鍏綉娴侀噺锛? |
| PHP 鐜鍙橀噺 | env_config.php env() 鍑芥暟 |
env() 浼樺厛璇诲鍣ㄧ幆澧冨彉閲忥紝鍥為€€ .env 鏂囦欢 |
| 寰俊鏀粯閰嶇疆 | 纭紪鐮佸湪 WxPay.Config.php |
define() + class const锛岀敱 env() 鍔ㄦ€佽鍙? |
| 娓告垙鏈嶅姟鍣ㄥ垪琛? | 纭紪鐮佸湪 game.config.php |
鏀寔澶栭儴 JSON 鏂囦欢瑕嗙洊锛坄GAME_SERVERS_CONFIG_FILE`锛? |
甯歌杩愮淮鎿嶄綔
鍦烘櫙涓€锛氭洿鎹㈠煙鍚?
褰撻渶瑕佸皢鏈嶅姟杩佺Щ鍒版柊鍩熷悕鏃讹紙渚嬪 daoqijuyou.cn 鈫?newdomain.com锛夛紝鍙渶鏀逛竴涓彉閲忥細
1. 淇敼 .env 涓殑 ROOT_DOMAIN
vim .env
# 鏀规垚鏂扮埗鍩熷悕锛屼笁涓瓙鍩熷悕鑷姩璺熼殢
ROOT_DOMAIN=newdomain.com
docker-compose.yml 灏嗚嚜鍔ㄦ帹瀵硷細
| 鎺ㄥ鍙橀噺 | 缁撴灉 |
|---|---|
API_DOMAIN |
api.newdomain.com |
DLWEB_DOMAIN |
dlapi.newdomain.com |
SITE_API_URL |
https://api.newdomain.com |
SITE_PAY_NOTIFY_URL |
https://api.newdomain.com |
SITE_OPEN_URL |
http://open.newdomain.com |
DLWEB_DL_API_V3_URL |
https://dlapi.newdomain.com |
**瀛愬煙鍚嶄笉绗﹀悎鏍囧噯瑙勫緥鏃?*锛堝浣跨敤瀹屽叏涓嶅悓鐨勫墠缂€锛夛紝鍦?
.env涓崟鐙鐩栧搴斿彉閲忓嵆鍙紝浼樺厛绾ч珮浜庤嚜鍔ㄦ帹瀵硷細DLWEB_DOMAIN=dl-manage.newdomain.com # 瑕嗙洊鍗曚釜瀛愬煙鍚?
鍏朵粬鐙珛 URL 鍙橀噺锛坄DLWEB_SETTLE_URL
銆乣DLWEB_PROXY_URL銆乣QQ_CALLBACK_URL绛夛級浠嶉渶鍦?.env涓墜鍔ㄩ厤缃紝璇﹁.env.example` 涓殑娉ㄩ噴銆?
2. DNS 瑙f瀽
纭繚鏂板煙鍚嶅凡鎸囧悜鏈嶅姟鍣?IP锛?
# 楠岃瘉 DNS 瑙f瀽
nslookup api.newdomain.com
nslookup dlapi.newdomain.com
3. 閲嶆柊鐢宠 SSL 璇佷功
# 娴嬭瘯楠岃瘉锛堜笉娑堣€楃敵璇烽檺棰濓級
./deploy.sh ssl-init --staging
# 姝e紡鐢宠
./deploy.sh ssl-init
*4. 閲嶅惎鎵€鏈夋湇鍔?
./deploy.sh restart
閲嶅惎鏃朵細鑷姩瀹屾垚锛?
- Nginx 浣跨敤鏂板煙鍚嶇殑
server_name鍜?SSL 璇佷功 docker-entrypoint.sh鐢ㄦ柊鍩熷悕鏇挎崲 JS/HTML 涓殑纭紪鐮?URL- PHP
env()璇诲彇鏂扮殑鐜鍙橀噺鍊?
5. 鏇存柊寰俊鍚庡彴閰嶇疆
鏇存崲鍩熷悕鍚庯紝蹇呴』鍚屾鏇存柊寰俊涓変釜鍚庡彴鐨勫煙鍚嶇櫧鍚嶅崟锛屽惁鍒欏搴斿姛鑳戒細鐩存帴鎶ラ敊鎴栭潤榛樺け璐ャ€?
*鍏抽敭璺敱璇存槑锛? Nginx 鍦?
api.newdomain.com涓婇厤缃簡/wx/鍓嶇紑璺敱鈥斺€斾互/wx/寮€澶寸殑璇锋眰浼氳鍙嶅悜浠g悊鍒?wxserver锛圢ode.js锛夛紝鍏朵綑璇锋眰浠嶇敱 PHP API 澶勭悊銆倃xserver 鎵€鏈夋帴鍙o紙鍖呮嫭灏忕▼搴忕櫥褰曘€佸叕浼楀彿 OAuth锛夊潎閫氳繃api.newdomain.com/wx/*璁块棶銆?
5.1 寰俊灏忕▼搴忓悗鍙?
*鍏ュ彛锛? mp.weixin.qq.com 鈫?寮€鍙?鈫?寮€鍙戠鐞?鈫?寮€鍙戣缃?鈫?鏈嶅姟鍣ㄥ煙鍚?
| 閰嶇疆椤? | 浣滅敤 | 鏂板€? | 涓嶆洿鏂版椂鐨勭幇璞? |
|---|---|---|---|
| request 鍚堟硶鍩熷悕 | 灏忕▼搴忚皟鐢?wx.request() 璇锋眰 wxserver 鍚庣鎺ュ彛 |
https://api.newdomain.com |
wx.request 鐩存帴鎶?invalid url锛屾墍鏈夌綉缁滆姹傚け璐? |
| 涓氬姟鍩熷悕 | 灏忕▼搴?<web-view> 缁勪欢鍔犺浇鍏紬鍙锋巿鏉冮〉锛堣幏鍙栨案涔呭ご鍍忔祦绋嬶級 |
api.newdomain.com |
鎵撳紑 web-view 鏃舵彁绀?涓嶅湪涓氬姟鍩熷悕鍒楄〃涓?锛屾巿鏉冮〉鏃犳硶鍔犺浇 |
*娉ㄦ剰锛? 灏忕▼搴忓煙鍚嶉厤缃瘡鏈堝彧鑳戒慨鏀?5 娆★紝涓旀瘡椤瑰煙鍚嶅繀椤诲凡澶囨骞跺惎鐢?HTTPS銆?
5.2 寰俊鍏紬鍙峰悗鍙?
*鍏ュ彛锛? mp.weixin.qq.com 鈫?璁剧疆涓庡紑鍙?鈫?鍏紬鍙疯缃?鈫?鍔熻兘璁剧疆
鈶?涓氬姟鍩熷悕
| 閰嶇疆鍊? | 鐢ㄩ€? |
|---|---|
api.newdomain.com |
鍦ㄥ叕浼楀彿鍐呮墦寮€鐨勭綉椤垫墍鍦ㄥ煙鍚? |
鐢ㄦ埛鍦ㄥ井淇″唴缃祻瑙堝櫒涓墦寮€鐨勬父鎴忔敮浠橀〉锛坄api.newdomain.com`锛夊繀椤诲湪涓氬姟鍩熷悕鍒楄〃鍐咃紝鍚﹀垯椤甸潰浼氳鎻愮ず"鍩熷悕涓嶅悎娉?鎴栨棤娉曟甯歌闂€?
*楠岃瘉鏂囦欢锛? 娣诲姞涓氬姟鍩熷悕鏃讹紝寰俊瑕佹眰鍦ㄨ鍩熷悕鏍圭洰褰曟斁缃?
.txt楠岃瘉鏂囦欢銆傚皢寰俊鎻愪緵鐨勬枃浠讹紙濡?MP_verify_xxx.txt锛夋斁鍏?api/鏍圭洰褰曪紝鐒跺悗./deploy.sh rebuild api銆?
*鈶?缃戦〉鎺堟潈鍩熷悕锛堟渶閲嶈锛?
| 閰嶇疆鍊? | 鐢ㄩ€? |
|---|---|
api.newdomain.com |
鍏紬鍙?OAuth2 鎺堟潈鍥炶皟鍩熷悕 |
*涓轰粈涔堟槸 api.newdomain.com锛?
灏忕▼搴忓唴宓?web-view 璺宠浆鍒?https://api.newdomain.com/wx/auth/oa/login锛孨ginx /wx/ 璺敱灏嗘璇锋眰鍙嶅悜浠g悊鍒?wxserver 鐨?/auth/oa/login锛寃xserver 鍐嶆妸鐢ㄦ埛閲嶅畾鍚戝埌寰俊鎺堟潈椤碉紝redirect_uri 涓?https://api.newdomain.com/wx/auth/oa/callback锛堥€氳繃 WX_OA_REDIRECT_DOMAIN 鐜鍙橀噺鎺у埗锛夈€傚井淇¤姹?redirect_uri 鐨勫煙鍚嶅繀椤诲湪鍏紬鍙峰悗鍙扮殑鎺堟潈鍩熷悕鍒楄〃鍐咃紝鎵€浠ュ~ api.newdomain.com銆?
涓嶆洿鏂扮殑鍚庢灉锛氭巿鏉冭烦杞椂寰俊鐩存帴鎷︽埅锛屾樉绀?"redirect_uri 鍩熷悕涓庡悗鍙伴厤缃笉涓€鑷? 閿欒锛屾案涔呭ご鍍忚幏鍙栧姛鑳藉畬鍏ㄤ笉鍙敤銆?
鈿狅笍 杩滅▼閰嶇疆涔熼渶瑕佸悓姝ヤ慨鏀癸細
WX_OA_REDIRECT_DOMAIN鏈厤缃椂锛寃xserver 浼氫粠杩滅▼閰嶇疆鏂囦欢璇诲彇minipro_api_urlkey 浣滀负鍥炶皟鍩熷悕锛堣wxserver_daoqi/config/index.js锛夈€傚嵆浣?.env涓凡姝g‘濉啓WX_OA_REDIRECT_DOMAIN锛屼粛寤鸿鍚屾鏇存柊杩滅▼閰嶇疆锛岄伩鍏嶇幆澧冨彉閲忛厤缃涪澶辨椂鍑虹幇闈欓粯鍥為€€鑷虫棫鍩熷悕鐨勯棶棰樸€?杩滅▼閰嶇疆鏂囦欢鍦板潃锛圙itee Raw锛夛細
https://gitee.com/daoqijuyou/config/raw/master/update_jsonv2.txt
鎵惧埌minipro_api_url瀛楁锛屾洿鏂板€间负锛歚api.newdomain.com/wx锛堜笉鍚?https://`锛寃xserver 浼氳嚜鍔ㄨˉ鍏咃級
*楠岃瘉鏂囦欢锛? 娣诲姞鎺堟潈鍩熷悕鏃讹紝寰俊瑕佹眰鍦ㄨ鍩熷悕鏍圭洰褰曟斁缃竴涓?
.txt楠岃瘉鏂囦欢銆傚皢寰俊鎻愪緵鐨勯獙璇佹枃浠讹紙濡?MP_verify_xxx.txt锛夌洿鎺ユ斁鍏?api/鏍圭洰褰曪紝鐒跺悗閲嶅缓 api 闀滃儚浣垮叾鐢熸晥锛?./deploy.sh rebuild api
鈶?JS 鎺ュ彛瀹夊叏鍩熷悕
| 閰嶇疆鍊? | 鐢ㄩ€? |
|---|---|
api.newdomain.com |
寰俊 JS-SDK锛坄wx.config()`锛夐〉闈㈡墍鍦ㄥ煙鍚? |
*涓轰粈涔堟槸 api.newdomain.com锛?
API 鏈嶅姟锛坄youle-api锛夌殑 PHP 椤甸潰浣跨敤 jsapi_ticket 绛惧悕锛岀敓鎴?wx.config() 鍙傛暟锛屼娇鐢ㄥ井淇?JS-SDK 璋冭捣鏀粯锛坄WeixinJSBridge.invoke(getBrandWCPayRequest)锛夈€傚井淇¤姹傝皟鐢?JS-SDK 鐨勯〉闈㈡墍鍦ㄥ煙鍚嶅繀椤诲湪瀹夊叏鍩熷悕鍒楄〃鍐呫€?
涓嶆洿鏂扮殑鍚庢灉锛歚wx.config()` 绛惧悕楠岃瘉澶辫触锛屽井淇℃敮浠樻寜閽棤娉曞敜璧锋敮浠樼晫闈紝鐢ㄦ埛鐐瑰嚮鏀粯鏃犲弽搴斻€?
5.3 寰俊鏀粯鍟嗘埛鍚庡彴
*鍏ュ彛锛? pay.weixin.qq.com 鈫?璐︽埛涓績 鈫?鍟嗘埛淇℃伅 鈫?鏀粯閰嶇疆 鈫?JSAPI 鏀粯鎺堟潈鐩綍
| 閰嶇疆鍊? | 鐢ㄩ€? |
|---|---|
https://api.newdomain.com/ |
JSAPI 鏀粯椤甸潰鎵€鍦ㄧ洰褰曪紙蹇呴』鍖呭惈鏈熬鏂滄潬锛? |
*涓轰粈涔堟槸 api.newdomain.com锛?
JSAPI 鏀粯椤甸潰锛坄api/source/apis/pay.php锛夎繍琛屽湪 api.newdomain.com鍩熷悕涓嬶紝缁熶竴涓嬪崟鏃剁殑notify_url锛堟敮浠樺洖璋冮€氱煡鍦板潃锛変篃鐢?SITE_PAY_NOTIFY_URL锛堥粯璁ゅ€?https://api.newdomain.com`锛夋寚瀹氥€傚井淇℃敮浠樿姹傚彂璧锋敮浠樼殑椤甸潰鍩熷悕蹇呴』鍦ㄦ巿鏉冪洰褰曠櫧鍚嶅崟鍐呫€?
涓嶆洿鏂扮殑鍚庢灉锛氫笅鍗曟椂鎻愮ず"褰撳墠URL鏈敞鍐?锛孞SAPI 鏀粯褰诲簳鏃犳硶浣跨敤銆?
閰嶇疆娓呭崟姹囨€?
| 骞冲彴 | 鍏ュ彛椤甸潰 | 閰嶇疆椤? | 濉啓鍊? |
|---|---|---|---|
| *寰俊灏忕▼搴忓悗鍙? | 寮€鍙?鈫?寮€鍙戠鐞?鈫?寮€鍙戣缃?鈫?鏈嶅姟鍣ㄥ煙鍚? | request 鍚堟硶鍩熷悕 | https://api.newdomain.com |
| *寰俊灏忕▼搴忓悗鍙? | 寮€鍙?鈫?寮€鍙戠鐞?鈫?寮€鍙戣缃?鈫?鏈嶅姟鍣ㄥ煙鍚? | 涓氬姟鍩熷悕 | api.newdomain.com |
| *寰俊鍏紬鍙峰悗鍙? | 璁剧疆涓庡紑鍙?鈫?鍏紬鍙疯缃?鈫?鍔熻兘璁剧疆 | 涓氬姟鍩熷悕 | api.newdomain.com |
| *寰俊鍏紬鍙峰悗鍙? | 璁剧疆涓庡紑鍙?鈫?鍏紬鍙疯缃?鈫?鍔熻兘璁剧疆 | 缃戦〉鎺堟潈鍩熷悕 | api.newdomain.com |
| *寰俊鍏紬鍙峰悗鍙? | 璁剧疆涓庡紑鍙?鈫?鍏紬鍙疯缃?鈫?鍔熻兘璁剧疆 | JS 鎺ュ彛瀹夊叏鍩熷悕 | api.newdomain.com |
| 寰俊鏀粯鍟嗘埛鍚庡彴 | 璐︽埛涓績 鈫?鍟嗘埛淇℃伅 鈫?鏀粯閰嶇疆 | JSAPI 鏀粯鎺堟潈鐩綍 | https://api.newdomain.com/ |
鍦烘櫙浜岋細鏇存崲鏁版嵁搴撳湴鍧€
褰撴暟鎹簱瀹炰緥杩佺Щ锛堜緥濡?RDS 鍗囩骇銆佸垏鎹㈠尯鍩燂級鏃讹細
*1. 淇敼 .env 涓搴旂殑鏁版嵁搴撳彉閲?
vim .env
鎸夋暟鎹簱鍒嗙粍锛?
| 鏁版嵁搴? | 闇€淇敼鐨勫彉閲? | 浣跨敤鑰? |
|---|---|---|
| API 涓诲簱 | API_DB_HOST, API_DB_PORT, API_DB_USER, API_DB_PASSWORD |
api 鏈嶅姟 |
| 浠g悊鍚庡彴涓诲簱 | DLWEB_DB_HOST, DLWEB_DB_PORT, DLWEB_DB_USER, DLWEB_DB_PASSWORD |
dlweb 鏈嶅姟 |
| 浠g悊鍚庡彴浠庡簱 | DLWEB_SLAVE_DB_HOST, DLWEB_SLAVE_DB_PORT, DLWEB_SLAVE_DB_USER, DLWEB_SLAVE_DB_PASSWORD |
dlweb 璇绘搷浣? |
| 澶栭儴娓告垙搴? | EXT_GAME_DB_HOST, EXT_GAME_DB_PORT, EXT_GAME_DB_USER, EXT_GAME_DB_PASSWORD |
Synchronize.php / SynchronizeReportData.php |
| 鎴樼哗搴? | EXT_GRADE_DB_HOST, EXT_GRADE_DB_PORT, EXT_GRADE_DB_USER, EXT_GRADE_DB_PASSWORD |
game.php 鏌ヨ鎴樼哗 |
| 寮€鍙戝簱 | EXT_DEV_DB_HOST, EXT_DEV_DB_PORT, EXT_DEV_DB_USER, EXT_DEV_DB_PASSWORD |
DEBUG 妯″紡 |
2. 閲嶅惎鍙楀奖鍝嶇殑鏈嶅姟
# 濡傛灉鍙敼浜?API 鏁版嵁搴?
docker compose restart api
# 濡傛灉鍙敼浜?DLWEB 鏁版嵁搴?
docker compose restart dlweb
# 濡傛灉鏀逛簡澶栭儴娓告垙搴擄紙褰卞搷鍚屾浠诲姟锛?
docker compose restart dlweb syncjob cronjob
# 濡傛灉鏀逛簡澶氫釜锛岀洿鎺ュ叏閮ㄩ噸鍚?
./deploy.sh restart
3. 楠岃瘉杩炴帴
# 鏌ョ湅 API 鏃ュ織鏄惁鏈夋暟鎹簱杩炴帴閿欒
docker logs --tail 20 youle-api
# 鏌ョ湅 DLWEB 鏃ュ織
docker logs --tail 20 youle-dlweb
# 鏌ョ湅鍚屾浠诲姟鏄惁姝e父
docker logs --tail 10 youle-syncjob
*鎻愮ず锛? 濡傛灉鏂版暟鎹簱鏈?IP 鐧藉悕鍗曢檺鍒讹紝闇€瑕佸皢 Docker 瀹夸富鏈虹殑鍏綉 IP 鍔犲叆 RDS 鐧藉悕鍗曘€?
鍦烘櫙涓夛細鏇存崲鏈嶅姟鍣紙鏁翠綋杩佺Щ锛?
灏嗘暣涓?Docker 閮ㄧ讲杩佺Щ鍒版柊鏈嶅姟鍣細
1. 鎵撳寘椤圭洰鏂囦欢
# 鍦ㄦ棫鏈嶅姟鍣ㄤ笂
cd /path/to/game-docker
# 鎺掗櫎涓嶅繀瑕佹枃浠?
tar czf game-docker.tar.gz --exclude='.env' --exclude='game/' .
*2. 浼犺緭鍒版柊鏈嶅姟鍣?
scp game-docker.tar.gz newserver:/opt/
3. 鍦ㄦ柊鏈嶅姟鍣ㄤ笂閮ㄧ讲
cd /opt
tar xzf game-docker.tar.gz -C game-docker
cd game-docker
# 澶嶅埗骞朵慨鏀归厤缃紙鏂版湇鍔″櫒 IP 鍙兘涓嶅悓锛?
cp .env.example .env
vim .env
*4. 纭淇敼椤?
| 妫€鏌ラ」 | 鏄惁闇€瑕佹敼 | 璇存槑 |
|---|---|---|
| 鍩熷悕锛坄*_DOMAIN`锛? | 鍩熷悕涓嶅彉鍒欎笉鏀? | DNS 闇€鎸囧悜鏂版湇鍔″櫒 IP |
| 鏁版嵁搴撳湴鍧€锛坄*_DB_HOST`锛? | 閫氬父涓嶆敼 | RDS 鍦板潃涓嶅彉锛屼絾闇€灏嗘柊鏈嶅姟鍣?IP 鍔犲叆鐧藉悕鍗? |
| Redis 鍦板潃 | 涓嶆敼 | Docker 鍐呯疆 Redis锛岄殢瀹瑰櫒杩佺Щ |
| 寰俊/鏀粯閰嶇疆 | 涓嶆敼 | AppID/Secret 涓庢湇鍔″櫒鏃犲叧 |
| 娓告垙鏈嶅姟鍣ㄦ煡璇㈠湴鍧€ | 鐪嬫儏鍐? | GAME_SERVER_QUERY_URL 濡傛灉娓告垙鏈嶅姟鍣ㄤ篃杩佺Щ浜嗛渶鏀? |
| IP 鐧藉悕鍗? | 鍙兘闇€鏀? | INTERNAL_WHITELIST 鍔犲叆鏂?IP |
5. 鍚姩鏈嶅姟
chmod +x deploy.sh init-ssl.sh
# 鍩熷悕鏈彉锛欴NS 鏀规寚鍚戝悗鐩存帴鍚姩
./deploy.sh ssl-init # 鏂版湇鍔″櫒闇€閲嶆柊鐢宠璇佷功
./deploy.sh up
# 鍩熷悕鍙樹簡锛氬弬鐓с€屽満鏅竴锛氭洿鎹㈠煙鍚嶃€?
*6. 楠岃瘉鎵€鏈夋湇鍔?
# 瀹瑰櫒鐘舵€?
./deploy.sh status
# 鍚勬湇鍔″仴搴锋鏌?
curl -k https://api.yourdomain.com/
curl -k https://dlapi.yourdomain.com/
curl -k https://api.yourdomain.com/wx/api/login # wxserver 鍋ュ悍妫€鏌?
# 瀹氭椂浠诲姟杩愯姝e父
docker logs --tail 5 youle-syncjob
docker logs --tail 5 youle-cronjob
鍦烘櫙鍥涳細浠呮洿鏀?Redis 閰嶇疆
vim .env
# 淇敼浠ヤ笅鍙橀噺锛?
# REDIS_HOST=new-redis-host
# REDIS_PORT=6379
# REDIS_PASSWORD=new-password
# 閲嶅惎鍙楀奖鍝嶇殑鏈嶅姟
docker compose restart dlweb redis
*娉ㄦ剰锛? 濡傛灉浣跨敤 Docker 鍐呯疆 Redis锛堥粯璁わ級锛宍REDIS_HOST
搴旇涓?redis锛圖ocker 鏈嶅姟鍚嶏級锛屼笉鏄?localhost`銆?
鍦烘櫙浜旓細鍗曠嫭寮€鍚?/ 鍏抽棴鐗瑰畾鏈嶅姟
鎵€鏈夋湇鍔″潎鍙嫭绔嬪惎鍋滐紝涓嶅奖鍝嶅叾浠栬繍琛屼腑鐨勫鍣ㄣ€?
鏈嶅姟娓呭崟涓庝緷璧栧叧绯?
| 鏈嶅姟鍚? | 瀹瑰櫒鍚? | 璇存槑 | 渚濊禆 |
|---|---|---|---|
nginx |
youle-nginx |
鍙嶅悜浠g悊 + SSL | api / dlweb / wxserver |
api |
youle-api |
娓告垙鏍稿績 API | 鈥? |
dlweb |
youle-dlweb |
浠g悊绠$悊鍚庡彴 | redis |
wxserver |
youle-wxserver |
寰俊灏忕▼搴忓悗绔? | 鈥? |
syncjob |
youle-syncjob |
姣?30s 鏁版嵁鍚屾 | dlweb锛堝唴缃戯級 |
cronjob |
youle-cronjob |
姣忔棩鍑屾櫒鎶ヨ〃浠诲姟 | dlweb锛堝唴缃戯級 |
redis |
youle-redis |
缂撳瓨 | 鈥? |
certbot |
youle-certbot |
璇佷功鑷姩缁 | 鈥? |
寮€鍚崟涓湇鍔?
cd /opt/youle/game-docker
# 鍚姩鏌愪釜鏈嶅姟锛堣嫢闀滃儚涓嶅瓨鍦ㄤ細鑷姩鏋勫缓锛?
docker compose up -d api
docker compose up -d dlweb
docker compose up -d wxserver
docker compose up -d syncjob
docker compose up -d cronjob
docker compose up -d redis
docker compose up -d nginx
docker compose up -d certbot
鍏抽棴鍗曚釜鏈嶅姟
# 鍋滄骞剁Щ闄ゅ鍣紙鏁版嵁 volume 涓嶅彈褰卞搷锛?
docker compose stop api
docker compose stop syncjob
docker compose stop cronjob
# 鎴栬€?stop + 绉婚櫎瀹瑰櫒锛堢瓑鏁堜簬 stop + rm锛?
docker compose rm -sf syncjob
*娉ㄦ剰锛?
stop鍙仠姝㈠鍣紝涓嶅垹闄わ紱rm -sf鍋滄骞跺垹闄ゅ鍣紙涓嬫up浼氶噸鏂板垱寤猴級銆備袱绉嶆柟寮忓潎涓嶄細涓㈠け鏁版嵁 volume銆?
甯歌鍦烘櫙
*涓存椂鍏抽棴鍚屾浠诲姟锛堢淮鎶ゆ暟鎹簱鏃讹級锛?
docker compose stop syncjob cronjob
# 缁存姢瀹屾垚鍚庢仮澶?
docker compose up -d syncjob cronjob
鍙噸寤哄苟閲嶅惎鏌愪釜涓氬姟鏈嶅姟锛堜唬鐮佹洿鏂板悗锛夛細
# 閲嶆柊鏋勫缓闀滃儚骞堕噸鍚紝鍏朵粬鏈嶅姟涓嶅彈褰卞搷
docker compose up -d --build api
docker compose up -d --build dlweb
docker compose up -d --build wxserver
*鍏抽棴 certbot 鑷姩缁锛堣皟璇曟湡闂撮伩鍏嶈姹傞鐜囬檺鍒讹級锛?
docker compose stop certbot
# 璋冭瘯瀹屾瘯鍚庢仮澶?
docker compose up -d certbot
浠呴噸鍚?nginx锛堜慨鏀归厤缃悗鐢熸晥锛夛細
docker compose restart nginx
# 鎴栫儹閲嶈浇锛堜笉涓柇杩炴帴锛?
docker exec youle-nginx nginx -s reload
鏌ョ湅鎵€鏈夋湇鍔″綋鍓嶇姸鎬侊細
docker compose ps
# 鎴?
./deploy.sh status
鎿嶄綔閫熸煡琛?
| 鍙樻洿鍐呭 | 淇敼 .env 涓殑鍙橀噺 |
閲嶅惎鍛戒护 | 棰濆鎿嶄綔 |
|---|---|---|---|
| 鏇存崲鍩熷悕 | ROOT_DOMAIN锛堝瓙鍩熷悕涓嶆爣鍑嗘椂鍗曠嫭瑕嗙洊锛? |
./deploy.sh ssl-init && ./deploy.sh restart |
DNS 瑙f瀽 + 寰俊鍚庡彴 |
| API 鏁版嵁搴? | API_DB_* |
docker compose restart api |
RDS 鐧藉悕鍗? |
| DLWEB 鏁版嵁搴? | DLWEB_DB_* |
docker compose restart dlweb |
RDS 鐧藉悕鍗? |
| 娓告垙鏁版嵁搴? | EXT_GAME_DB_* |
docker compose restart dlweb syncjob cronjob |
RDS 鐧藉悕鍗? |
| 鎴樼哗鏁版嵁搴? | EXT_GRADE_DB_* |
docker compose restart dlweb |
RDS 鐧藉悕鍗? |
| Redis | REDIS_* |
docker compose restart dlweb redis |
鈥? |
| 寰俊瀵嗛挜 | WX_* |
docker compose restart api dlweb wxserver |
寰俊鍚庡彴 |
| 鏁翠綋杩佺Щ | 瑙嗘儏鍐? | ./deploy.sh ssl-init && ./deploy.sh up |
DNS + RDS 鐧藉悕鍗? |
鍦烘櫙锛氫慨鏀规湰鍦版枃浠跺悗濡備綍鐢熸晥
涓嶅悓鏂囦欢鍦ㄩ暅鍍忎腑鐨勫鐞嗘柟寮忎笉鍚岋紝鍐冲畾浜嗘敼瀹屼唬鐮佸悗闇€瑕佹墽琛屽摢绉嶆搷浣溿€?
鏂囦欢 鈫?鎿嶄綔瀵圭収琛?
| 鏂囦欢璺緞 | 鎵€灞炲鍣? | 杞藉叆鏂瑰紡 | 淇敼鍚庨渶瑕佹墽琛岀殑鎿嶄綔 |
|---|---|---|---|
api/** |
youle-api |
COPY 杩涢暅鍍? |
./deploy.sh rebuild api 閲嶅缓闀滃儚 |
dlweb/** |
youle-dlweb |
COPY 杩涢暅鍍? |
./deploy.sh rebuild dlweb 閲嶅缓闀滃儚 |
wxserver_daoqi/** |
youle-wxserver |
COPY 杩涢暅鍍? |
./deploy.sh rebuild wxserver 閲嶅缓闀滃儚 |
env_config.php |
youle-api / youle-dlweb |
COPY 杩涢暅鍍? |
./deploy.sh rebuild api dlweb 閲嶅缓涓や釜闀滃儚 |
docker/api/Dockerfile |
youle-api |
鏋勫缓瀹氫箟 | ./deploy.sh rebuild api |
docker/api/docker-entrypoint.sh |
youle-api |
COPY 杩涢暅鍍? |
./deploy.sh rebuild api |
docker/dlweb/Dockerfile |
youle-dlweb |
鏋勫缓瀹氫箟 | ./deploy.sh rebuild dlweb |
docker/dlweb/docker-entrypoint.sh |
youle-dlweb |
COPY 杩涢暅鍍? |
./deploy.sh rebuild dlweb |
docker/wxserver/Dockerfile |
youle-wxserver |
鏋勫缓瀹氫箟 | ./deploy.sh rebuild wxserver |
docker/nginx/default.conf.template |
youle-nginx |
volume 鎸傝浇锛坄:ro`锛? | scp 涓婁紶 鈫?docker restart youle-nginx |
docker/nginx/ssl-params.conf |
youle-nginx |
volume 鎸傝浇锛坄:ro`锛? | scp 涓婁紶 鈫?docker restart youle-nginx |
docker/syncjob/sync.sh |
youle-syncjob |
volume 鎸傝浇锛坄:ro`锛? | scp 涓婁紶 鈫?docker restart youle-syncjob |
docker/cronjob/entrypoint.sh |
youle-cronjob |
volume 鎸傝浇锛坄:ro`锛? | scp 涓婁紶 鈫?docker restart youle-cronjob |
docker/cronjob/daily-task.sh |
youle-cronjob |
volume 鎸傝浇锛坄:ro`锛? | scp 涓婁紶 鈫?docker restart youle-cronjob |
docker-compose.yml |
鎵€鏈夊鍣? | compose 缂栨帓 | docker compose up -d锛堟湁鍙樺姩鐨勫鍣ㄨ嚜鍔ㄩ噸寤猴級 |
.env |
鎵€鏈夊鍣? | compose env_file |
docker compose up -d锛堥噸鏂版敞鍏ョ幆澧冨彉閲忥級 |
COPY vs 鎸傝浇鐨勫尯鍒細
- *
COPY杩涢暅鍍? 鈥?鏂囦欢琚墦杩?Docker 闀滃儚灞傦紝淇敼鍚庡繀椤婚噸鏂?build 鎵嶈兘鐢熸晥锛屽鍣ㄥ唴鐨勬枃浠舵槸闀滃儚鐨勫壇鏈?- volume 鎸傝浇 鈥?瀹瑰櫒鍚姩鏃剁洿鎺ユ寕杞藉涓绘満鏂囦欢锛屽彧闇€
scp浼犲埌鏈嶅姟鍣ㄥ悗閲嶅惎瀹瑰櫒鍗冲彲锛?鏃犻渶閲嶅缓闀滃儚*
鎿嶄綔鍛戒护閫熸煡
# 鈹€鈹€ 闇€瑕侀噸寤洪暅鍍忕殑鎿嶄綔锛堜慨鏀规簮鐮?Dockerfile/entrypoint 绛?COPY 鏂囦欢锛夆攢鈹€
# 閲嶅缓鍗曚釜鏈嶅姟锛堟棤缂撳瓨锛岀害 1-5 鍒嗛挓锛?
./deploy.sh rebuild api # 鍙噸寤?API
./deploy.sh rebuild dlweb # 鍙噸寤?DLWEB
./deploy.sh rebuild wxserver # 鍙噸寤?wxserver
./deploy.sh rebuild api dlweb # 鍚屾椂閲嶅缓澶氫釜
# 閲嶅缓鎵€鏈夋湇鍔?
./deploy.sh rebuild
# 鈹€鈹€ 鍙渶 scp + 閲嶅惎鐨勬搷浣滐紙淇敼 volume 鎸傝浇鏂囦欢锛岀绾х敓鏁堬級鈹€鈹€
# Nginx 閰嶇疆
scp docker/nginx/ssl-params.conf root@47.98.203.17:/opt/youle/game-docker/docker/nginx/ssl-params.conf
scp docker/nginx/default.conf.template root@47.98.203.17:/opt/youle/game-docker/docker/nginx/default.conf.template
ssh root@47.98.203.17 "docker restart youle-nginx"
# syncjob 鑴氭湰
scp docker/syncjob/sync.sh root@47.98.203.17:/opt/youle/game-docker/docker/syncjob/sync.sh
ssh root@47.98.203.17 "docker restart youle-syncjob"
# cronjob 鑴氭湰
scp docker/cronjob/entrypoint.sh root@47.98.203.17:/opt/youle/game-docker/docker/cronjob/entrypoint.sh
scp docker/cronjob/daily-task.sh root@47.98.203.17:/opt/youle/game-docker/docker/cronjob/daily-task.sh
ssh root@47.98.203.17 "docker restart youle-cronjob"
# 鈹€鈹€ .env / docker-compose.yml 鍙樻洿 鈹€鈹€
ssh root@47.98.203.17 "cd /opt/youle/game-docker && docker compose up -d"
# compose 浼氬姣旈厤缃樊寮傦紝鍙噸鍚湁鍙樻洿鐨勫鍣?
鍦烘櫙涓冿細鏌ョ湅鏃ュ織
鏈」鐩棩蹇楀垎涓轰袱绫伙細Docker 瀹瑰櫒鏍囧噯杈撳嚭鏃ュ織锛坄docker logs`锛夊拰涓氬姟璋冭瘯鏃ュ織锛堝啓鍏?Docker Volume 鐨勬枃浠讹級銆?
鏃ュ織浣嶇疆鎬昏
| 鏃ュ織绫诲瀷 | 鏉ユ簮瀹瑰櫒 | 鏌ョ湅鏂瑰紡 | 璇存槑 |
|---|---|---|---|
| Nginx 璁块棶/閿欒鏃ュ織 | youle-nginx |
docker logs |
HTTP 璇锋眰璁板綍銆丼SL 閿欒 |
| API Apache 閿欒鏃ュ織 | youle-api |
docker logs |
PHP Fatal Error銆丄pache 500 |
| API PHP 閿欒鏃ュ織 | youle-api |
docker logs |
PHP Warning/Notice锛堝啓鍏?Apache 閿欒娴侊級 |
| API 涓氬姟鏃ュ織 | youle-api |
Volume 鏂囦欢 | /var/www/html/logs/YYYY-MM-DD.log |
| API source 妯″潡鏃ュ織 | youle-api |
Volume 鏂囦欢 | /var/www/html/source/logs/ |
| DLWEB Apache 閿欒鏃ュ織 | youle-dlweb |
docker logs |
PHP Fatal Error銆丄pache 500 |
| DLWEB 涓氬姟鏃ュ織 | youle-dlweb |
Volume 鏂囦欢 | /var/www/html/api/logs/ |
| 鍚屾浠诲姟璋冭瘯鏃ュ織 | youle-dlweb |
Volume 鏂囦欢 | /var/www/html/api/ext/debug/synchronize/YYYY-MM-DD.log |
| 鎶ヨ〃鍚屾璋冭瘯鏃ュ織 | youle-dlweb |
Volume 鏂囦欢 | /var/www/html/api/ext/debug/SynchronizeReportData/YYYY-MM-DD.log |
| 鑷姩浠诲姟璋冭瘯鏃ュ織 | youle-dlweb |
Volume 鏂囦欢 | /var/www/html/api/ext/debug/autotask/YYYY-MM-DD.log |
| syncjob 杩愯鏃ュ織 | youle-syncjob |
docker logs |
curl 璇锋眰缁撴灉锛屾瘡 30s 涓€鏉? |
| cronjob 璋冨害鏃ュ織 | youle-cronjob |
docker logs |
cron 瑙﹀彂璁板綍 |
| wxserver 杩愯鏃ュ織 | youle-wxserver |
docker logs |
Node.js 鏍囧噯杈撳嚭 |
1. 鏌ョ湅瀹瑰櫒鏍囧噯杈撳嚭鏃ュ織锛坉ocker logs锛?
# 鏌ョ湅鏈€杩?50 琛岋紙蹇€熸瑙堬級
docker logs --tail 50 youle-nginx
docker logs --tail 50 youle-api
docker logs --tail 50 youle-dlweb
docker logs --tail 50 youle-syncjob
docker logs --tail 50 youle-cronjob
docker logs --tail 50 youle-wxserver
# 瀹炴椂璺熻釜鏃ュ織锛圕trl+C 閫€鍑猴級
docker logs -f youle-api
docker logs -f youle-syncjob
# 鏌ョ湅鏈€杩?100 琛屽苟瀹炴椂璺熻釜
docker logs --tail 100 -f youle-dlweb
# 鏌ョ湅甯︽椂闂存埑鐨勬棩蹇?
docker logs -t --tail 50 youle-nginx
# 鏌ョ湅鏌愭椂闂存涔嬪悗鐨勬棩蹇楋紙ISO 8601 鏍煎紡锛?
docker logs --since 2026-04-13T10:00:00 youle-api
docker logs --since 1h youle-syncjob # 鏈€杩?1 灏忔椂
*鎻愮ず锛?
docker logs鏌ョ湅鐨勬槸瀹瑰櫒鐨?stdout/stderr 杈撳嚭锛孭HP Fatal Error 鍜?Apache 閿欒鍧囦細鍑虹幇鍦ㄨ繖閲屻€?
2. 鏌ョ湅涓氬姟璋冭瘯鏃ュ織鏂囦欢锛圴olume 鏂囦欢锛?
涓氬姟璋冭瘯鏃ュ織鍐欏叆 Docker Volume锛屾寜鏃ユ湡鍒嗘枃浠讹紙YYYY-MM-DD.log锛夈€?
# --- API 涓氬姟鏃ュ織 ---
# 鍒楀嚭鎵€鏈夋棩蹇楁枃浠?
docker exec youle-api ls -lh /var/www/html/logs/
# 鏌ョ湅浠婂ぉ鐨?API 涓氬姟鏃ュ織锛堟湯灏?50 琛岋級
docker exec youle-api tail -50 /var/www/html/logs/$(date +%Y-%m-%d).log
# 瀹炴椂璺熻釜浠婂ぉ鐨?API 鏃ュ織
docker exec youle-api tail -f /var/www/html/logs/$(date +%Y-%m-%d).log
# 鏌ョ湅瀹屾暣鍐呭
docker exec youle-api cat /var/www/html/logs/$(date +%Y-%m-%d).log
# --- API source 妯″潡鏃ュ織 ---
docker exec youle-api ls -lhR /var/www/html/source/logs/
docker exec youle-api tail -50 /var/www/html/source/logs/$(date +%Y-%m-%d).log
# --- DLWEB 涓氬姟鏃ュ織 ---
# 鍒楀嚭鎵€鏈夋棩蹇楁枃浠?
docker exec youle-dlweb ls -lh /var/www/html/api/logs/
# 鏌ョ湅浠婂ぉ鐨?DLWEB 涓氬姟鏃ュ織
docker exec youle-dlweb tail -50 /var/www/html/api/logs/$(date +%Y-%m-%d).log
# --- 鍚屾浠诲姟璋冭瘯鏃ュ織锛圫ynchronize.php锛?--
# 鍒楀嚭鏃ュ織鏂囦欢
docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/synchronize/
# 鏌ョ湅浠婂ぉ鐨勫悓姝ユ棩蹇楋紙鏈€杩?50 琛岋級
docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log
# 瀹炴椂璺熻釜鍚屾鏃ュ織锛堟瘡 30s 鍒锋柊锛?
docker exec youle-dlweb tail -f /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log
# --- 鎶ヨ〃鍚屾璋冭瘯鏃ュ織锛圫ynchronizeReportData.php锛?--
docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/SynchronizeReportData/
docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/SynchronizeReportData/$(date +%Y-%m-%d).log
# --- 鑷姩浠诲姟璋冭瘯鏃ュ織锛坅utotask锛?--
docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/autotask/
docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/autotask/$(date +%Y-%m-%d).log
3. 涓€閿煡鐪嬫墍鏈夊叧閿棩蹇楋紙姹囨€诲懡浠わ級
# 蹇€熷仴搴锋鏌ワ細鍚屾椂鏌ョ湅 syncjob 鐘舵€?+ 浠婂ぉ鐨勫悓姝ヨ皟璇曟棩蹇楁湯灏?
echo '=== syncjob 瀹瑰櫒鏃ュ織锛堟渶杩?0琛岋級==='
docker logs --tail 20 youle-syncjob
echo
echo '=== 鍚屾璋冭瘯鏃ュ織锛堟渶杩?0琛岋級==='
docker exec youle-dlweb tail -20 /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log
echo
echo '=== API 涓氬姟鏃ュ織锛堟渶杩?0琛岋級==='
docker exec youle-api tail -20 /var/www/html/logs/$(date +%Y-%m-%d).log
4. 鏌ョ湅 Nginx 璁块棶鏃ュ織锛堣姹傛帓鏌ワ級
# Nginx 璁块棶鏃ュ織锛堟渶杩?100 鏉¤姹傦級
docker logs --tail 100 youle-nginx
# 杩囨护 HTTP 500 閿欒
docker logs youle-nginx 2>&1 | grep ' 500 '
# 杩囨护鐗瑰畾 IP 鐨勮姹?
docker logs youle-nginx 2>&1 | grep '瀹㈡埛绔疘P鍦板潃'
# 杩囨护 SSL/TLS 鎻℃墜閿欒锛堝鎴风鍙戦€佷簡闈?HTTPS 璇锋眰鍒?80 绔彛锛?
docker logs youle-nginx 2>&1 | grep 'SSL_do_handshake\|no required SSL'
5. 浣跨敤 deploy.sh 蹇嵎鏌ョ湅
# 绛夋晥浜?docker logs --tail 100 + 瀹炴椂璺熻釜
./deploy.sh logs api
./deploy.sh logs dlweb
./deploy.sh logs syncjob
./deploy.sh logs cronjob
./deploy.sh logs nginx
./deploy.sh logs wxserver
# 鍔?-f 瀹炴椂璺熻釜
./deploy.sh logs -f api
./deploy.sh logs -f syncjob
璋冩暣鍚屾棰戠巼
# 淇敼 .env
SYNC_INTERVAL=15 # 15 绉掍竴娆?
SYNC_PROCESSCOUNT=500 # 姣忔澶勭悊 500 鏉?
# 閲嶅惎 syncjob
docker compose restart syncjob
璋冩暣姣忔棩浠诲姟鎵ц鏃堕棿
# 淇敼 .env
CRON_SCHEDULE=30 3 * * * # 鏀逛负鍑屾櫒 3:30
# 閲嶅惎 cronjob
docker compose restart cronjob
鍦烘櫙鍏細鍗歌浇鍜屾竻鐞?
鏍规嵁闇€姹傞€夋嫨鍗歌浇鑼冨洿锛屾搷浣滀笉鍙€嗭紝璇锋彁鍓嶅浠介噸瑕佹暟鎹€?
鍗歌浇鍓嶏細澶囦唤鍏抽敭鏁版嵁
cd /opt/youle/game-docker
# 1. 澶囦唤 .env锛堝寘鍚墍鏈夊瘑閽ワ紝涓嶅湪鐗堟湰搴撲腑锛?
cp .env ~/youle-env-backup.env
# 2. 澶囦唤 Redis 鏁版嵁锛堝鏈変笟鍔℃暟鎹瓨鍌ㄥ湪 Redis 涓級
docker exec youle-redis redis-cli -a "${REDIS_PASSWORD}" BGSAVE
# 鎴栫洿鎺ュ浠?volume
docker run --rm -v game-docker_redis-data:/data -v ~/:/backup alpine \
tar czf /backup/redis-data-backup.tar.gz /data
# 3. 澶囦唤鏃ュ織锛堟寜闇€锛?
docker cp youle-api:/var/www/html/logs ~/api-logs-backup
docker cp youle-dlweb:/var/www/html/api/logs ~/dlweb-logs-backup
浠呭仠姝㈡墍鏈夊鍣紙淇濈暀闀滃儚鍜屾暟鎹紝鍙殢鏃舵仮澶嶏級
cd /opt/youle/game-docker
docker compose stop
# 楠岃瘉
docker compose ps
鎭㈠杩愯锛?
docker compose start
鍋滄骞跺垹闄ゅ鍣紙淇濈暀闀滃儚銆乿olumes 鍜岄」鐩枃浠讹級
cd /opt/youle/game-docker
docker compose down
# 楠岃瘉瀹瑰櫒宸插垹闄?
docker ps -a | grep youle
姝ゆ搷浣滀笉浼氬垹闄ゆ暟鎹?volume 鍜屽凡鏋勫缓鐨勯暅鍍忥紝鍐嶆
docker compose up -d鍙揩閫熸仮澶嶏紝鏃犻渶閲嶆柊鏋勫缓銆?
瀹屽叏鍗歌浇锛堝垹闄ゅ鍣?+ volumes + 闀滃儚锛?
*璀﹀憡锛? 浠ヤ笅鎿嶄綔灏嗗垹闄?Redis 缂撳瓨鍜屾墍鏈夋棩蹇楁暟鎹紝涓嶅彲鎭㈠銆?
cd /opt/youle/game-docker
# 鍋滄骞跺垹闄ゅ鍣?+ 鎵€鏈夌浉鍏?volumes
docker compose down -v
# 鍒犻櫎鏈」鐩瀯寤虹殑闀滃儚
docker rmi game-docker-api game-docker-dlweb game-docker-wxserver 2>/dev/null || true
# 楠岃瘉
docker volume ls | grep game-docker
docker images | grep game-docker
褰诲簳娓呯悊锛堝垹闄ゅ鍣?+ volumes + 闀滃儚 + 椤圭洰鐩綍 + SSL 璇佷功锛?
*璀﹀憡锛? SSL 璇佷功鍒犻櫎鍚庨渶閲嶆柊鐢宠锛圠et's Encrypt 鏈夐鐜囬檺鍒讹紝姣?7 澶╂渶澶?5 娆★級銆?
cd /opt/youle/game-docker
# 1. 鍋滄骞跺垹闄ゅ鍣?+ volumes
docker compose down -v
# 2. 鍒犻櫎鏋勫缓闀滃儚
docker rmi game-docker-api game-docker-dlweb game-docker-wxserver 2>/dev/null || true
# 3. 娓呯悊 Docker 鎮┖璧勬簮锛堝彲閫夛級
docker system prune -f
# 4. 鍒犻櫎 SSL 璇佷功锛圠et's Encrypt锛?
docker run --rm -v game-docker_certbot-certs:/etc/letsencrypt certbot/certbot delete \
--cert-name "${API_DOMAIN}" --non-interactive 2>/dev/null || true
docker run --rm -v game-docker_certbot-certs:/etc/letsencrypt certbot/certbot delete \
--cert-name "${DLWEB_DOMAIN}" --non-interactive 2>/dev/null || true
# 鎴栫洿鎺ュ垹闄よ瘉涔?volume
docker volume rm game-docker_certbot-certs game-docker_certbot-webroot 2>/dev/null || true
# 5. 鍒犻櫎椤圭洰鐩綍
rm -rf /opt/youle/game-docker
鍒犻櫎鍗曚釜鏈嶅姟鐨勫鍣ㄥ拰闀滃儚
cd /opt/youle/game-docker
# 浠?dlweb 涓轰緥
docker compose stop dlweb
docker compose rm -sf dlweb
docker rmi game-docker-dlweb
# 涓嬫鍚姩鏃朵細閲嶆柊鏋勫缓
docker compose up -d --build dlweb
娓呯悊瀹氭椂浠诲姟娈嬬暀
# 鍋滄骞跺垹闄?syncjob / cronjob 瀹瑰櫒
docker compose stop syncjob cronjob
docker compose rm -sf syncjob cronjob
# 娓呯悊鍏变韩淇″彿 volume锛堝鏈夋畫鐣欐殏鍋滄枃浠讹級
docker run --rm -v game-docker_shared-signal:/shared alpine rm -f /shared/syncjob.pause
# 濡傞渶瀹屽叏鍒犻櫎鍏变韩 volume
docker volume rm game-docker_shared-signal
鍗歌浇鎿嶄綔閫熸煡
| 鐩爣 | 鍛戒护 | 淇濈暀鍐呭 |
|---|---|---|
| 涓存椂鍋滄锛堝彲鎭㈠锛? | docker compose stop |
瀹瑰櫒 / 闀滃儚 / volumes / 鏂囦欢 |
| 鍒犻櫎瀹瑰櫒 | docker compose down |
闀滃儚 / volumes / 鏂囦欢 |
| 鍒犻櫎瀹瑰櫒 + volumes | docker compose down -v |
闀滃儚 / 鏂囦欢 |
| 鍒犻櫎瀹瑰櫒 + volumes + 闀滃儚 | docker compose down -v + docker rmi ... |
鏂囦欢 |
| 瀹屽叏娓呯悊 | 涓婅堪鍏ㄩ儴 + rm -rf /opt/youle/game-docker |
鏃? |
鍦烘櫙鍏細娓呴櫎鏃ュ織
*璇存槑锛? Volume 鏂囦欢鏃ュ織锛堜笟鍔¤皟璇曟棩蹇楋級鍜?Docker 瀹瑰櫒鏃ュ織锛坰tdout锛夐渶瑕佸垎鍒竻鐞嗐€傛竻鐞嗗墠寤鸿鍏堝浠芥垨纭涓嶅啀闇€瑕佽繖浜涙棩蹇椼€?
1. 娓呴櫎 Docker 瀹瑰櫒鏃ュ織锛坰tdout/stderr锛?
Docker 瀹瑰櫒鐨勬爣鍑嗚緭鍑烘棩蹇楀瓨鍌ㄥ湪瀹夸富鏈?/var/lib/docker/containers/<瀹瑰櫒ID>/<瀹瑰櫒ID>-json.log锛岀洿鎺ユ竻绌鸿鏂囦欢鍗冲彲銆?
# 娓呯┖鍗曚釜瀹瑰櫒鐨?docker logs锛堝鍣ㄤ繚鎸佽繍琛岋紝涓嶄腑鏂湇鍔★級
truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-syncjob)
truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-api)
truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-dlweb)
truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-nginx)
truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-cronjob)
truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-wxserver)
# 涓€閿竻绌烘墍鏈?youle-* 瀹瑰櫒鐨?docker logs
for name in youle-nginx youle-api youle-dlweb youle-wxserver youle-syncjob youle-cronjob youle-redis youle-certbot; do
logpath=$(docker inspect --format='{{.LogPath}}' $name 2>/dev/null)
[ -n "$logpath" ] && truncate -s 0 "$logpath" && echo "Cleared: $name"
done
*娉ㄦ剰锛?
truncate -s 0娓呯┖鏂囦欢鍐呭锛屼笉鍒犻櫎鏂囦欢锛屽鍣ㄦ棤闇€閲嶅惎锛屽悗缁棩蹇楁甯稿啓鍏ャ€?
2. 娓呴櫎涓氬姟璋冭瘯鏃ュ織鏂囦欢锛圴olume 鍐呯殑鎸夋棩鏈熸枃浠讹級
# --- 娓呴櫎 API 涓氬姟鏃ュ織 ---
# 鍒犻櫎鎵€鏈夊巻鍙叉棩蹇楋紙淇濈暀浠婂ぉ锛?
docker exec youle-api sh -c "
find /var/www/html/logs/ -name '*.log' ! -name '$(date +%Y-%m-%d).log' -delete
"
# 娓呯┖浠婂ぉ鐨勬棩蹇楁枃浠讹紙淇濈暀鏂囦欢锛屾竻绌哄唴瀹癸級
docker exec youle-api truncate -s 0 /var/www/html/logs/$(date +%Y-%m-%d).log
# 鍒犻櫎鍏ㄩ儴鏃ュ織鏂囦欢锛堝惈浠婂ぉ锛?
docker exec youle-api sh -c 'rm -f /var/www/html/logs/*.log'
# --- 娓呴櫎 DLWEB 涓氬姟鏃ュ織 ---
# 鍒犻櫎鎵€鏈夊巻鍙叉棩蹇楋紙淇濈暀浠婂ぉ锛?
docker exec youle-dlweb sh -c "
find /var/www/html/api/logs/ -name '*.log' ! -name '$(date +%Y-%m-%d).log' -delete
"
# 鍒犻櫎鍏ㄩ儴鏃ュ織鏂囦欢
docker exec youle-dlweb sh -c 'rm -f /var/www/html/api/logs/*.log'
# --- 娓呴櫎鍚屾浠诲姟璋冭瘯鏃ュ織 ---
# 鍒犻櫎 30 澶╁墠鐨勬棫鏃ュ織
docker exec youle-dlweb find /var/www/html/api/ext/debug/ -name '*.log' -mtime +30 -delete
# 鍒犻櫎鎵€鏈夊巻鍙叉棩蹇楋紙淇濈暀浠婂ぉ锛?
docker exec youle-dlweb sh -c "
find /var/www/html/api/ext/debug/ -name '*.log' ! -name '$(date +%Y-%m-%d).log' -delete
"
# 娓呯┖浠婂ぉ鐨勫悓姝ユ棩蹇楋紙淇濈暀鏂囦欢锛?
docker exec youle-dlweb truncate -s 0 /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log
# 鍒犻櫎鍏ㄩ儴璋冭瘯鏃ュ織锛堟墍鏈夊瓙鐩綍锛?
docker exec youle-dlweb sh -c '
rm -f /var/www/html/api/ext/debug/synchronize/*.log
rm -f /var/www/html/api/ext/debug/SynchronizeReportData/*.log
rm -f /var/www/html/api/ext/debug/autotask/*.log
'
3. 涓€閿竻鐞嗘墍鏈夋棩蹇楋紙docker logs + 涓氬姟鏃ュ織锛?
*璀﹀憡锛? 浠ヤ笅鑴氭湰灏嗘竻绌烘墍鏈夊鍣ㄦ棩蹇楀拰鍏ㄩ儴涓氬姟鏃ュ織鏂囦欢锛屾墽琛屽墠璇风‘璁や笉闇€瑕佷繚鐣欑幇鏈夋棩蹇椼€?
#!/bin/bash
# 涓€閿竻鐞嗘墍鏈夋棩蹇楋紙鍦ㄦ湇鍔″櫒 /opt/youle/game-docker/ 鐩綍涓嬫墽琛岋級
echo '=== 娓呯┖ Docker 瀹瑰櫒鏃ュ織 ==='
for name in youle-nginx youle-api youle-dlweb youle-wxserver youle-syncjob youle-cronjob youle-redis youle-certbot; do
logpath=$(docker inspect --format='{{.LogPath}}' $name 2>/dev/null)
if [ -n "$logpath" ] && [ -f "$logpath" ]; then
truncate -s 0 "$logpath"
echo " Cleared docker log: $name"
fi
done
echo '=== 娓呯┖涓氬姟鏃ュ織鏂囦欢 ==='
# API 涓氬姟鏃ュ織
docker exec youle-api sh -c 'rm -f /var/www/html/logs/*.log /var/www/html/source/logs/*.log 2>/dev/null; echo " Cleared api logs"'
# DLWEB 涓氬姟鏃ュ織 + 璋冭瘯鏃ュ織
docker exec youle-dlweb sh -c '
rm -f /var/www/html/api/logs/*.log 2>/dev/null
rm -f /var/www/html/api/ext/debug/synchronize/*.log 2>/dev/null
rm -f /var/www/html/api/ext/debug/SynchronizeReportData/*.log 2>/dev/null
rm -f /var/www/html/api/ext/debug/autotask/*.log 2>/dev/null
echo " Cleared dlweb logs"
'
echo '=== 瀹屾垚 ==='
灏嗕互涓婂唴瀹逛繚瀛樹负鏈嶅姟鍣ㄤ笂鐨?/opt/youle/game-docker/clear-logs.sh锛岃祴浜堟墽琛屾潈闄愬悗浣跨敤锛?
chmod +x /opt/youle/game-docker/clear-logs.sh
/opt/youle/game-docker/clear-logs.sh
4. 鏃ュ織娓呯悊閫熸煡
浠ヤ笅鍛戒护鍦?SSH 鐧诲綍鏈嶅姟鍣ㄥ悗鐩存帴鎵ц锛堟棤闇€
ssh root@...鍓嶇紑锛夈€?
鏌ョ湅鏃ュ織
| 鐩爣 | 鍛戒护 |
|---|---|
| nginx 璁块棶鏃ュ織锛堟湯灏?0琛岋級 | docker logs --tail 50 youle-nginx |
| nginx 璁块棶鏃ュ織锛堝疄鏃惰窡韪級 | docker logs -f youle-nginx |
| wxserver 鏃ュ織锛堟湯灏?0琛岋級 | docker logs --tail 50 youle-wxserver |
| wxserver 鏃ュ織锛堝疄鏃惰窡韪級 | docker logs -f youle-wxserver |
| API PHP 閿欒鏃ュ織锛堟湯灏?0琛岋級 | docker exec youle-api tail -50 /var/log/apache2/php_errors.log |
| API 涓氬姟鏃ュ織_浠婂ぉ锛堟湯灏?0琛岋級 | docker exec youle-api tail -50 /var/www/html/logs/$(date +%Y-%m-%d).log |
| API 涓氬姟鏃ュ織_浠婂ぉ锛堝畬鏁达級 | docker exec youle-api cat /var/www/html/logs/$(date +%Y-%m-%d).log |
| API 涓氬姟鏃ュ織_浠婂ぉ锛堝疄鏃惰窡韪級 | docker exec youle-api tail -f /var/www/html/logs/$(date +%Y-%m-%d).log |
| 鍒楀嚭 API 涓氬姟鏃ュ織鏂囦欢 | docker exec youle-api ls -lh /var/www/html/logs/ |
| 鍚屾璋冭瘯鏃ュ織_浠婂ぉ锛堟湯灏?0琛岋級 | docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log |
| 鍚屾璋冭瘯鏃ュ織_浠婂ぉ锛堝疄鏃惰窡韪級 | docker exec youle-dlweb tail -f /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log |
| 鍒楀嚭鍚屾璋冭瘯鏃ュ織鏂囦欢 | docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/synchronize/ |
| syncjob 浠诲姟鏃ュ織锛堟湯灏?0琛岋級 | docker logs --tail 50 youle-syncjob |
| cronjob 浠诲姟鏃ュ織锛堟湯灏?0琛岋級 | docker logs --tail 50 youle-cronjob |
娓呯悊鏃ュ織
| 鐩爣 | 鍛戒护 |
|---|---|
| 娓呯┖ nginx docker logs | truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-nginx) |
| 娓呯┖ wxserver docker logs | truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-wxserver) |
| 娓呯┖ API docker logs | truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-api) |
| 娓呯┖ dlweb docker logs | truncate -s 0 $(docker inspect --format='{{.LogPath}}' youle-dlweb) |
| 娓呯┖鎵€鏈夊鍣?docker logs | for n in youle-nginx youle-api youle-dlweb youle-wxserver youle-syncjob youle-cronjob youle-redis youle-certbot; do truncate -s 0 $(docker inspect --format='{{.LogPath}}' $n 2>/dev/null) 2>/dev/null; done |
| 娓呯┖浠婂ぉ API 涓氬姟鏃ュ織 | docker exec youle-api truncate -s 0 /var/www/html/logs/$(date +%Y-%m-%d).log |
| 娓呯┖浠婂ぉ鍚屾璋冭瘯鏃ュ織 | docker exec youle-dlweb truncate -s 0 /var/www/html/api/ext/debug/synchronize/$(date +%Y-%m-%d).log |
| 鍒犻櫎 API 鍏ㄩ儴鍘嗗彶鏃ュ織 | docker exec youle-api sh -c 'rm -f /var/www/html/logs/*.log' |
| 鍒犻櫎璋冭瘯鏃ュ織 30 澶╁墠鏃ф枃浠? | docker exec youle-dlweb find /var/www/html/api/ext/debug/ -name '*.log' -mtime +30 -delete |
| 鍒犻櫎璋冭瘯鏃ュ織鍏ㄩ儴鏂囦欢 | docker exec youle-dlweb sh -c 'rm -f /var/www/html/api/ext/debug/synchronize/*.log /var/www/html/api/ext/debug/SynchronizeReportData/*.log /var/www/html/api/ext/debug/autotask/*.log' |
| 涓€閿竻鐞嗗叏閮ㄦ棩蹇? | /opt/youle/game-docker/clear-logs.sh |
---
### 鍦烘櫙涔濓細浠?Windows 鏈湴鏌ョ湅鍜屽垹闄や笟鍔℃棩蹇?
> 浠ヤ笅鍛戒护鍦?**Windows PowerShell** 涓墽琛岋紝閫氳繃 SSH 鐩存帴璇诲彇鏈嶅姟鍣ㄤ笂鐨勪笟鍔℃棩蹇楁枃浠躲€?
> 鏃ュ織鏉ユ簮鐩綍锛堟湰鍦颁唬鐮佹槧灏勫埌瀹瑰櫒鐨?Volume锛夛細
> - `api/logs/` 鈫?瀹瑰櫒鍐?`/var/www/html/logs/`
> - `dlweb/api/ext/debug/` 鈫?瀹瑰櫒鍐?`/var/www/html/api/ext/debug/`
---
#### 鏌ョ湅鏃ュ織
```powershell
# 鈹€鈹€ 鑾峰彇浠婂ぉ鐨勬棩鏈熷瓧绗︿覆 鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
$today = (Get-Date -Format "yyyy-MM-dd")
# 鈹€鈹€ api/logs 鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
# 鍒楀嚭鎵€鏈夋棩蹇楁枃浠?
ssh root@47.98.203.17 "docker exec youle-api ls -lh /var/www/html/logs/"
# 鏌ョ湅浠婂ぉ鐨?API 涓氬姟鏃ュ織锛堟湯灏?50 琛岋級
ssh root@47.98.203.17 "docker exec youle-api tail -50 /var/www/html/logs/$today.log"
# 鏌ョ湅浠婂ぉ鐨?API 涓氬姟鏃ュ織锛堝畬鏁村唴瀹癸級
ssh root@47.98.203.17 "docker exec youle-api cat /var/www/html/logs/$today.log"
# 瀹炴椂璺熻釜浠婂ぉ鐨?API 涓氬姟鏃ュ織锛圕trl+C 鍋滄锛?
ssh root@47.98.203.17 "docker exec youle-api tail -f /var/www/html/logs/$today.log"
# 鈹€鈹€ dlweb/api/ext/debug/synchronize 鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
# 鍒楀嚭鎵€鏈夊悓姝ヨ皟璇曟棩蹇楁枃浠?
ssh root@47.98.203.17 "docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/synchronize/"
# 鏌ョ湅浠婂ぉ鐨勫悓姝ヨ皟璇曟棩蹇楋紙鏈熬 50 琛岋級
ssh root@47.98.203.17 "docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/synchronize/$today.log"
# 鏌ョ湅浠婂ぉ鐨勫悓姝ヨ皟璇曟棩蹇楋紙瀹屾暣鍐呭锛?
ssh root@47.98.203.17 "docker exec youle-dlweb cat /var/www/html/api/ext/debug/synchronize/$today.log"
# 瀹炴椂璺熻釜鍚屾璋冭瘯鏃ュ織锛圕trl+C 鍋滄锛?
ssh root@47.98.203.17 "docker exec youle-dlweb tail -f /var/www/html/api/ext/debug/synchronize/$today.log"
# 鈹€鈹€ dlweb/api/ext/debug/SynchronizeReportData 鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
ssh root@47.98.203.17 "docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/SynchronizeReportData/"
ssh root@47.98.203.17 "docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/SynchronizeReportData/$today.log"
# 鈹€鈹€ dlweb/api/ext/debug/autotask 鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
ssh root@47.98.203.17 "docker exec youle-dlweb ls -lh /var/www/html/api/ext/debug/autotask/"
ssh root@47.98.203.17 "docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/autotask/$today.log"
# 鈹€鈹€ 涓€閿眹鎬伙細鍚屾椂鏌ョ湅涓や釜鐩綍浠婂ぉ鐨勬棩蹇楁湯灏?鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
$today = (Get-Date -Format "yyyy-MM-dd")
ssh root@47.98.203.17 @"
echo '=== api/logs/$today.log ==='
docker exec youle-api tail -30 /var/www/html/logs/$today.log
echo
echo '=== synchronize/$today.log ==='
docker exec youle-dlweb tail -30 /var/www/html/api/ext/debug/synchronize/$today.log
echo
echo '=== SynchronizeReportData/$today.log ==='
docker exec youle-dlweb tail -30 /var/www/html/api/ext/debug/SynchronizeReportData/$today.log
"@
鍒犻櫎鏃ュ織
# 鈹€鈹€ 鑾峰彇浠婂ぉ鐨勬棩鏈熷瓧绗︿覆 鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
$today = (Get-Date -Format "yyyy-MM-dd")
# 鈹€鈹€ api/logs 鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
# 娓呯┖浠婂ぉ鐨?API 涓氬姟鏃ュ織锛堜繚鐣欐枃浠讹紝娓呯┖鍐呭锛?
ssh root@47.98.203.17 "docker exec youle-api truncate -s 0 /var/www/html/logs/$today.log"
# 鍒犻櫎浠婂ぉ鐨?API 涓氬姟鏃ュ織鏂囦欢
ssh root@47.98.203.17 "docker exec youle-api rm -f /var/www/html/logs/$today.log"
# 鍒犻櫎鎵€鏈?API 涓氬姟鏃ュ織锛堜繚鐣欎粖澶╋級
ssh root@47.98.203.17 "docker exec youle-api sh -c `"find /var/www/html/logs/ -name '*.log' ! -name '$today.log' -delete`""
# 鍒犻櫎鍏ㄩ儴 API 涓氬姟鏃ュ織锛堝惈浠婂ぉ锛?
ssh root@47.98.203.17 "docker exec youle-api sh -c 'rm -f /var/www/html/logs/*.log'"
# 鈹€鈹€ dlweb/api/ext/debug 鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
# 娓呯┖浠婂ぉ鐨勫悓姝ヨ皟璇曟棩蹇楋紙淇濈暀鏂囦欢锛屾竻绌哄唴瀹癸級
ssh root@47.98.203.17 "docker exec youle-dlweb truncate -s 0 /var/www/html/api/ext/debug/synchronize/$today.log"
# 鍒犻櫎浠婂ぉ鐨勫悓姝ヨ皟璇曟棩蹇楁枃浠?
ssh root@47.98.203.17 "docker exec youle-dlweb rm -f /var/www/html/api/ext/debug/synchronize/$today.log"
# 鍒犻櫎 30 澶╁墠鐨勬棫璋冭瘯鏃ュ織锛堜笁涓瓙鐩綍锛?
ssh root@47.98.203.17 "docker exec youle-dlweb find /var/www/html/api/ext/debug/ -name '*.log' -mtime +30 -delete"
# 鍒犻櫎鎵€鏈夎皟璇曟棩蹇楋紙淇濈暀浠婂ぉ锛屼笁涓瓙鐩綍锛?
ssh root@47.98.203.17 "docker exec youle-dlweb sh -c `"find /var/www/html/api/ext/debug/ -name '*.log' ! -name '$today.log' -delete`""
# 鍒犻櫎鍏ㄩ儴璋冭瘯鏃ュ織锛堝惈浠婂ぉ锛屼笁涓瓙鐩綍锛?
ssh root@47.98.203.17 @"
docker exec youle-dlweb sh -c '
rm -f /var/www/html/api/ext/debug/synchronize/*.log
rm -f /var/www/html/api/ext/debug/SynchronizeReportData/*.log
rm -f /var/www/html/api/ext/debug/autotask/*.log
'
"@
# 鈹€鈹€ 涓€閿竻鐞嗭細api/logs + dlweb/api/ext/debug 鍏ㄩ儴鏃ュ織 鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€
ssh root@47.98.203.17 @"
docker exec youle-api sh -c 'rm -f /var/www/html/logs/*.log'
docker exec youle-dlweb sh -c '
rm -f /var/www/html/api/ext/debug/synchronize/*.log
rm -f /var/www/html/api/ext/debug/SynchronizeReportData/*.log
rm -f /var/www/html/api/ext/debug/autotask/*.log
'
echo "Done"
"@
蹇嵎閫熸煡琛?
| 鎿嶄綔 | PowerShell 鍛戒护 |
|---|---|
| 鏌ョ湅 api/logs 浠婂ぉ鏃ュ織 | ssh root@47.98.203.17 "docker exec youle-api cat /var/www/html/logs/$(Get-Date -Format 'yyyy-MM-dd').log" |
| 鏌ョ湅鍚屾璋冭瘯鏃ュ織 | ssh root@47.98.203.17 "docker exec youle-dlweb tail -50 /var/www/html/api/ext/debug/synchronize/$(Get-Date -Format 'yyyy-MM-dd').log" |
| 瀹炴椂璺熻釜鍚屾鏃ュ織 | ssh root@47.98.203.17 "docker exec youle-dlweb tail -f /var/www/html/api/ext/debug/synchronize/$(Get-Date -Format 'yyyy-MM-dd').log" |
| 娓呯┖ api/logs 浠婂ぉ鏃ュ織 | ssh root@47.98.203.17 "docker exec youle-api truncate -s 0 /var/www/html/logs/$(Get-Date -Format 'yyyy-MM-dd').log" |
| 娓呯┖鍚屾璋冭瘯鏃ュ織 | ssh root@47.98.203.17 "docker exec youle-dlweb truncate -s 0 /var/www/html/api/ext/debug/synchronize/$(Get-Date -Format 'yyyy-MM-dd').log" |
| 鍒犻櫎鍏ㄩ儴璋冭瘯鏃ュ織 | ssh root@47.98.203.17 "docker exec youle-dlweb sh -c 'rm -f /var/www/html/api/ext/debug/synchronize/*.log /var/www/html/api/ext/debug/SynchronizeReportData/*.log /var/www/html/api/ext/debug/autotask/*.log'" |
数据库远程管理(Navicat SSH 隧道)
RDS 白名单仅开放服务器
47.98.203.17,任何设备需通过 SSH 隧道访问数据库,无需开放公网 IP,安全可控。
原理
本机 Navicat ──SSH加密隧道──▶ 47.98.203.17 ──内网──▶ RDS MySQL
Navicat 连接配置(以 agent_db 为例)
第一步:SSH 标签页
| 字段 | 值 |
|---|---|
| 使用 SSH 通道 | ✅ 勾选 |
| 主机 | 47.98.203.17 |
| 端口 | 22 |
| 用户名 | root |
| 验证方法 | 公钥 |
| 私钥文件 | C:\Users\{你的用户名}\.ssh\id_ed25519 |
注意:当前服务器已授权的密钥为
id_ed25519(标识youle-deploy),选错密钥会导致认证失败。
第二步:常规标签页
| 字段 | 值 |
|---|---|
| 主机名/IP | rm-bp1btyuwq77591x0jpo.mysql.rds.aliyuncs.com |
| 端口 | 3306 |
| 用户名 | games |
| 密码 | Games0791!! |
| 数据库 | agent_db(可留空后再选) |
⚠️ 常见错误(2013 错误):常规标签的主机名填了
127.0.0.1或localhost,会连接到服务器本机而非 RDS,导致握手失败。必须填 RDS 完整域名。
数据库与 RDS 实例对应关系
| 数据库 | RDS 主机 |
|---|---|
agent_db、agent_db_temp、game_field、youlehudong |
rm-bp1btyuwq77591x0jpo.mysql.rds.aliyuncs.com |
game_db、grade_db |
rm-bp1749tfxu2rpq670lo.mysql.rds.aliyuncs.com |
新设备接入
在新设备上执行以下步骤:
# 1. 生成密钥对(如没有)
ssh-keygen -t ed25519 -C "设备标识备注"
# 2. 查看公钥内容
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub"
将公钥内容追加到服务器:
ssh root@47.98.203.17 "echo 'ssh-ed25519 AAAA...你的公钥内容...' >> ~/.ssh/authorized_keys"
之后 Navicat SSH 标签填写该设备的私钥路径即可。
命令行手动隧道(可选)
如需在命令行工具(如 mysql CLI)中使用,可手动建立隧道:
# 建立隧道(保持此终端运行,另开终端连接)
ssh -L 3307:rm-bp1btyuwq77591x0jpo.mysql.rds.aliyuncs.com:3306 root@47.98.203.17 -N
# 另开终端,连接本地转发端口
mysql -h 127.0.0.1 -P 3307 -u games -p agent_db