/jojo

🐤 jojo, another http web-server written in PHP 8

Primary LanguagePHP

image

جوجو | jojo

وب‌سروری در ابعاد 🐤 برای کارهای کوچک

داستان نوشتن جوجو

وب‌سروری که تنظیمات مودم TP-link TD-8811 توی اتاقم رو serve میکنه اسمش micro_httpd بود. از سر بیکاری اسم وب‌سرورش رو سرچ کردم و به این مخزن رسیدم. کدش برام جالب بود و به سرم زد که برای مرور کردن و یادگرفتن چیزهای جدید از مهندسی کامپیوتر یک وب‌سرور ساده دیگه شبیه micro_httpd خودم از صفر بنویسم و چیزهایی که یاد میگیرم رو نیز با بقیه به نحوی به اشتراک بگذارم.

یک وب‌سرور ساده با PHP

در این مخزن سعی میکنم گام‌به‌گام پیش برم و وب‌سروری ساده طبق قواعد Hypertext Transfer Protocol -- HTTP/1.1 بسازم. از اون‌جایی که من در حال‌حاضر با زبان PHP بیشتر کار میکنم ترجیح دادم ابتدا با PHP 8.0 این کار رو انجام بدم و بعد در زبان دیگری (احتمالا C) بازنویسی کنم.

چطور این‌ وب‌سرور را راه‌اندازی کنم؟

برای استفاده در محیط داکری کافیه دستور زیر رو وارد کنید:

docker run --name jojo --init --rm \
          -v YOUR_WEB_DIR:/jojo \
          -p 80:8000 \
          ohmydevops/jojo-server:v1.1.0

به جای YOUR_WEB_DIR کافیه آدرس دایرکتوری وبسایت‌تون رو بزارید (ریشه وبسایت). مثلا اگر در دایرکتوری /home/user/website وبسایت استاتیک شما قرار دارد کافیه بدین صورت اجرا کنید:

docker run --name jojo --init --rm \
          -v /home/user/website:/jojo \
          -p 80:8000 \
          ohmydevops/jojo-server:v1.1.0

سپس میتونید با مرورگرتون وبسایت خودتون رو مشاهده کنید.

برنامه‌های پیش‌رو

V1

  • Serve basic web files (html, css, js)
  • Serve basic static files (images, videos, sounds)
  • Support 200 status code
  • Support 404 status code
  • Support GET method
  • Handle requests in blocking-mode
  • Dockerise (upload images in docker hub)
  • Can config root directory with ENV

V2

  • Handle requests in concurrent-mode (multi-process)

V3

V4

  • Directory index