لینک کوتاه مطلب : https://hsgar.com/?p=3610

نوت بوک یک برنامه نویس – استفاده مجدد از یک تلفن اندرویدی قدیمی به عنوان وب سرور Ruby

CC-BY کارلوس وارلا، https://www.flickr.com/photos/c32/7755470064

آیا گوشی اندرویدی قدیمی دارید؟ مطمئناً انجام می دهید! مقدار قابل توجهی از ضایعات الکترونیکی از انواع و اقسام وجود دارد و در کشورهای توسعه یافته به طور متوسط ​​یک فرد معمولی وجود دارد هر دو سال یکبار گوشی های خود را دور می اندازندگوشی های هوشمند دور ریخته شده احتمالاً یکی از رایج ترین انواع زباله های الکترونیکی هستند.

من یک موتورولا جی 5 سدریک قدیمی داشتم که گرد و غبار را جمع می کرد، بنابراین تصمیم گرفتم کاری با آن انجام دهم – اکنون یک وب سرور Puma را با یک برنامه وب ساده سیناترا اجرا می کند.

اکنون، قبل از ادامه دادن، ممکن است فکر کنید: کاربرد واقعی و عملی همه اینها چیست؟ احتمالاً یک تلفن اندرویدی قدیمی عملکرد فوق‌العاده‌ای نخواهد داشت، اما این‌ها هم ندارند t2.nanos، صادقانه من هنوز هیچ کد واقعی را روی اندروید نصب نکرده‌ام، اما حتی گوشی‌های ارزان‌تر و قدیمی‌تر معمولاً پردازنده‌های چهار هسته‌ای یا حتی هشت هسته‌ای و حداقل رم 2 گیگابایتی دارند، بنابراین حداقل در تئوری یک گوشی وجود دارد. باید نزدیک باشید – حداقل پارک توپ – به ساده ترین ابری که IaaS در آنجا ارائه می دهد (t2.nano به عنوان مثال 512 مگابایت دارد). البته، یک گوشی دارای پردازنده ARM است در حالی که IaaS معمولا x86 است. مدیریت حافظه نیز کاملاً متفاوت است، اما با این حال – ما در اینجا در مورد تخمین‌های بالپارک صحبت می‌کنیم.

به هر حال، این یک آموزش کوتاه در مورد نحوه استفاده مجدد از یک دستگاه اندرویدی به عنوان یک وب سرور – یا هر تعداد از چیزهای مختلف، واقعاً است.

1. Termux را نصب کنید

اول از همه ما به یک محیط لینوکس در گوشی خود نیاز داریم. Termux یک شبیه ساز ترمینال و محیط لینوکس برای اندروید است. در فروشگاه Google Play موجود است. پس از نصب نیازی به پیکربندی اضافی نیست.

2. SSH را راه اندازی کنید

شما نمی خواهید دستورات زیادی را در یک صفحه لمسی کوچک تایپ کنید، بنابراین بیایید ssh را تنظیم کنیم تا بتوانیم از راه دور وارد Termux شویم.

وجود دارد چندین راه برای انجام این کار، اما من متوجه شده ام که ساده ترین راه از طریق نرم افزاری به نام است Dropbear:

این را در اندروید اجرا کنید:

pkg upgrade
pkg install dropbear

می توانید از احراز هویت مبتنی بر رمز عبور یا احراز هویت با کلید عمومی استفاده کنید. شما باید از احراز هویت مبتنی بر کلید استفاده کنید، اما برای اهداف آزمایشی، مبتنی بر رمز عبور ساده‌ترین کار است. این را در اندروید اجرا کنید:

این را در اندروید اجرا کنید:

passwd
New password:
Retype new password:
New password was successfully set.

امتیاز جایزه: یک مالتی پلکسر ترمینال مانند نصب کنید tmux یا screen. این کار هنگام اجرای موارد از طریق ssh زندگی شما را بسیار آسان تر می کند:

اکنون ادامه دهید و اتصال را روی دسکتاپ خود آزمایش کنید:

ssh android-ip-address -p 8022

3. آدرس IP ثابت را در اندروید تنظیم کنید

به تنظیمات wifi بروید، DHCP را غیرفعال کنید و یک آدرس IP برای گوشی خود اختصاص دهید.

این امر ضروری است تا روتر شما هر چند ساعت/روز یک آدرس IP جدید به تلفن شما اختصاص ندهد، که پیکربندی را بسیار سخت تر می کند.

4. Ruby، Bundler، Sinatra و Puma را نصب کنید

سیناترا یک فریم ورک نرم افزار وب سبک وزن است و پوما یک وب سرور است.

روبی است، خوب روبی!

