اشتراک‌گذاری لوکال‌هاست روی اینترنت

اگر شما فری‌لنسر هستید با با همکارهاتون از راه دور کار می‌کنید، ممکنه براتون پیش اومده باشه که بخواید پروژه‌ای که روی لوکال‌هاست (127.0.0.1) در حال توسعه یا طراحیش هستید رو به مشتری‌تون یا همکارتون نشون بدید که ببینه پیشرفت کار به چه صورت هست.

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

روش سوم اینه که با استفاده از یه ابزار واسط که معرفی می‌کنم، بین کامپیوترتون و اینترنت یه پُل بزنید و در واقع یه سرور بیرونی رو به عنوان رابط (Proxy) خوتون و اینترنت قرار بدید. این کار دو مرحله داره که توضیح می‌دم:

مرحله اول: نصب و راه‌اندازی یک HTTP Server ساده

درسته که خیلی از شما روی سیستمتون یه وب‌سرور مثل آپاچی (Apache) نصب دارید و برای کارهاتون اون رو روی پورت ۸۰ (یا هر پورتی) تنظیم کردید، اما ممکنه نصب نداشته باشید و یا نخواید پورت ۸۰ ـتون رو عمومی کنید، یا بخواید یه فولدر دیگه خارج از وب‌سرور اصلی‌تون رو عمومی کنید، یا پشت ابزارهای تغییر آی‌پی باشید.

برای این‌کار شما باید روی کامپیوترتون یکی از زبان‌های برنامه‌نویسی که به صورت پیش‌فرض قابلیت اجرای HTTP Server رو ارائه می‌دن، مثل PHP 5.4 یا Python رو نصب داشته باشید. این زبان‌ها به صورت پیش‌فرض روی سیستم عامل مک و بعضی از توزیع‌های لینوکس نصب هستند و نیاز به کار خاصی نیست، ولی اگر از ویندوز استفاده می‌کنید باید یکی از اون‌ها رو نصب کنید که توضیح این بخش خارج از موضوع این مطلبه. زبان Ruby به صورت پیش‌فرض این قابلیت رو نداره ولی خیلی راحت می‌تونید با نصب یه Gem مثل Thin قابلیت اجرای HTTP Server رو بهش اضافه کنید.

برای شروع، اول از خط فرمان به فولدری برید که می‌خواید اون رو عمومی کنید، مثلا فولدر یه وب‌سایت:

$ cd /Users/sallar/Sites/negaresh/

و بعد وب‌سرور رو روی پورت دلخواهتون (ترجیحا چیزی غیر از ۸۰) راه‌اندازی کنید. مثلا با PHP و روی پورت دلخواه ۴۰۰۰:

$ php -S 0.0.0.0:4000
PHP 5.4.4 Development Server started at Sat Aug 10 21:25:41 2013
Listening on 0.0.0.0:4000
Document root is /Users/sallar/Sites/negaresh
Press Ctrl-C to quit.

یا پایتون:

$ python -m SimpleHTTPServer 4000
Serving HTTP on 0.0.0.0 port 4000 ...

حالا اگه با مرورگرتون نشانی 127.0.0.1:4000 رو باز کنید باید صفحه‌ای که انتظار داشتید رو به درستی ببینید.

مرحله دوم: نصب localtunnel و عمومی کردن پورت

برای عمومی کردن وب‌سروری که به صورت لوکال راه‌اندازی کردید، نیاز به ابزار localtunnel داریم. برای نصب localtunnel شما باید روی سیستمتون Ruby رو نصب داشته باشید. اگه Ruby به درستی نصب هست، برای نصب localtunnel این دستور رو توی خط فرمان وارد کنید:

$ sudo gem install localtunnel

بعد از اینکه نصب کردید localtunnel رو، باید برای اولین اجراش، نشانی یه کلید SSH رو بهش بدید، این کار فقط اولین بار ضروری هست و دفعه‌های بعد نیازی نیست. اگر نمی‌دونید کلید SSH چی‌هست و چطوری می‌شه تولیدش کرد، یه سری به این صفحه در گیت‌هاب بزنید. از روی راهنمای مناسب با سیستم عاملتون کلید SSH رو بسازید و آدرسش رو یادتون بمونه. بعد برای اجرای localtunnel این دستور رو وارد کنید:

$ localtunnel -k ~/.ssh/id_rsa.pub 4000

توجه کنید که به‌جای ~/.ssh/id_rsa.pub باید مسیر کلید SSH که تولید کردید رو وارد کنید، به جای ۴۰۰۰ هم پورتی که در مرحله اول انتخاب کرده بودید رو. حالا باید همچین خروجی‌ای رو توی خط فرمان ببینید:

Port 4000 is now publicly accessible from http://8bv2.localtunnel.com ...

وقتی این پیام رو دیدید، معنیش اینه که لوکال‌هاست شما حالا از طریق این آدرس (در اینجا: http://8bv2.localtunnel.com) تو اینترنت قابل مشاهده هست و می‌تونید این آدرس رو برای همکار یا مشتری‌تون بفرستید. برای دفعه‌های بعدی دیگه لازم نیست مسیر کلید SSH رو وارد کنید و فقط کافیه بعد از راه‌اندازی وب‌سرور، این دستور رو بنویسید:

$ localtunnel 4000

موفق باشید.