آموزش نصب Apache در Ubuntu ۲۶.۰۴ LTS؛ از نصب تا راهاندازی SSL
Apache HTTP Server یکی از وبسرورهای متنباز و پرکاربرد برای میزبانی وبسایتها، برنامههای تحت وب و APIها است. در این آموزش یاد میگیرید چگونه وبسرور Apache را روی Ubuntu ۲۶.۰۴ LTS نصب کنید، برای دامنه خود Virtual Host بسازید، فایلهای سایت را در مسیر اختصاصی قرار دهید و با گواهی رایگان Let’s Encrypt اتصال HTTPS را فعال کنید.
این راهنما برای مدیران سرور، توسعهدهندگان PHP و افرادی مناسب است که قصد دارند یک وبسایت را روی سرور مجازی لینوکس راهاندازی کنند.
آنچه در این آموزش انجام میدهیم:
- نصب و اجرای Apache روی Ubuntu ۲۶.۰۴
- تنظیم فایروال برای دسترسی HTTP و HTTPS
- ساخت Document Root و صفحه آزمایشی
- ایجاد Virtual Host برای دامنه اختصاصی
- فعالسازی SSL رایگان با Let’s Encrypt
- بررسی سلامت سرویس و رفع خطاهای رایج
پیشنیازهای نصب Apache در Ubuntu ۲۶.۰۴ #
قبل از شروع، موارد زیر را آماده کنید:
| پیشنیاز | توضیحات |
|---|---|
| سیستمعامل | Ubuntu 26.04 LTS |
| دسترسی سرور | SSH با کاربری دارای مجوز sudo |
| دامنه | برای مثال app.example.com |
| آدرس IP | IP عمومی سرور |
| دسترسی شبکه | امکان اتصال به پورتهای ۸۰ و ۴۴۳ |
| DNS | رکورد A دامنه متصل به IP سرور |
در این مقاله از دامنه آزمایشی app.example.com استفاده میکنیم. هنگام اجرای دستورات، آن را با دامنه واقعی خودتان جایگزین کنید.
نکته: رکورد DNS باید به IP همین سرور اشاره کند. اگر از سرویس CDN یا پروکسی DNS استفاده میکنید، تنظیمات آن نیز باید اجازه دسترسی لازم برای صدور گواهی SSL را بدهد.
مرحله اول: بهروزرسانی Ubuntu و نصب Apache #
ابتدا از طریق SSH به سرور متصل شوید و فهرست بستههای نرمافزاری را بهروزرسانی کنید:
sudo apt update سپس Apache را نصب کنید:
sudo apt install apache2 -y پس از پایان نصب، نسخه وبسرور را بررسی کنید:
apachectl -v این دستور شماره نسخه Apache و اطلاعات ساخت آن را نمایش میدهد. نسخه دقیق بهروزرسانیشده ممکن است با نسخه درجشده در این مقاله متفاوت باشد.
اکنون سرویس را فعال کنید تا با روشنشدن مجدد سرور بهصورت خودکار اجرا شود:
sudo systemctl enable --now apache2 وضعیت سرویس را بررسی کنید:
sudo systemctl status apache2 اگر وضعیت active (running) نمایش داده شود، Apache در حال اجراست.
برای خروج از صفحه وضعیت، کلید q را فشار دهید.
بررسی اولیه وبسرور
در ترمینال سرور اجرا کنید:
curl -I http://127.0.0.1 در صورت نصب صحیح، معمولاً پاسخی مانند HTTP/1.1 200 OK دریافت میکنید. پاسخ دقیق به پیکربندی سرور بستگی دارد.
در مرحله بعد، دسترسی از اینترنت را نیز بررسی خواهیم کرد.
مرحله دوم: تنظیم فایروال Ubuntu #
برای دسترسی کاربران به وبسایت، ترافیک ورودی HTTP روی پورت ۸۰ و HTTPS روی پورت ۴۴۳ باید مجاز باشد.
ابتدا وضعیت UFW را بررسی کنید:
sudo ufw status verbose اگر فایروال از قبل فعال است، قوانین لازم را اضافه کنید:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp اگر UFW غیرفعال است و از طریق SSH به سرور متصل هستید، قبل از فعالکردن آن، دسترسی SSH را مجاز کنید:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable در صورتی که SSH روی پورتی غیر از پورت استاندارد اجرا میشود، باید قانون متناسب با همان پورت را تعریف کنید. فعالکردن فایروال بدون این بررسی ممکن است دسترسی راه دور شما را قطع کند.
در پایان:
sudo ufw status numbered باید قوانین مربوط به پورتهای موردنیاز را مشاهده کنید.
اگر سرور از فایروال ارائهدهنده زیرساخت نیز استفاده میکند، اجازه دسترسی به پورتهای ۸۰ و ۴۴۳ باید در آن لایه هم بررسی شود.
مرحله سوم: ساخت پوشه اختصاصی وبسایت #
در Apache، مسیر DocumentRoot مشخص میکند که فایلهای سایت از کدام پوشه ارائه شوند.
برای دامنه نمونه، پوشه زیر را ایجاد میکنیم:
sudo mkdir -p /var/www/app.example.com اکنون فایل صفحه آزمایشی را بسازید:
sudo nano /var/www/app.example.com/index.html کد زیر را در فایل قرار دهید:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>تست وبسرور Apache</title>
</head>
<body>
<h1>وبسرور Apache با موفقیت راهاندازی شد</h1>
<p>این صفحه از طریق Apache روی Ubuntu 26.04 ارائه میشود.</p>
</body>
</html> برای ذخیره در ویرایشگر Nano، کلیدهای Ctrl + O را فشار دهید، Enter بزنید و با Ctrl + X خارج شوید.
تنظیم مالکیت و مجوز فایلها
برای یک سایت استاتیک، لازم نیست کاربر Apache مالک تمام فایلها باشد. روش محدودتر این است که فایلها تحت مالکیت مدیر سیستم بمانند و وبسرور فقط مجوز خواندن داشته باشد.
دستورات زیر را اجرا کنید:
sudo chown -R root:root /var/www/app.example.com
sudo find /var/www/app.example.com -type d -exec chmod 755 {} \;
sudo find /var/www/app.example.com -type f -exec chmod 644 {} \; در این تنظیم، پوشهها قابل پیمایش و فایلها برای وبسرور قابل خواندن هستند، اما Apache مالک فایلهای سایت نیست.
اگر برنامه شما باید فایلهایی را روی دیسک بنویسد، برای همان پوشههای مشخص مجوزهای لازم را تعریف کنید. از اعطای مجوز نوشتن عمومی به کل Document Root خودداری کنید.
مرحله چهارم: ساخت Virtual Host در Apache #
Virtual Host به Apache اجازه میدهد براساس نام دامنه، سایت و تنظیمات مناسب آن را انتخاب کند. این قابلیت برای میزبانی چند دامنه روی یک سرور کاربرد دارد.
ابتدا فایل پیکربندی دامنه را بسازید:
sudo nano /etc/apache2/sites-available/app.example.com.conf محتوای زیر را قرار دهید:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName app.example.com
DocumentRoot /var/www/app.example.com
DirectoryIndex index.html index.php
<Directory /var/www/app.example.com>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/app.example.com_error.log
CustomLog ${APACHE_LOG_DIR}/app.example.com_access.log combined
</VirtualHost> در صورت نیاز، مقادیر app.example.com و آدرس ایمیل مدیر را جایگزین کنید.
آشنایی با تنظیمات Virtual Host
ServerName: نام دامنه اصلی که این Virtual Host به آن پاسخ میدهد.
DocumentRoot: مسیر فایلهای سایت؛ در این مثال /var/www/app.example.com است.
DirectoryIndex: فایلهایی که هنگام بازشدن آدرس اصلی سایت بررسی میشوند.
Options FollowSymLinks: اجازه استفاده از پیوندهای نمادین را میدهد، بدون اینکه فهرست محتویات پوشه بهصورت پیشفرض نمایش داده شود.
AllowOverride None: استفاده از تنظیمات .htaccess را غیرفعال میکند. برای سایتهای استاتیک این انتخاب سادهتر است؛ اگر برنامهای مانند WordPress به قواعد .htaccess نیاز دارد، باید این گزینه متناسب با نیاز برنامه تنظیم شود.
Require all granted: درخواستهای مجاز به فایلهای این پوشه اجازه دسترسی میگیرند.
ErrorLog و CustomLog: مسیر ثبت خطاها و درخواستهای ورودی همین دامنه را مشخص میکنند.
فعالسازی Virtual Host
ابتدا سایت پیشفرض Apache را غیرفعال کنید:
sudo a2dissite 000-default.conf سپس پیکربندی دامنه را فعال کنید:
sudo a2ensite app.example.com.conf پیش از اعمال تغییرات، صحت تنظیمات را بررسی کنید:
sudo apachectl configtest خروجی مورد انتظار:
Syntax OK اگر خطایی مشاهده شد، قبل از ادامه آن را برطرف کنید.
اکنون بهجای راهاندازی مجدد کامل سرویس، تنظیمات جدید را بارگذاری کنید:
sudo systemctl reload apache2 غیرفعالکردن
000-default.confممکن است رفتار سایت پیشفرض یا دامنههای بدون Virtual Host را تغییر دهد. این دستور را روی سروری که سایت دیگری روی Apache دارد، بدون بررسی تنظیمات موجود اجرا نکنید.
مرحله پنجم: بررسی عملکرد دامنه #
ابتدا میتوانید بدون وابستگی به انتشار DNS، درخواست را مستقیماً به Virtual Host آزمایشی ارسال کنید:
curl -H 'Host: app.example.com' http://127.0.0.1/ در صورت صحیحبودن تنظیمات، کد HTML صفحه آزمایشی برگردانده میشود.
سپس بررسی کنید رکورد DNS دامنه به IP سرور اشاره میکند:
dig +short A app.example.com در صورت نیاز، ابزار dnsutils را نصب کنید:
sudo apt install dnsutils -y اگر پاسخ DNS با IP سرور مطابقت داشت، سایت را در مرورگر باز کنید:
http://app.example.com همچنین میتوانید از ترمینال اجرا کنید:
curl -I http://app.example.com اگر صفحه آزمایشی در مرورگر باز میشود، نصب پایه Apache و Virtual Host موفق بوده است. اکنون میتوانیم HTTPS را فعال کنیم.
مرحله ششم: فعالسازی SSL رایگان با Let’s Encrypt #
گواهی TLS ارتباط میان مرورگر و وبسرور را رمزنگاری میکند. سرویس Let’s Encrypt امکان دریافت گواهی معتبر رایگان را فراهم میکند و Certbot فرایند صدور و تنظیم گواهی را سادهتر میسازد.
برای نصب Certbot و افزونه Apache از مخزن Ubuntu استفاده کنید:
sudo apt update
sudo apt install certbot python3-certbot-apache -y پیش از صدور گواهی، مطمئن شوید که:
- دامنه به IP عمومی سرور اشاره میکند.
- پورت ۸۰ برای اعتبارسنجی HTTP در دسترس است.
- پورت ۴۴۳ برای سرویس HTTPS باز است.
- Virtual Host دامنه بدون خطای پیکربندی فعال است.
اکنون برای دامنه اصلی گواهی صادر کنید:
sudo certbot --apache -d app.example.com اگر هر دو نسخه بدون www و با www باید فعال باشند و هر دو رکورد DNS صحیح دارند، میتوانید گواهی را برای هر دو نام درخواست کنید:
sudo certbot --apache \
-d example.com \
-d www.example.com در مثال دوم، نام دامنه را با مقادیر واقعی جایگزین کنید.
دستور Certbot ممکن است برای انتخاب برخی تنظیمات یا تأیید شرایط، از شما ورودی بخواهد. مراحل نمایشدادهشده را دنبال کنید.
پس از تکمیل فرایند، Certbot تنظیمات لازم برای ارائه HTTPS را در Apache اعمال میکند.
اگر از قبل گواهی SSL دارید یا پیکربندی HTTPS بهصورت دستی انجام شده است، پیش از اجرای Certbot فایلهای تنظیمات موجود را بررسی کنید تا تغییر ناخواستهای در پیکربندی ایجاد نشود.
بررسی تمدید خودکار گواهی SSL
گواهیهای Let’s Encrypt باید پیش از انقضا تمدید شوند. پس از صدور گواهی، تمدید آزمایشی را اجرا کنید:
sudo certbot renew --dry-run اگر فرایند بدون خطا انجام شد، اعتبارسنجی تمدید نیز موفق بوده است.
برای بررسی زمان انقضای گواهی:
sudo certbot certificates و برای اطمینان از بارگذاری تنظیمات جدید Apache:
sudo apachectl configtest
sudo systemctl reload apache2 اکنون دامنه را با HTTPS باز کنید:
https://app.example.com مرورگر باید اتصال امن را نشان دهد.
مرحله هفتم: مدیریت سرویس Apache #
برای مدیریت روزمره Apache، دستورات زیر کاربردی هستند.
بررسی وضعیت سرویس:
sudo systemctl status apache2 شروع سرویس:
sudo systemctl start apache2 توقف سرویس:
sudo systemctl stop apache2 راهاندازی مجدد سرویس:
sudo systemctl restart apache2 بارگذاری مجدد پیکربندی بدون توقف کامل سرویس:
sudo systemctl reload apache2 فعالسازی اجرا هنگام بالا آمدن سیستم:
sudo systemctl enable apache2 بررسی صحت پیکربندی پیش از اعمال تغییرات:
sudo apachectl configtest در بیشتر تغییرات عادی پیکربندی، اگر فقط لازم است تنظیمات دوباره خوانده شوند، reload مناسبتر از restart است. البته اگر نوع تغییر به راهاندازی مجدد نیاز داشته باشد، باید دستور متناسب را اجرا کنید.
مرحله هشتم: مشاهده لاگها و عیبیابی #
در صورت نمایش خطا یا بازنشدن سایت، اولین اقدام بررسی لاگهاست.
مشاهده لاگ خطای Apache
sudo tail -n 100 /var/log/apache2/error.log برای بررسی لاگ اختصاصی دامنه:
sudo tail -n 100 /var/log/apache2/app.example.com_error.log مشاهده درخواستهای ورودی
sudo tail -n 100 /var/log/apache2/access.log برای دنبالکردن زنده خطاها هنگام آزمایش سایت:
sudo tail -f /var/log/apache2/error.log برای خروج از حالت نمایش زنده، Ctrl + C را فشار دهید.
بررسی پورتهای در حال استفاده
sudo ss -lntp به کمک این دستور میتوانید بررسی کنید چه سرویسهایی در حال گوشدادن روی پورتهای شبکه هستند.
بررسی تنظیمات Virtual Host
sudo apachectl -S این دستور Virtual Hostهای شناختهشده توسط Apache و نحوه انتخاب آنها را نمایش میدهد.
خطاهای رایج هنگام نصب Apache در Ubuntu ۲۶.۰۴ #
خطای ۴۰۳ Forbidden
این خطا معمولاً به مجوزهای فایل و پوشه، قواعد <Directory> یا محدودیتهای دسترسی مربوط است.
مجوزهای مسیر سایت را بررسی کنید:
namei -l /var/www/app.example.com/index.html Apache برای خواندن فایل باید اجازه پیمایش پوشههای بالادستی و خواندن فایل نهایی را داشته باشد. از راهکارهایی مانند chmod -R 777 استفاده نکنید؛ این روش مشکل را اصولی حل نمیکند و مجوزهای ناامن ایجاد میکند.
خطای ۴۰۴ Not Found
ابتدا مطمئن شوید که فایل در مسیر تعیینشده در DocumentRoot قرار دارد:
ls -la /var/www/app.example.com سپس پیکربندی دامنه را بررسی کنید:
sudo apachectl -S نام دامنه، مسیر فایلها و فعالبودن Virtual Host را بررسی کنید.
خطای ۵۰۲ Bad Gateway
Apache در پیکربندی پایه این آموزش مستقیماً فایل استاتیک ارائه میکند و بهتنهایی نیازی به Gateway ندارد. اگر خطای ۵۰۲ مشاهده میکنید، احتمال دارد یک Reverse Proxy، CDN یا سرویس backend در مسیر درخواست وجود داشته باشد.
در این حالت باید لاگ همان لایه و وضعیت سرویس مقصد را نیز بررسی کنید.
خطای اتصال به دامنه
موارد زیر را بررسی کنید:
- رکورد DNS به IP صحیح سرور اشاره کند.
- سرویس Apache فعال باشد.
- قوانین فایروال سیستم و زیرساخت اجازه دسترسی به پورت ۸۰ و ۴۴۳ را بدهند.
- دامنه در Virtual Host صحیح تعریف شده باشد.
برای بررسی سرویس:
sudo systemctl is-active apache2 و برای بررسی DNS:
dig +short A app.example.com خطا هنگام صدور گواهی SSL
اگر Certbot نمیتواند گواهی صادر کند، ابتدا دامنه، دسترسی عمومی پورت ۸۰، تنظیمات DNS و فایل Virtual Host را بررسی کنید.
برای مشاهده گواهیهای موجود:
sudo certbot certificates و برای بررسی صحت تنظیمات Apache:
sudo apachectl configtest اگر مشکل برطرف نشد، پیام کامل Certbot و لاگ Apache را بررسی کنید. صرفاً تکرار دستور صدور گواهی بدون رفع علت خطا معمولاً کمکی نمیکند.
آیا Apache از PHP پشتیبانی میکند؟ #
بله. Apache میتواند در کنار PHP برای میزبانی برنامههای داینامیک مانند WordPress استفاده شود. بااینحال، نصب Apache بهتنهایی به معنی نصب PHP یا آمادهبودن محیط اجرای برنامه نیست.
برای اجرای PHP باید روش اتصال PHP به وبسرور را نیز تنظیم کنید. این کار میتواند با ماژول PHP یا PHP-FPM و ماژولهایی مانند mod_proxy_fcgi انجام شود. انتخاب روش مناسب به ساختار سرور، نسخه PHP و الزامات امنیتی بستگی دارد.
اگر قصد دارید یک سایت WordPress را روی Ubuntu ۲۶.۰۴ راهاندازی کنید، علاوه بر Apache و PHP، باید پایگاه داده، افزونهها و تنظیمات امنیتی و پشتیبانگیری را نیز آماده کنید.
تفاوت Apache و LiteSpeed چیست؟ #
Apache و LiteSpeed هر دو برای ارائه محتوای وب استفاده میشوند، اما معماری و ویژگیهای اجرایی آنها یکسان نیست.
Apache متنباز است و با ساختار ماژولار، Virtual Hostها و طیف وسیعی از تنظیمات قابل استفاده است. LiteSpeed نیز قابلیتهای اختصاصی خود را دارد و در برخی محیطهای میزبانی وردپرس با افزونه LiteSpeed Cache بهکار میرود.
انتخاب وبسرور باید براساس نرمافزار مورد استفاده، نحوه اجرای PHP، سازگاری تنظیمات، بار کاری و نیازهای کش انجام شود. صرف نصب Apache یا LiteSpeed بهتنهایی تضمینکننده سرعت بیشتر نیست؛ پیکربندی صحیح و پایش عملکرد نیز اهمیت دارد.
پرسشهای متداول درباره نصب Apache در Ubuntu ۲۶.۰۴ #
چگونه Apache را در Ubuntu ۲۶.۰۴ نصب کنیم؟
با اجرای sudo apt update و سپس sudo apt install apache2 -y میتوانید Apache را نصب کنید. پس از آن، وضعیت سرویس را با sudo systemctl status apache2 بررسی کنید.
پورت پیشفرض Apache چیست؟
Apache معمولاً برای HTTP از پورت ۸۰ و برای HTTPS از پورت ۴۴۳ استفاده میکند. در صورت تغییر پیکربندی، پورتهای فعال را باید در فایلهای تنظیمات و قوانین فایروال بررسی کنید.
چگونه یک دامنه جدید به Apache اضافه کنیم؟
برای هر دامنه میتوانید یک فایل در مسیر /etc/apache2/sites-available/ بسازید، مقدار ServerName و DocumentRoot را تنظیم کنید، سپس با a2ensite آن را فعال کنید. پیش از بارگذاری مجدد سرویس، apachectl configtest را اجرا کنید.
آیا SSL رایگان برای Apache قابل استفاده است؟
بله. میتوانید از Let’s Encrypt و Certbot استفاده کنید. پس از تنظیم صحیح DNS و دسترسی پورتهای موردنیاز، گواهی صادر و برای ارائه HTTPS پیکربندی میشود.
آیا نصب Apache برای اجرای WordPress کافی است؟
خیر. علاوه بر وبسرور، به PHP، پایگاه داده و تنظیمات مربوط به برنامه نیز نیاز دارید. همچنین باید مجوزهای فایل، بهروزرسانیها، پشتیبانگیری و امنیت سرور را تنظیم کنید.
چگونه نسخه Apache را مشاهده کنیم؟
دستور زیر نسخه نصبشده را نمایش میدهد:
apachectl -v فایلهای پیکربندی Apache در Ubuntu کجا قرار دارند؟
بخش اصلی پیکربندی Apache در مسیر /etc/apache2/ قرار دارد. فایلهای سایت در sites-available نگهداری میشوند و سایتهای فعال از طریق sites-enabled مشخص میشوند.
جمعبندی #
در این آموزش، Apache را روی Ubuntu ۲۶.۰۴ LTS نصب کردیم، سرویس را فعال نگه داشتیم، یک Document Root و Virtual Host ساختیم و با Certbot اتصال امن HTTPS را راهاندازی کردیم.
با این مراحل میتوانید یک وبسایت ساده را روی VPS اجرا کنید و زیرساخت اولیه را برای استقرار برنامههای PHP یا سایر برنامههای وب آماده سازید.
برای راهنماییهای بیشتر درباره سرورهای لینوکسی میتوانید به مستندات رسمی Ubuntu و Apache مراجعه کنید.
منابع و مراجع
- راهنمای نصب Apache در Ubuntu
- راهنمای تنظیمات Apache در Ubuntu
- آموزش نصب Apache در Ubuntu ۲۶.۰۴ از Vultr
- راهنمای Certbot