Files
2026-08-09 16:56:13 +03:00

69 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# تربز في حاويات — دليل التشغيل والفحص
> الهدف: نسخة تربز كاملة على سيرفر واحد داخل compose واحدة، والتطبيق لا يتغير
> فيه شيء سوى الـ base URLs (تُبنى مرة واحدة بـ `.env` الجديد).
>
> البورتات مخصصة لتربز ولا تتصادم مع نسخ سيرو/intaleq على السيرفر نفسه:
> HTTP 8183 · driver 12022 · passenger 13033 · food 14042 · mysql 33063 · pma 8084 · TURN 3479
## 0) قبل أي شيء — على السيرفر
```bash
df -h / # التأكد من المساحة — الصور والقواعد تحتاج ~4-6GB
docker image prune -f # نظّف أولاً، وإن لم تكفِ المساحة فالفحص على صندوق آخر
ss -tlnp | grep -E ':(1202|1303|1404|3306|3478|808)[0-9]' # تأكد الفارغة
```
## 1) الإعداد (مرة واحدة)
```bash
cd /path/to/Tripz/docker
cp .env.example .env && nano .env # املأ الأسرار — خاصة JWT_SECRET وكلمات MySQL
# ⚠️ طابق أسماء القواعد في mysql/init/ مع ما يتوقعه الكود
# ⚠️ توجد قاعدة طعام منفصلة tripz_food (06-foodDB.sql) — اضبط DB_FOOD_PASS
docker compose build
# تبعيات composer للخدمات التي لا تحمل vendor/ داخلها:
docker compose run --rm socket_driver composer install
docker compose run --rm socket_passenger composer install
docker compose run --rm --workdir /var/www/backend php composer install
```
## 2) التشغيل والاستيراد
```bash
docker compose up -d
# استيراد السكيمات (أول مرة فقط):
docker compose exec -T mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" mainDB < ../backend/schema_primary.sql
docker compose exec -T mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" ridesDB < ../backend/schema_ride.sql
docker compose exec -T mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" locationDB < ../backend/schema_tracking.sql
docker compose exec -T mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" paymentDB < ../payment_server/WalletDB.sql
docker compose exec -T mysql mysql -uroot -p"$MYSQL_ROOT_PASSWORD" locationDB < ../loction_server/locationDB.sql
```
## 3) التحقق
```bash
docker compose ps # كل الخدمات up
curl -s http://localhost:8183/backend/index.html # nginx→ملفات
curl -s -o /dev/null -w '%{http_code}\n' http://localhost:8183/backend/connect.php # يرد (401/400 طبيعي بلا JWT)
curl -s http://localhost:8183/fpm-status # حالة حوض fpm
docker compose logs socket_driver | tail # Workerman أقلع على 2020/2021
docker compose logs socket_food | tail # سوكيت الطعام على 4040
```
اتصال التطبيق للتجربة: `https://api.tripz-egypt.com/backend` + سوكيتات
`https://api.tripz-egypt.com:2020` / `:3030` / `:4040` (منفذة TLS عبر
`/etc/nginx/sites-enabled/tripz-sockets-tls.conf` على المضيف).
## 4) الخدمات المنفصلة (transit / food / TURN)
- **php_transit** — حوض fpm معزول (16 عاملاً) يخدم `/backend/transit/*` فقط.
- **php_food** — حوض fpm معزول (24 عاملاً) يخدم `/backend/food/*` فقط،
وقاعدة `tripz_food` منفصلة.
- **socket_food** — سوكيت الطعام على 127.0.0.1:14042 (يفسد من المضيف على 4040).
- **coturn** — مكالمات الصوت على TCP/UDP 3479 + نطاق 49301–49400 UDP
(افتحهما على جدار الحماية؛ النطاق 49160–49300 محجوز لنسخة سيرو).
## 5) أدوات الإدارة
- phpMyAdmin: `ssh -L 8084:127.0.0.1:8084 user@server` ثم `http://127.0.0.1:8084`
- MySQL من السيرفر: `mysql -h127.0.0.1 -P33063 -uroot -p`
- المهام المجدولة: انسخ `crontab.production` (ضمنف داخل حاوية php).
## 6) ملاحظات أداء محسوسة
- الحاوية على لينكس = عمليات عادية بنفس النواة — لا محاكاة، حمل CPU/ذاكرة ≈ صفر.
- المكان الوحيد الذي يُخسر فيه أداء فعلاً: كتابة MySQL فوق overlayfs — محلول بـ volume.
- أداء PHP الحقيقي = opcache + مقاس حوض fpm + فهارس MySQL — مضبوطة في `php/`.