69 lines
4.3 KiB
Markdown
69 lines
4.3 KiB
Markdown
# تربز في حاويات — دليل التشغيل والفحص
|
||
|
||
> الهدف: نسخة تربز كاملة على سيرفر واحد داخل 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/`. |