البته، سیناترا و پوما فقط پیشنهاد هستند – شما حتی می توانید از Rails تمام عیار در تلفن خود استفاده کنید، همانطور که در توضیح داده شده است. این آموزش منظم. فقط از WEBRick استفاده نکنید، وب سرور پیش فرض Rails در حال توسعه – تک فرآیندی، تک رشته ای است و بنابراین برای محیط های تولید مناسب نیست (هر چند برای آزمایش های کوچک خوب است).

این را در اندروید اجرا کنید:

pkg install ruby
gem install sinatra puma

nginx را نصب کنید

nginx یک وب سرور، پروکسی معکوس و متعادل کننده بار است. اگرچه nginx در راه‌اندازی‌های چند سروری که برای توزیع درخواست‌ها بین نمونه‌های مختلف استفاده می‌شود، بسیار مفید است، اما به دلیل حفاظت DDoS تعبیه‌شده و سرویس‌دهی فایل استاتیکی که ارائه می‌کند، ایده خوبی در راه‌اندازی ما است.

این را در اندروید اجرا کنید:

اکنون بخش کمی مشکل، پیکربندی nginx برای کار با Puma است. این اصل شروع بسیار خوبی است – کپی و چسباندن nginx.conf و تغییر دهید appdir به آدرس اصلی وب برنامه شما. در مورد من، برای مثال، چنین خواهد بود /data/data/com.termux/files/home/android-sinatra.

راه اندازی پورت فوروارد

احتمالاً می‌خواهید وب سرور شما از طریق اینترنت در دسترس باشد، بنابراین باید در روتر خود، پورت فورواردینگ را تنظیم کنید تا درخواست‌های دریافتی را به آدرس IP عمومی خود به وب سرور جدید اندروید خود هدایت کنید.

نحوه دقیق انجام این کار بسته به روتر شما متفاوت است. اینجاست یک آموزش بسیار خوب برای شروع

یک dns پویا را پیکربندی کنید

اکثر مردم دارای آدرس IP عمومی پویا هستند. در این موارد، راه‌اندازی یک سرویس dns پویا (DDNS) مفید است که یک نام دامنه ثابت را در اختیار شما قرار می‌دهد که به طور خودکار به هر آدرس IP عمومی شما در آن لحظه هدایت می‌شود.

امروزه خدمات رایگان کمی وجود دارد که DDNS را ارائه می دهد. من دارم استفاده میکنم بدون آی پی و تا الان خوب بوده شما باید هر ماه دامنه خود را “تجدید” کنید.

پس از تنظیم یک DDNS، باید روتر خود را نیز پیکربندی کنید تا به صورت دوره ای سرویس DDNS را با آدرس IP فعلی شما اطلاع دهد. باز هم، نحوه دقیق انجام این کار به مدل روتر شما بستگی دارد.

سلام دنیا!

Puma و nginx روی موتورولا G5 در حال اجرا هستند.

Puma و nginx روی موتورولا G5 در حال اجرا هستند.

تحت محاصره

شما می توانید استفاده در دنیای واقعی را از طریق شبیه سازی کنید siege، یک نرم افزار تست بار http. در اینجا یک اسکرین شات از siege در راه اندازی من با 3 کاربر همزمان اجرا می شود (تست های واقعی از اعداد بزرگتر استفاده می کنند):

اسکرین شات از محاصره در حال اجرا در ترمینال.

محاصره در پیش زمینه؛ nginx لاگ می کند و روی کنترل از راه دور (اندروید) اجرا می شود که در پایانه های پس زمینه اجرا می شود.

اعداد موجود در آن اسکرین شات چندان اهمیتی ندارند زیرا برنامه وب ما یک پاسخ ساده 100 کاراکتری با مهر زمانی ارائه می‌داد، اما کافی است حداقل بدانیم که سرور می‌تواند چند کاربر همزمان را مدیریت کند.

نتیجه: ایمنی

اگر تماشا کرده اید آقای ربات، می دانید که اینترنت می تواند مکان خطرناکی باشد. اگر یک وب سرور برای اینترنت باز داشته باشید، این بسیار بیشتر صادق است.

در عرض چند ساعت پس از باز کردن سرور، همه چیز در حال خزیدن بود. بیشتر آنها ربات های نمایه سازی بی ضرر هستند، اما برخی از آنها قطعاً چندان خوب نیستند، مانند این دو درخواست:

گزارش‌های nginx که حملات اسکن پورت را نشان می‌دهد.

اکثر این درخواست‌ها خوب به نظر می‌رسند، اما این دو رنگ قرمز احتمالا نوعی حمله هستند.

بنابراین عنوان اینجا این است: همه نرم افزارها را به روز نگه دارید، گزارش های دسترسی را زیر نظر داشته باشید و شاید از طریق راهنماهای ایمنی nginx مانند این و این.

لینک منبع

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.