نحوه نصب وب سرور آپاچی Apache روی سرور مجازی لینوکس Linux یا VPS
۲۴ دی ۱۴۰۳
مقدمه
وبسرور Apache HTTP، پرکاربردترین وب سرور در جهان است. این سرور، امکانات قدرتمندی را ارائه میدهد از جمله ماژولهای قابل بارگذاری پویا (dynamically loadable modules)، پشتیبانی قوی از رسانهها (media) و ادغام گسترده با دیگر نرمافزارهای محبوب.
در این مقاله، یاد میگیرید که چگونه یک وب سرور Apache را روی سرور مجازی Ubuntu خود نصب کنید.
در ادامه بخوانید:
- نحوه نصب Apache
- نحوه تنظیم Firewall
- بررسی وبسرور (Web Server)
- مدیریت فرایند Apache
- تنظیم هاستهای مجازی
- آشنایی با فایلها و دایرکتوریهای مهم Apache
پیشنیازها
پیش از شروع این مقاله، به یک سرور مجازی Ubuntu نیاز دارید که شامل یک کاربر غیر روت (non-root) با دسترسیهای sudo و فایروالی فعال برای مسدود کردن پورتهای غیرضروری تنظیم شده باشد. میتوانید با دنبال کردن مقاله ما با عنوان تنظیمات اولیه سرور برای Ubuntu این موارد را انجام دهید.
همچنین برای درک کامل این مقاله، توصیه میشود در ابتدا، به مطالعه مقالههای زیر، بپردازید:
- سرور مجازی یا VPS چیست؟ + انواع سرورهای مجازی و کاربردهای آنها
- SSH چیست؟ + نحوه استفاده از SSH برای اتصال به سرور مجازی (VPS)
مرحله اول – نصب Apache
Apache در repositoryهای پیشفرض Ubuntu موجود است، بنابراین میتوانید آن را با استفاده از ابزارهای معمول مدیریت بستهها نصب کنید. در ابتدا، فهرست پکیجهای local را با اجرای دستور زیر، بهروزرسانی کنید:
sudo apt update
سپس، پکیج apache2 را نصب کنید:
sudo apt install apache2
پس از تأیید نصب، ابزار apt، وب سرور Apache و تمام وابستگیهای لازم را نصب میکند.
مرحله دوم – تنظیم فایروال (Firewall)
پیش از تست Apache، لازم است تنظیمات فایروال را تغییر دهید تا دسترسی خارجی به پورتهای پیشفرض وب، فراهم شود. در واقع، باید فایروال UFW را برای محدود کردن دسترسی به سرور خود تنظیم کرده باشید.
در حین نصب، Apache بهطور خودکار در UFW ثبت میشود و چندین پروفایل کاربردی ارائه میدهد که میتوان از آنها برای فعال یا غیرفعال کردن دسترسی به Apache از طریق فایروال استفاده کرد. اکنون میتوانید لیست پروفایلهای UFW را با اجرای دستور زیر مشاهده کنید:
sudo ufw app list
خروجی این دستور مشابه زیر است:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
همانطور که در خروجی مشخص است، سه پروفایل برای Apache موجود است:
- Apache: این پروفایل فقط پورت 80 (ترافیک وب معمولی و بدون رمزنگاری) را باز میکند.
- Apache Full: این پروفایل هر دو پورت 80 (ترافیک وب معمولی و بدون رمزنگاری) و 443 (ترافیک رمزنگاری شده با TLS/SSL) را باز میکند.
- Apache Secure: این پروفایل فقط پورت 443 (ترافیک رمزنگاری شده با TLS/SSL) را باز میکند.
توصیه میشود محدودترین پروفایلی را که با تنظیمات شما سازگار است فعال کنید. از آنجا که در این راهنما هنوز SSL را پیکربندی نکردهاید، تنها نیاز به اجازه دسترسی به پورت 80 دارید:
sudo ufw allow 'Apache'
برای تأیید تغییرات، وضعیت فایروال را بررسی کنید:
sudo ufw status
خروجی دستور فوق، لیستی از ترافیک HTTP مجاز را نشان میدهد:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
همانطور که در خروجی مشخص است، پروفایل فعال شده و دسترسی به وب سرور Apache امکانپذیر شده است.
مرحله سوم – بررسی وب سرور
در پایان فرآیند نصب، Ubuntu به طور خودکار، Apache را راهاندازی میکند. بنابراین وب سرور هماکنون فعال و در حال اجرا است. برای اطمینان از فعال بودن سرویس، دستور زیر را اجرا کنید:
sudo systemctl status apache2
خروجی دستور فوق، مشابه زیر است:
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Tue 2022-04-26 15:33:21 UTC; 43s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 5089 (apache2)
Tasks: 55 (limit: 1119)
Memory: 4.8M
CPU: 33ms
CGroup: /system.slice/apache2.service
├─5089 /usr/sbin/apache2 -k start
├─5091 /usr/sbin/apache2 -k start
└─5092 /usr/sbin/apache2 -k start
همانطور که در خروجی مشخص است، سرویس با موفقیت راهاندازی شده است. با این حال، بهترین روش برای تست این موضوع درخواست یک صفحه، از Apache است.
برای تأیید عملکرد صحیح Apache، میتوانید از طریق آدرس IP سرور خود به صفحه پیشفرض Apache دسترسی پیدا کنید. اگر آدرس IP سرور خود را نمیدانید، میتوانید آن را از طریق خط فرمان به روشهای مختلف پیدا کنید:
hostname -I
خروجی دستور فوق، شامل چند آدرس خواهد بود که با فاصله از هم جدا شدهاند. هر یک را در مرورگر خود امتحان کنید تا بررسی کنید کدامیک کار میکند.
راه دیگر پیدا کردن آدرس IP سرور مجازیتان، استفاده از ابزار icanhazip.com است. این وبسایت، آدرس IP عمومی سرور شما را که از مکانی دیگر در اینترنت خوانده شده است، نمایش میدهد:
curl -4 icanhazip.com
پس از به دست آوردن آدرس IP سرور، آن را در نوار آدرس مرورگر وارد کنید:
http://your_server_ip
در این صورت، صفحه پیشفرض وب سرور Ubuntu Apache را مشاهده خواهید کرد که مشابه تصویر زیر است:
این صفحه نشان میدهد که Apache در سرور مجازی شما، به درستی کار میکند. همچنین، این صفحه شامل یکسری اطلاعات پایه در مورد فایلها و دایرکتوریهای مهم Apache است.
مرحله چهارم – مدیریت فرایند Apache
اکنون که وب سرور شما راهاندازی شده است، بیایید برخی از دستورات مدیریتی پایه را با استفاده از systemctl بررسی کنیم. برای توقف وب سرور، میتوانید دستور زیر را اجرا کنید:
sudo systemctl stop apache2
برای راهاندازی مجدد وب سرور در صورت توقف، میتوانید از دستور زیر استفاده کنید:
sudo systemctl start apache2
برای توقف و سپس راهاندازی دوباره سرویس، میتوانید دستور زیر را اجرا کنید:
sudo systemctl restart apache2
اگر که فقط یکسری تغییرات در تنظیمات Apache ایجاد کردهاید، میتوانید Apache را بدون قطع اتصال، با دستور زیر، دوباره بارگذاری کنید:
sudo systemctl reload apache2
بهطور پیشفرض، Apache بهگونهای تنظیم شده است که هنگام بوت شدن سرور، بهطور خودکار شروع به کار کند. اگر نمیخواهید این رفتار ادامه یابد، میتوانید با دستور زیر آن را غیرفعال کنید:
sudo systemctl disable apache2
برای فعال کردن مجدد سرویس بهگونهای که هنگام بوت سرور بهطور خودکار راهاندازی شود، از دستور زیر استفاده کنید:
sudo systemctl enable apache2
با اجرای دستور فوق، Apache بهطور خودکار هنگام بوت شدن سرور راهاندازی خواهد شد.
مرحله پنجم — تنظیم هاستهای مجازی
هنگام استفاده از وب سرور Apache، میتوانید از هاستهای مجازی (Virtual Hosts) آن نیز، استفاده کنید (Virtual Hostها مشابه بلاکهای سرور در Nginx هستند) تا بیش از یک دامنه را در یک سرور مدیریت و جزئیات مربوط به پیکربندی را، کپسولهسازی کنید. در این بخش، یک دامنه به نام your_domain
تنظیم خواهیم کرد، اما شما باید آن را با نام دامنه واقعی خود جایگزین کنید.
Apache در Ubuntu به طور پیشفرض یک بلاک سرور فعال دارد که محتوا را از مسیر /var/www/html
ارائه میدهد. این ساختار برای یک سایت مناسب است، اما اگر میزبان چندین سایت هستید، مدیریت آن دشوار خواهد شد. به جای تغییر مسیر /var/www/html
، یک دایرکتوری برای دامنه your_domain خود ایجاد کنید:
sudo mkdir /var/www/your_domain
در ادامه، مالکیت دایرکتوری را به کاربری که در حال حاضر وارد سیستم شده است اختصاص دهید (با استفاده از متغیر $USER
):
sudo chown -R $USER:$USER /var/www/your_domain
اگر مقادیر پیشفرض umask (که مجوزهای پیشفرض یک فایل را تعیین میکند) را تغییر ندادهاید، مجوزهای دایرکتوری ریشه (/
) وب شما به احتمال زیاد درست تنظیم شده است. با این حال، برای اطمینان از صحیح بودن تنظیم مجوزها، به طوری که، مالک (Owner) امکان خواندن، نوشتن، و اجرای فایلها را داشته باشد و دیگران تنها امکان خواندن و اجرای فایلها را داشته باشند؛ دستور زیر را اجرا کنید:
sudo chmod -R 755 /var/www/your_domain
سپس، با استفاده از nano یا ویرایشگر دلخواهتان، یک صفحه index.html
ایجاد کنید:
sudo nano /var/www/your_domain/index.html
درون فایل، کد زیر را قرار دهید:
<html>
<head>
<title>Welcome to Your_domain!</title>
</head>
<body>
<h1>Success! The your_domain virtual host is working!</h1>
</body>
</html>
سپس فایل را ذخیره کرده و از آن خارج شوید. اگر که از nano استفاده میکنید؛ میتوانید این کار را با فشردن دکمههای CTRL+X
و سپس Y
و در نهایت ENTER
، انجام دهید.
برای اینکه Apache بتواند این محتوا را ارائه دهد، لازم است یک فایل virtual host با دستورات مناسب ایجاد کنید. به جای تغییر فایل پیکربندی پیشفرض که در مسیر /etc/apache2/sites-available/000-default.conf
قرار دارد، یک فایل جدید در مسیر /etc/apache2/sites-available/your_domain.conf
بسازید:
sudo nano /etc/apache2/sites-available/your_domain.conf
بلوک پیکربندی زیر که مشابه virtual host پیشفرض است، اما طبق دایرکتوری و نام دامنه جدید شما بهروزرسانی شده است را به فایل فوق، اضافه کنید:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
توجه کنید که مقدار DocumentRoot باید برابر با دایرکتوری جدید ما باشد و مقدار ServerAdmin ایمیلی است که مدیر سایت your_domain
به آن دسترسی دارد. همچنین، دو دستور جدید به فایل، اضافه شده است: ServerName، که دامنه اصلی را تعیین میکند و ServerAlias، که نامهای اضافی را به دامنه اصلی متصل میکنند. فایل را ذخیره کرده و ببندید. حالا آن را با ابزار a2ensite فعال کنید:
sudo a2ensite your_domain.conf
سایت پیشفرض تعریفشده در 000-default.conf
را غیرفعال کنید:
sudo a2dissite 000-default.conf
سپس پیکربندی را بررسی کنید تا از بروز خطاهای احتمالی جلوگیری شود:
sudo apache2ctl configtest
باید خروجی مشابه زیر را دریافت کنید:
. . .
Syntax OK
برای اعمال تغییرات، Apache را مجدداً راهاندازی کنید:
sudo systemctl restart apache2
اکنون Apache دامنه شما را ارائه میدهد. میتوانید با مراجعه به http://your_domain
این موضوع را تست کنید، صفحه نهایی، باید مشابه تصویر زیر باشد:
مرحله ششم – آشنایی با فایلها و دایرکتوریهای مهم Apache
اکنون که یاد گرفتید چگونه سرویس Apache را مدیریت کنید، بهتر است چند دقیقه وقت بگذارید تا با چند دایرکتوری و فایل مهم آشنا شوید.
محتوا (Content)
/var/www/html
: محتوای واقعی وب که بهصورت پیشفرض فقط شامل صفحه Apache است که قبلاً مشاهده کردید، از دایرکتوری /var/www/html
ارائه میشود. این مورد با تغییر فایلهای پیکربندی Apache قابل تغییر است.
پیکربندی سرور
/etc/apache2
: دایرکتوری پیکربندی Apache. تمام فایلهای پیکربندی Apache در اینجا قرار دارند./etc/apache2/apache2.conf
: فایل اصلی پیکربندی Apache. این فایل برای اعمال تغییرات در تنظیمات کلی Apache به کار میرود و قابل تغییر است. این فایل، مسئول بارگذاری بسیاری از فایلهای دیگر در دایرکتوری پیکربندی است./etc/apache2/ports.conf
: این فایل پورتهایی را مشخص میکند که Apache روی آنها گوش میدهد. بهصورت پیشفرض، Apache روی پورت ۸۰ و همچنین روی پورت ۴۴۳ (در صورت فعال بودن ماژول پشتیبانی از SSL) گوش میدهد./etc/apache2/sites-available/
: دایرکتوری که در آن virtual hosts مخصوص هر سایت ذخیره میشوند. Apache از فایلهای پیکربندی موجود در این دایرکتوری استفاده نمیکند مگر اینکه به دایرکتوریsites-enabled
لینک شوند. معمولاً تمام پیکربندیهای مربوط به server block در این دایرکتوری انجام میشوند و سپس با دستورa2ensite
فعال میشوند./etc/apache2/sites-enabled/
: دایرکتوری که در آن virtual hostهای فعالشده، ذخیره میشوند. معمولاً این فایلها با لینک شدن به فایلهای پیکربندی موجود درsites-available
ایجاد میشوند. Apache هنگام راهاندازی یا بارگذاری مجدد، فایلها و لینکهای موجود در این دایرکتوری را میخواند تا یک پیکربندی کامل ایجاد کند./etc/apache2/conf-available/
و/etc/apache2/conf-enabled/
: این دایرکتوریها همان رابطهای را دارند کهsites-available
وsites-enabled
با یکدیگر دارند، اما برای ذخیره قطعه کدهای مربوط به پیکربندی استفاده میشوند که یک virtual host محدود نمیشوند. فایلهای موجود درconf-available
را میتوان با دستورa2enconf
فعال و با دستورa2disconf
غیرفعال کرد./etc/apache2/mods-available/
و/etc/apache2/mods-enabled/
: این دایرکتوریها بهترتیب شامل ماژولهای در دسترس و فعال هستند. فایلهایی که به.load
ختم میشوند، شامل قطعه کدهایی برای بارگذاری ماژولهای خاص هستند، درحالیکه فایلهایی که به.conf
ختم میشوند شامل پیکربندی آن ماژولها هستند. ماژولها را میتوان با دستوراتa2enmod
وa2dismod
فعال و غیرفعال کرد.
لاگهای سرور
/var/log/apache2/access.log
: بهصورت پیشفرض، هر درخواست به سرور وب شما، در این فایل لاگ، ثبت میشود، مگر اینکه Apache بهگونهای دیگر پیکربندی شده باشد./var/log/apache2/error.log
: بهصورت پیشفرض، تمام خطاها در این فایل ثبت میشوند. دستور LogLevel در پیکربندی Apache مشخص میکند که جزئیات مربوط به خطاها، چقدر باشد.
نتیجهگیری
اکنون که وب سرور شما نصب شده است، گزینههای متنوعی برای استفاده از آن دارید. این وب سرور امکان راهاندازی وبسایتهای استاتیک (Static Websites) با استفاده از HTML و CSS و JavaScript و همچنین وبسایتهای داینامیک (Dynamic Websites) را با زبانهایی مثل PHP و Python فراهم میکند. بسیاری از سیستمهای مدیریت محتوا (CMS) مانند WordPress، Drupal و Joomla نیز به راحتی با Apache سازگار هستند. علاوه بر این، Apache برای میزبانی APIها و برنامههای تحت وب (Web Applications) در فریمورکهایی مثل Laravel و Django گزینه مناسبی است. با استفاده از قابلیتهای mod_proxy، میتوان از آن به عنوان پروکسی سرور برای مسیریابی درخواستها نیز بهره برد. این وب سرور همچنین در ترکیب با Apache Tomcat میتواند برنامههای تحت جاوا (Java Web Applications) را اجرا کند. توانایی میزبانی انواع وبسایتها و ارائه عملکرد بالا، آن را به انتخابی ایدهآل برای توسعهدهندگان تبدیل کرده است.
سرور مجازی (VPS) لیارا یکی از بهترین گزینهها برای میزبانی پروژههای مختلف وب و اپلیکیشن هستند. این سرورها با زیرساختهای قدرتمند و بهروز، تجربهای پایدار و سریع را برای کاربران فراهم میکنند. یکی از ویژگیهای برجسته لیارا، سرعت بالای سرورهای آن است که برای وبسایتها و اپلیکیشنهای پرترافیک بسیار ایدهآل است. همچنین، این سرورها از منابع اختصاصی بهرهمند هستند که باعث افزایش عملکرد و کاهش زمان بارگذاری (Loading Time) میشود.
از دیگر مزایای VPS لیارا، قیمتهای مقرونبهصرفه آن است که امکان استفاده از خدمات حرفهای را با هزینه کم فراهم میکند. لیارا علاوه بر زیرساخت قدرتمند، از پشتیبانی فنی ۲۴/۷ برخوردار است که مشکلات کاربران را به سرعت حل میکند. با این ویژگیها، لیارا انتخابی مطمئن برای کسبوکارهای کوچک، متوسط و حتی استارتاپها به شمار میرود.
همچنین بخوانید: نحوه راهاندازی اولیه سرور مجازی با اوبونتو Ubuntu