آموزش میزبانی وبسایت روی سرور خانگی لینوکس بدون هزینه
اگر یک سیستم قدیمی یا کامپیوتر بدون استفاده دارید، میتوانید از آن به عنوان یک سرور لینوکس استفاده کنید و بدون خرید هاست، یک وبسایت را روی شبکه خانگی خود میزبانی نمائید. برای این کار به یک سیستم دارای لینوکس، اتصال اینترنت، یک IP پابلیک و یک وبسرور نیاز دارید. اگر IP پابلیک شما ثابت (استاتیک) نباشد، میتوانید از سرویسهای Dynamic DNS مانند DuckDNS استفاده کنید تا یک نام ثابت همیشه به IP فعلی اینترنت شما اشاره کند.
در این مطلب، وبسرور Apache را نصب میکنیم و در ادامه MariaDB، PHP و WordPress را راهاندازی میکنیم. سپس با Port Forwarding دسترسی از اینترنت را فراهم کرده و در نهایت HTTPS را با گواهی رایگان Let’s Encrypt فعال میکنیم.
برای میزبانی وبسایت در خانه به چه چیزهایی نیاز داریم؟
قبل از شروع، موارد زیر را آماده کنید:
- یک کامپیوتر یا سرور با لینوکس
- توزیعی مانند Ubuntu، Debian، Rocky Linux یا RHEL
- اتصال اینترنت
- IP عمومی روی اتصال اینترنت
- دسترسی به تنظیمات مودم یا روتر
- امکان Port Forwarding روی روتر
- Apache
- MariaDB
- PHP
- WordPress
یکی از مهمترین پیشنیازها داشتن IP پابلیک است. بسیاری از اتصالهای خانگی IP عمومی داینامیک دارند و ممکن است این IP بعد از قطع و وصل اینترنت تغییر کند. در این حالت میتوان از DDNS استفاده کرد.
مرحله اول، راهاندازی DuckDNS برای IP داینامیک
DuckDNS یک سرویس رایگان Dynamic DNS است که یک نام مانند زیر در اختیار شما قرار میدهد:
این نام میتواند همیشه به IP عمومی فعلی اینترنت شما اشاره کند.
پس از ایجاد دامنه در DuckDNS، باید IP عمومی سیستم را به صورت دورهای برای سرویس ارسال کنیم. برای این کار ابتدا یک پوشه ایجاد کنید:
سپس اسکریپت بهروزرسانی IP را ایجاد کنید:
مقادیر <your-subdomain> و <your-token> را با اطلاعات حساب DuckDNS خود جایگزین کنید.
مجوز اجرای اسکریپت را تنظیم کنید:
برای اینکه IP به صورت خودکار بهروزرسانی شود، میتوان این اسکریپت را با Cron هر پنج دقیقه اجرا کرد:
سپس این خط را اضافه کنید:
برای آزمایش:
در صورت دریافت OK، بهروزرسانی IP با موفقیت انجام شده است.
مرحله دوم، نصب Apache
Apache یکی از وبسرورهای متنباز و قدیمی لینوکس است که برای میزبانی وبسایتهای استاتیک و داینامیک استفاده میشود.
در Ubuntu و Debian میتوانید آن را با دستور زیر نصب کنید:
سرویس را فعال و اجرا کنید:
و وضعیت آن را بررسی کنید:
در Rocky Linux و سایر توزیعهای مبتنی بر RHEL:
در این مرحله، Apache آماده دریافت درخواستهای HTTP است.
مرحله سوم، نصب MariaDB
اگر قصد دارید WordPress یا هر نرمافزار مبتنی بر پایگاه داده را اجرا کنید، به یک Database Server نیاز دارید.
در Ubuntu و Debian:
در Rocky Linux:
MariaDB اطلاعاتی مانند نوشتهها، کاربران، تنظیمات و سایر دادههای WordPress را ذخیره میکند.
مرحله چهارم، نصب PHP
WordPress با PHP اجرا میشود، بنابراین PHP و ماژولهای موردنیاز آن را نصب کنید.
در Ubuntu و Debian:
در Rocky Linux:
اکنون اجزای اصلی LAMP شامل Linux، Apache، MariaDB و PHP آماده هستند.
مرحله پنجم، نصب WordPress
برای دریافت آخرین نسخه WordPress:
فایل را اکستراکت کنید:
سپس فایلهای WordPress را به مسیر Document Root منتقل کنید:
مجوزها و مالکیت فایلها را تنظیم کنید:
در Rocky Linux معمولا مالک فایلها باید apache باشد:
در سیستمهایی که SELinux فعال است، ممکن است لازم باشد Context فایلها را هم اصلاح کنید:
ایجاد پایگاه داده WordPress
ابتدا وارد MariaDB شوید:
سپس پایگاه داده و کاربر مخصوص WordPress را ایجاد کنید:
در پایان:
استفاده از یک کاربر اختصاصی برای WordPress بهتر از استفاده مستقیم از حساب root است.
برای میزبانی وبسایتها و سرویسهای مبتنی بر لینوکس، خرید سرور مجازی لینوکس را بررسی و پلن مناسب خود را انتخاب کنید.
مرحله ششم، تنظیم Virtual Host در Apache
برای اینکه Apache دامنه DuckDNS را به پوشه WordPress متصل کند، باید یک Virtual Host ایجاد کنیم.
در Ubuntu و Debian:
محتوای فایل:
به جای mywebsite.duckdns.org نام DuckDNS خودتان را قرار دهید.
سپس سایت و Rewrite را فعال کنید:
در Rocky Linux میتوانید فایل Virtual Host را در مسیر زیر قرار دهید:
ساختار Virtual Host در هر دو سیستم مشابه است.
مرحله هفتم، باز کردن پورتهای HTTP و HTTPS
فایروال لینوکس باید اجازه دسترسی به پورتهای 80 و 443 را بدهد.
در Ubuntu و Debian:
در Rocky Linux:
اما باز کردن پورت روی فایروال سرور به تنهایی کافی نیست. چون سرور داخل شبکه خانگی قرار دارد، باید روی روتر هم Port Forwarding انجام شود.
مرحله هشتم، تنظیم Port Forwarding روی روتر
ابتدا IP داخلی سرور لینوکس را پیدا کنید:
برای مثال ممکن است خروجی چیزی شبیه این باشد:
اکنون وارد پنل مدیریتی روتر شوید و در بخش Port Forwarding دو قانون ایجاد کنید:
به این ترتیب درخواستهایی که از اینترنت روی پورت 80 یا 443 دریافت میشوند، به سرور لینوکس داخل شبکه ارسال خواهند شد.
برای تست بهتر است از اینترنت موبایل و خارج از شبکه خانگی استفاده کنید:
اگر سایت از اینترنت قابل دسترسی باشد، باید پاسخ HTTP دریافت کنید.
مرحله نهم، نصب WordPress از طریق مرورگر
اکنون آدرس دامنه DuckDNS را در مرورگر باز کنید:
صفحه نصب WordPress نمایش داده میشود.
در مراحل نصب، اطلاعات پایگاه دادهای که قبلا ایجاد کردیم را وارد کنید:
پس از تکمیل نصب، میتوانید وارد پیشخوان WordPress شوید و سایت خود را مدیریت کنید.
مرحله دهم، فعالسازی HTTPS با Let’s Encrypt
اگر سایت از اینترنت قابل دسترسی است، استفاده از HTTPS ضروری است. برای دریافت گواهی رایگان Let’s Encrypt میتوان از Certbot استفاده کرد.
در Ubuntu و Debian:
سپس:
در Rocky Linux:
و:
Certbot میتواند تنظیمات Apache را برای HTTPS انجام دهد و امکان انتقال خودکار HTTP به HTTPS را فراهم کند.
آیا میزبانی وبسایت روی سرور خانگی مناسب است؟
راهاندازی وبسایت روی کامپیوتر خانگی برای یادگیری لینوکس، آزمایش وبسرور، توسعه و پروژههای شخصی گزینه خوبی است. با این روش میتوانید بدون پرداخت هزینه هاست، با Apache، MariaDB، PHP، WordPress، DNS، فایروال و Port Forwarding کار کنید.
اما برای یک وبسایت عمومی و مهم، محدودیتهایی وجود دارد. قطع شدن برق یا اینترنت باعث از دسترس خارج شدن سایت میشود. IP متغیر، محدودیت آپلود اینترنت، امنیت شبکه خانگی و نیاز به بکاپگیری منظم هم باید در نظر گرفته شوند.
به همین دلیل، سرور خانگی بیشتر برای محیط آزمایشی و آموزشی مناسب است. برای وبسایتهای تجاری، استفاده از سرور مجازی یا زیرساخت حرفهای معمولا مدیریت سادهتر و دسترسپذیری بیشتری فراهم میکند.
جمعبندی
برای میزبانی رایگان یک وبسایت روی سرور خانگی لینوکس میتوان یک سیستم قدیمی را به وبسرور تبدیل کرد. در این سناریو، DuckDNS مشکل IP پویا را تا حد زیادی برطرف میکند، Apache درخواستهای وب را دریافت میکند، MariaDB اطلاعات WordPress را ذخیره میکند و PHP امکان اجرای WordPress را فراهم میکند.
در ادامه با تنظیم فایروال و Port Forwarding، دسترسی از اینترنت فراهم میشود و با Let’s Encrypt میتوان HTTPS رایگان را فعال کرد.
این پروژه علاوه بر میزبانی یک وبسایت، تمرین بسیار خوبی برای یادگیری Linux، Apache، MariaDB، PHP، DNS، Firewall، Port Forwarding، SSL و WordPress است.