
LAMP چیست و چه کاربردی دارد؟
LAMP یک مجموعه نرم افزاری است که شامل چهار بخش اصلی می باشد: Linux، Apache، MySQL/MariaDB و PHP. این پشته نرم افزاری به عنوان یکی از محبوب ترین راهکارهای میزبانی وب در دنیا شناخته می شود و به توسعه دهندگان و مدیران سیستم کمک می کند تا وب سایت ها و برنامه های وب دینامیک را به راحتی ایجاد و مدیریت کنند. این سرویس ها، زیرساخت اصلی در هاست لینوکس می باشد که توسط اکثر شرکت های هاستینگ مورد استفاده قرار می گیرد.
اجزای LAMP به شرح زیر هستند:
- Linux: به عنوان سیستم عامل پایه ای و منبع باز، مسئولیت مدیریت منابع سخت افزاری و پیاده سازی امنیت را بر عهده دارد.
- Apache: وب سرور معروفی که مسئول دریافت درخواست های کاربران و ارسال پاسخ ها به مرورگرها است. Apache به دلیل قدرت و قابلیت های گسترده ای که ارائه می دهد، به عنوان استاندارد در بسیاری از سرورها استفاده می شود.
- MySQL/MariaDB: سیستم های مدیریت پایگاه داده رابطه ای که داده های وب سایتها را ذخیره و بازیابی می کنند. MariaDB به عنوان یک شاخه از MySQL، گزینه ای محبوب و رایگان برای مدیریت پایگاه داده هاست.
- PHP: زبان برنامه نویسی سمت سرور که برای تولید محتوای دینامیک وب به کار می رود و به طور معمول با پایگاه دادهها تعامل دارد.
از LAMP میتوان برای بسیاری موارد از جمله، ایجاد وب سایت ها و برنامه های وب دینامیک، میزبانی وب سایت های تجاری و شخصی، توسعه اپلیکیشن های تحت وب سفارشی و سیستم های مدیریت محتوا مانند WordPress، راه اندازی و مدیریت پایگاه داده های وب سایت و بسیار سناریوهای دیگر استفاده کرد.
با توجه به انعطاف پذیری و قدرت این تکنولوژی، LAMP به یکی از انتخاب های اصلی برای میزبانی وب در دنیا تبدیل شده است.
در این مقاله به ارائه یک راهنمای گام به گام برای نصب و پیکربندی LAMP (Linux، Apache، MySQL/MariaDB، PHP) می پردازیم. هدف از این مقاله، ارائه اطلاعات کاربردی برای کاربران و مدیران سیستم است که می خواهند وب سرور خود را در سرور مجازی و یا سرور اختصاصی خود با قابلیت های کامل وب سایت های دینامیک راه اندازی کنند.
تفاوت های کلی بین Ubuntu و AlmaLinux
Ubuntu به عنوان یکی از پرکاربردترین توزیع های لینوکس، دارای رابط کاربری ساده و جذابی است که آن را برای کاربران تازه وارد به محیط لینوکس ایده آل می کند. این توزیع از تنوع بالایی از نرم افزارها پشتیبانی کرده و هر سال به روزرسانی های جدیدی را ارائه می دهد و برای نصب LAMP یک گزینه مناسب است.
AlmaLinux به عنوان یک توزیع جدیدتر، با هدف جانشینی CentOS طراحی شده است و با ارائه محیطی مشابه RHEL، به سازمان ها و کاربرانی که نیاز به پایداری و امنیت دارند، خدمت می کند. این توزیع به طور خاص برای استفاده در محیط های سرور مناسب است و بسیاری از شرکت های بزرگ به آن روی آورده اند.
انتخاب بین این دو توزیع بستگی به نیازهای خاص شما، نوع کاربری و محیط مورد نظر دارد.
| ویژگی | Ubuntu (Debian-based) | AlmaLinux (RHEL-based) |
|---|---|---|
| پایه گذار | مبتنی بر دبیان و پشتیبانی شده توسط Canonical Ltd. | ایجاد شده بر مبنای Red Hat Enterprise Linux (RHEL) و مدیریت شده توسط AlmaLinux OS Foundation |
| مدیریت پکیج ها | استفاده از APT (Advanced Package Tool) برای مدیریت پکیج ها بصورت DEB | استفاده از RPM و ابزارهای DNF و YUM برای مدیریت بسته ها |
| هدف اولیه | کاربرپسند و مناسب برای دسکتاپ و توسعه نرم افزار | طراحی شده برای محیط های سرور و Enterprise، با تمرکز بر پایداری و امنیت |
| رویکرد بروزرسانی | بروزرسانی های سریع و مکرر با ویژگی های جدید | رویکرد محافظه کارانه نسبت به تغییرات؛ شامل بروزرسانی های امنیتی و پایداری بلند مدت |
| پشتیبانی و جامعه | جامعه کاربری بزرگ و فعال با بسیاری از منابع و مستندات | جامعه کاربری در حال رشد، به ویژه پس از انتقال CentOS به CentOS Stream |
| مدت پشتیبانی | نسخههای LTS (Long Term Support) تا ۵ سال پشتیبانی می شوند | پشتیبانی از هر نسخه اصلی به مدت ۱۰ سال |
| سازگاری با نرم افزارها | تنوع بالای نرم افزارها و کتابخانه ها که عمدتا برای دسکتاپ و سرور کاربردی هستند | سازگاری بالا با نرم افزارهای تجاری و شرکتی، به خصوص برای استفاده در سازمان ها |
پیش نیازها
دسترسی sudo یا root
برای نصب LAMP، نیاز است که به سیستم خود دسترسی sudo (یا دسترسی به کاربر root) داشته باشید. این دسترسی به شما اجازه می دهد تا پکیج ها را نصب کنید و تغییرات سیستمی انجام دهید. استفاده از دسترسی root به عنوان کاربر اصلی به ویژه در زمان اجرای دستورات نصب و پیکربندی توصیه نمی شود. بهتر است از یک کاربر غیر روت با دسترسی sudo استفاده کنید.
نسخه های پیشنهادی سیستم عامل
برای نصب LAMP، استفاده از نسخه های بروز یکی از سیستم عامل های زیر پیشنهاد می شود:
- Ubuntu: نسخه ۲۴.۰۴ و بالاتر
- AlmaLinux: نسخه ۸.x و بالاتر
این نسخه ها شامل آخرین بروزرسانی های نرم افزاری و امنیتی مهم هستند و بیشتر نرم افزارهای مورد نیاز برای نصب LAMP را به راحتی در اختیار شما قرار می دهند.
نسخه های PHP
آخرین نسخه های PHP از جمله:
- PHP 8.3: آخرین نسخه پایدار، که شامل ویژگی های بهتر برای برنامه نویسی و بهبود عملکرد است.
- PHP 8.4: نسخه ای با ویژگی های جدید و بروزرسانی های مربوط به بهبود عملکرد، آخرین بروزرسانی مربوط به اکتبر ۲۰۲۵.
- PHP 8.5: نسخه ای در حال توسعه با تاریخ حدودی انتشار نوامبر ۲۰۲۵.
نسخه های MySQL و MariaDB
برای پایگاه داده، نسخه های پیشنهادی به شرح زیر است:
- MySQL: آخرین نسخه ۹.۳ (در حالت پیش نمایش عمومی) و نسخه ۸.۰.۴۵ که در اکتبر ۲۰۲۵ منتشر شده است.
- MariaDB: جدیدترین نسخه پایدار، نسخه ۱۲.۰.۲ است که در سپتامبر ۲۰۲۵ منتشر شده است.
پورت ها
بعد از نصب LAMP، نیاز دارید که پورت های زیر را برای اتصال به وب سرور باز کنید:
- پورت ۸۰: برای ترافیک HTTP
- پورت ۴۴۳: برای ترافیک HTTPS
در توزیع Ubuntu به صورت پیشفرض از فایروال UFW و در AlmaLinux از فایروال firewalld استفاده می شود که در ادامه این مقاله، دستورات مربوطه برای باز کردن این پورت ها توضیح داده خواهد شد.
انتخاب نوع سیستم عامل، سرویس و روش نصب
سیستم عامل ها
- Ubuntu: نسخه های ۲۲.۰۴ و بالاتر به عنوان یکی از محبوب ترین گزینهها برای LAMP.
- AlmaLinux: نسخه ۸.x و بالاتر به عنوان جانشینی برای CentOS.
- Debian: ورژن های ۱۱ و بالاتر با پشتیبانی بلند مدت.
- RHEL: مانند Red Hat Enterprise Linux، که در محیط های صنعتی و سازمانی به کار می رود.
این توزیع ها به دلیل پایبندی به امنیت و پایداری در برابر خطا نسبت به سایر توزیع ها برای نصب LAMP، توصیه می شوند.
MySQL یا MariaDB
| ویژگی | MySQL | MariaDB |
|---|---|---|
| لایسنس دسترسی | مدل دوگانه: GPL (رایگان) و نسخه تجاری | کاملا متن باز تحت GPL |
| سرعت و عملکرد | بهینه سازی شده برای عملکرد، اما ممکن است در پردازش های سنگین کاهش سرعت داشته باشد | معمولا سریع تر است و بهبودهای عملکردی و قابلیت های جدیدی دارد |
| توسعه و ویژگی ها | در اختیار شرکت Oracle است و ممکن است تغییرات چشم گیر در آینده داشته باشد | به عنوان فورک MySQL، به طور مداوم ویژگی های جدید معرفی می کند و به خوبی با MySQL سازگار است |
| پشتیبانی و جامعه | پشتیبانی از طرف شرکت Oracle و جامعه بزرگ کاربران | جامعه در حال رشد با دسترسی به منابع بیشتر و ویژگی های جدید |
- MySQL
مزایا: معروفیت بالا، پشتیبانی از طرف شرکت Oracle، و سازگاری با بسیاری از نرم افزارها.
معایب: مشکلات مرتبط با تغییر مالکیت به Oracle و برخی ویژگی های محدود در نسخه رایگان.
- MariaDB
مزایا: متن باز و رایگان، بهبود عملکرد و سرعت، و تطابق آسان با MySQL.
معایب: ممکن است در کارایی برخی امکانات خاص مانند JSON از MySQL عقب تر باشد.
PHP-FPM یا mod_php
| ویژگی | PHP-FPM | mod_php |
|---|---|---|
| مدیریت پردازش | مدیریت بهینه یک پردازش با استفاده از مجموعه ای از پردازش ها | پردازش PHP به عنوان ماژول Apache بدون جداسازی |
| سازگاری | می تواند با Nginx و Apache استفاده شود | تنها با Apache قابل استفاده است |
| عملکرد و مقیاس پذیری | بهینه تر برای بارهای کاری سنگین و ترافیک بالا | مناسب برای ترافیک کم و پروژه های ساده |
| تنظیمات | پیکربندی دقیق و تنظیمات مناسب برای پروژه های بزرگ | آسان تر برای راه اندازی اما محدود به Apache |
- PHP-FPM
مزایا: قابلیت استفاده برای پروژه های بزرگ، جداسازی پردازش ها و مدیریت بهتر منابع.
معایب: پیچیدگی بیشتر در پیکربندی و تنظیم.
- mod_php
مزایا: سادگی در پیکربندی و استفاده برای پروژه های کوچک.
معایب: کارایی پایین تر در مقیاس وسیع و محدودیت در انعطاف پذیری.
روش های نصب
- پکیج های رسمی سیستم
در این روش، از مخازن اصلی توزیع لینوکس برای نصب LAMP به راحتی می توان استفاده کرد.
- پکیج های غیر رسمی Remi/Ondrej
مخازن شخص ثالث مانند Remi (برای CentOS) و Ondrej (برای Ubuntu) می توانند نسخه های جدید PHP و ماژول ها را در اختیار بگذارند
- کانتینرها (Docker/Podman)
استفاده از کانتینرها برای راه اندازی LAMP به شما این امکان را می دهد که به سادگی و سریعا یک محیط توسعه نرم افزار ایجاد کنید.
۱. آماده سازی سیستم
بروزرسانی پکیج ها در Ubuntu 24.04
برای بروزرسانی پکیج ها در Ubuntu، از دستورات زیر استفاده می کنیم:
sudo apt update
sudo apt upgrade -y
این دستورات فهرست پکیج های موجود را به جهت نصب LAMP بروزرسانی و پکیج های نصب شده را به آخرین نسخه ها بروز می کنند.

بروزرسانی پکیج ها در AlmaLinux 9
در AlmaLinux، برای بروزرسانی پکیج ها، از دستور DNF استفاده می کنیم:
sudo dnf check-update
sudo dnf upgrade -y
این دستورات مشابه با Ubuntu، پکیج ها را بروز می کنند.

تنظیمات زمان، hostname، و DNS
تنظیم زمان
برای همگام سازی(Sync) زمان در هر دو سیستم عامل، می توانید از NTP (Network Time Protocol) استفاده کنید.
در Ubuntu:
sudo apt install ntp
sudo timedatectl set-timezone UTC

در AlmaLinux:
sudo dnf install ntp
sudo timedatectl set-timezone UTC

به جای UTC میتوانید Timezone مورد نظر خود را وارد کنید.
برای مشاهده لیست Timezone در هر دو سیستم عامل می توانید از دستور زیر استفاده نمایید.
timedatectl list-timezones

تغییر hostname
برای تغییر Hostname در هر دو سیستم عامل از دستور زیر استفاده می کنیم.
sudo hostnamectl set-hostname new-hostname
بعد از آن، فایل /etc/hosts را ویرایش کنید و hostname جدید را به این فایل اضافه کنید:
sudo nano /etc/hosts
و خطی مشابه زیر را اضافه کنید:
۱۲۷.۰.۱.۱ new-hostname
در تمام این دستورات، به جای new-hostname باید نام hostname مورد نظر خود را وارد کنید.


تنظیم DNS
برای تنظیم DNS، می توانید فایل /etc/resolv.conf را ویرایش کنید و نام سرورهای دلخواه را اضافه کنید:
sudo nano /etc/resolv.conf
و خطوط زیر را اضافه کنید:
nameserver 8.8.8.8
nameserver 1.1.1.1

ایجاد کاربر غیر root با sudo
دستورات ایجاد یک کاربر غیر روت با دسترسی sudo در Ubuntu:
sudo adduser newusername
sudo usermod -aG sudo newusername

دستورات ایجاد یک کاربر غیر روت با دسترسی sudo در AlmaLinux:
sudo adduser newusername
sudo usermod -aG wheel newusername
این دستورات یک کاربر جدید با نام newusername ایجاد کرده و آن را به گروه sudo اضافه میکند.
در AlmaLinux، گروه wheel به طور معمول به کاربران اجازه دسترسی به sudo را می دهد.
نکات مربوط به SELinux (برای AlmaLinux)
SELinux در AlmaLinux به طور پیش فرض فعال است. برای بررسی وضعیت آن میتوان از دستور زیر استفاده کرد:
getenforce

برای تغییر وضعیت به حالت permissive یا غیرفعال کردن آن، فایل /etc/selinux/config را ویرایش کنید:
sudo nano /etc/selinux/config
و SELINUX را به permissive یا disabled تغییر دهید. پس از آن، سیستم را ریبوت کنید تا تغییرات اعمال شود.

۲. نصب و پیکربندی Apache
نصب و فعالسازی Apache
برای نصب و فعالسازی Apache روی Ubuntu ، از دستور زیر استفاده کنید:
sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2

برای نصب و فعالسازی Apache روی AlmaLinux، از دستور زیر استفاده کنید:
sudo dnf install httpd -y
sudo systemctl enable httpd
sudo systemctl start httpd

برای بررسی وضعیت سرویس Apache، از دستور زیر استفاده کنید:
برای Ubuntu:
sudo systemctl status apache2

برای AlmaLinux:
sudo systemctl status httpd

برای بررسی پورت های باز و اطمینان از اینکه Apache در حال اجراست، از ابزار netstat یا ss استفاده کنید:
sudo netstat -tuln | grep :80
#یا
sudo ss -tuln | grep :80

در مرورگر، به آدرس http://localhost مراجعه کنید تا صفحه خوش آمدگوی Apache را ببینید.


پیکربندی Virtual Hosts در Ubuntu
فایل پیکربندی Virtual Host را در /etc/apache2/sites-available/ ایجاد کنید. به عنوان مثال:
sudo nano /etc/apache2/sites-available/example.com.conf
محتویات فایل باید به شکل زیر باشد:
<VirtualHost example.com:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/var/run/php/php8.3-fpm.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
پس از ایجاد فایل، آن را فعال کنید:
sudo a2ensite example.com.conf
sudo systemctl reload apache2
پیکربندی Virtual Hosts در AlmaLinux
فایل پیکربندی Virtual Host را در /etc/httpd/conf.d/ ایجاد کنید. به عنوان مثال:
sudo nano /etc/httpd/conf.d/example.com.conf
محتویات فایل مشابه زیر است:
<VirtualHost example.com:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/log/httpd/example.com-error.log
CustomLog /var/log/httpd/example.com-access.log combined
<FilesMatch \.(php|phar)$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</VirtualHost>
سپس Apache را ری استارت مجدد کنید:
sudo systemctl restart httpd
در این تنظیمات، به جای example.com می بایست نام دامنه خود که قبلا رکورد A آن به آیپی سرور تنظیم شده را وارد کنید تا صفحه پیش فرض Apache به جای http://localhost با آدرس دامنه شما http://example.com باز شود.
بررسی لاگ ها
در صورت وجود مشکلات، می توانید با بررسی و مشاهده لاگ ها به صورت real time مشکلات Apache را عیب یابی کنید:
در Ubuntu
sudo tail -f /var/log/apache2/error.log
در AlmaLinux
sudo tail -f /var/log/httpd/error_log
۳. نصب و پیکربندی PHP
نصب PHP و ماژول های رایج در Ubuntu
برای نصب PHP نسخه ۸.۳ و ماژول های رایج، ابتدا لازم است مخزن PHP repository (ondrej/php) را به repository های سیستم عامل اضافه کنید، سپس، PHP و ماژول های ضروری را نصب کنید:
sudo apt update
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.3 php8.3-fpm php8.3-mysql php8.3-mysqlnd php8.3-mysqli php8.3-xml php8.3-mbstring php8.3-curl php8.3-zip -y

یا استفاده از دستورات زیر، فعالسازی PHP-FPM با FastCGI انجام می شود.
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.3-fpm
sudo systemctl restart apache2
نصب PHP و ماژول های رایج در AlmaLinux
برای نصب PHP نسخه ۸.۳ و ماژول ها بر روی AlmaLinux، از مخزن EPEL و Remi استفاده می کنیم:
sudo dnf install epel-release -y
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y
sudo dnf module reset php
sudo dnf module enable php:remi-8.3 -y
sudo dnf install php php-fpm php-mysqlnd php-mysqli php-xml php-mbstring php-curl php-zip -y

پیکربندی و تنظیمات PHP-FPM
PHP-FPM برای مدیریت پردازش های PHP با استفاده از مفهوم “pool” عمل می کند.
پیکربندی pool ها
فایل پیکربندی پول ها در مسیر /etc/php/8.3/fpm/pool.d/www.conf (برای Ubuntu) و در مسیر /etc/php-fpm.d/www.conf (برای AlmaLinux) قرار دارد. پارامترهای زیر را در فایل پیکربندی تنظیم می کنیم:
در Ubuntu:
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
در AlmaLinux:
user = apache
group = apache
listen = 127.0.0.1:9000


پیکربندی php.conf در AlmaLinux:
فایل پیکربندی php.conf در مسیر /etc/httpd/conf.d/php.conf قرار دارد. باید این فایل را باز کرده و خط SetHandler “proxy:unix:/var/run/php/php8.3-fpm.sock|fcgi://localhost” را یافته و به مقدار زیر تغییر دهیم.
SetHandler "proxy:fcgi://127.0.0.1:9000"
تنظیمات فایل php.ini
برای ویرایش تنظیمات مهم PHP، فایل php.ini را باز کنید:
در Ubuntu:
sudo nano /etc/php/8.3/fpm/php.ini
در AlmaLinux:
sudo nano /etc/php.ini
پارامترهای زیر را بر اساس نیاز سایت خود تغییر داده و فایل را ذخیره کنید:
memory_limit = 128M
upload_max_filesize = 50M
post_max_size = 50M
opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 2
راهاندازی مجدد PHP-FPM
در Ubuntu:
sudo systemctl restart php8.3-fpm
در AlmaLinux:
sudo systemctl restart php-fpm
فایل تست info.php و نحوه تست از طریق مرورگر
برای ایجاد فایل تست info.php، دستور زیر را اجرا کنید:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
سپس با دستور زیر دسترسی های لازم برای دایرکتوری /var/www/html را تنظیم کنید:
در Ubuntu:
sudo chown -R www-data:www-data /var/www/html
در AlmaLinux:
sudo chown -R apache:apache /var/www/html
برای بررسی و تست نصب کامل PHP، با استفاده از مرورگر آدرس زیر را باز کنید:
http://localhost/info.php
این صفحه باید اطلاعات مربوط به تنظیمات PHP را به شما نشان دهد.

۴. نصب و پیکربندی MariaDB
در این آموزش، نصب MariaDB را توضیح خواهیم داد زیرا این پایگاه داده سازگاری بالایی با MySQL دارد، نسخه های community آن سریع تر از MySQL منتشر می شوند و اینکه بسته های پیش فرض در AlmaLinux معمولا MariaDB است، همچنین برای اکثر اپلیکیشن های PHP (WordPress, Laravel و غیره) کاملا مناسب و حرفه ایست.
نصب MariaDB در Ubuntu
دستورات نصب پیش نیازها و اضافه کردن مخزن رسمی MariaDB و نصب با اسکریپت رسمی
sudo apt install wget apt-transport-https ca-certificates -y
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
chmod +x mariadb_repo_setup
./mariadb_repo_setup
sudo apt update -y
sudo apt install mariadb-server mariadb-client mariadb-backup -y
sudo systemctl enable --now mariadb
sudo systemctl status --no-pager mariadb

نصب MariaDB در AlmaLinux
دستورات نصب پیش نیاز و اضافه کردن مخزن رسمی MariaDB و نصب با اسکریپت رسمی
sudo dnf install wget -y
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
chmod +x mariadb_repo_setup
./mariadb_repo_setup
sudo dnf update -y
sudo dnf install MariaDB-server MariaDB-client MariaDB-backup -y
sudo systemctl enable --now mariadb
sudo systemctl status --no-pager mariadb

ایمن سازی پایگاه داده
پس از نصب، برای افزایش امنیت تنظیمات پیش فرض، باید دستورات زیر را اجرا کنید. این دستورات مراحل مختلفی دارد که موارد امنیتی MariaDB را پیکربندی می کند:
ابتدا با دستور زیر وارد MariaDB شوید:
sudo mariadb
کوئری تنظیم پسورد کاربر root:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
به جای new_password در این کوئری، پسورد جدید را وارد کنید.
کوئری حذف دیگر حساب های کاربری ناشناس:
DELETE FROM mysql.user WHERE User='';
کوئری حذف دسترسی remote برای یوزر root:
DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';
کوئری حذف دیتابیس test:
DROP DATABASE IF EXISTS test;
کوئری به جهت flush کردن و تنظیم دسترسی ها:
FLUSH PRIVILEGES;
کوئری خروج از MariaDB:
EXIT;
ایجاد کاربر پایگاه داده و تنظیم دسترسی ها
ورود به پایگاه داده:
sudo mariadb -u root -p
پس از ورود به پایگاه داده برای ایجاد دیتابیس و کاربر با دسترسی لوکال، دستورات زیر را اجرا کنید:
CREATE DATABASE example_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'example_password';
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
در این دستورات به جای example_db نام دیتابیس مورد نظر به جهت ایجاد دیتابیس و به جای example_user نام کاربر مورد نظر و به جای example_password پسورد مورد نظر برای این کاربر را وارد کنید.
تنظیمات مهم فایل my.cnf
باز کردن فایل کانفیگ MariaDB در AlmaLinux:
nano /etc/my.cnf.d/mariadb-server.cnf
باز کردن فایل کانفیگ MariaDB در Ubuntu:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
تنظیم مقادیر زیر در فایل کانفیگ زیر خط [mariadb] و ذخیره آن:
max_connections = 200
innodb_buffer_pool_size = 1G
innodb_buffer_pool_instances = 1
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1
innodb_io_capacity = 200
query_cache_type = 0
table_open_cache = 400
tmp_table_size = 64M
max_heap_table_size = 64M
توضیح هر یک از مقادیر و راهنمای تعیین مقادیر:
- max_connections: حداکثر تعداد اتصالات هم زمان به سرور را تأیین می کند که روی حافظه سرور و مصرف هر اتصال (buffers) تأثیر می گذارد.
- innodb_buffer_pool_size: اندازه کش اصلی InnoDB برای داده ها و ایندکس ها را تأیین می کند. مقدار بزرگ تر باعث کاهش I/O ولی افزایش مصرف RAM می شود.
- innodb_buffer_pool_instances: تعداد بخش های تقسیم شده برای هر buffer pool را تأیین می کند. برای pool های بزرگ تر از 1G باید از چند instance استفاده کنید.
- innodb_log_file_size: اندازه فایل های لاگ InnoDB را تأیین می کند. در صورتی که عدد بزرگی انتخاب شود، معمولا باعث کاهش تعداد دفعات نوشتن میشود، اما در صورت کرش زمان لازم برای بازگردانی و فضای لازم برای بازیابی افزایش مییابد.
- innodb_flush_log_at_trx_commit: کنترل نحوه نوشتن و خالی کردن لاگ تراکنش ها را تنظیم می کند (۱ = امن ترین روش ولی کند؛ ۰ یا ۲ = سریع تر ولی با ریسک از دست رفتن چند تراکنش).
- innodb_io_capacity: توانایی I/O پیش فرض که InnoDB استفاده می کند؛ می بایست بر اساس تنظیم بر اساس IOPS دیسک. حداکثر تعداد عملیات در هر ثانیه که InnoDB برای کارهایی مانند (flush/merge/purge) استفاده می کند را مشخص می کند که باید براساس IOPS واقعی دیسک تنظیم شود.
- query_cache_type: کنترل استفاده از query cache؛ در نسخههای جدید MariaDB/MySQL اغلب غیر فعال (۰) می شود چون در کوئری های هم زمان باعث ایجاد قفل ها و افت کارایی می شود.
- table_open_cache: تعداد جداولی که سرور می تواند هم زمان باز نگه دارد؛ افزایش این مقدار برای پایگاه داده های با تعداد زیاد جدول توصیه می شود.
- tmp_table_size: حداکثر اندازه جدول temp در حافظه، قبل از write بر روی دیسک؛ مقدار بزرگ تر باعث کاهش تعداد write روی دیسک می شود اما مصرف RAM را افزایش می دهد.
- max_heap_table_size: حداکثر اندازه جداول MEMORY (HEAP) را تأیین می کند که باید با tmp_table_size یکسان باشد تا جدول های temp در حافظه باقی بمانند.
پس از انجام کانفیگ های مورد نظر و ذخیره فایل کانفیگ، باید سرویس MariaDB را ری استارت کنید:
در AlmaLinux
sudo systemctl restart mariadb
در Ubuntu
sudo systemctl restart mariadb.service
تست ارتباط PHP و MySQL
در زیر یک نمونه کد ساده برای تست اتصال PHP و MariaDB نوشته شده است:
<?php
$host = '127.0.0.1';
$port = '3306';
$db = 'example_db';
$user = 'example_user';
$pass = 'example_password';
$charset = 'utf8mb4';
$dsn = "mysql:host={$host};port={$port};dbname={$db};charset={$charset}";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
$stmt = $pdo->prepare("SELECT VERSION() AS ver");
$stmt->execute();
$row = $stmt->fetch();
$osInfo = php_uname();
echo '<h2>Database Connection</h2>';
echo '<p><strong>Status:</strong> Connected to MariaDB</p>';
echo '<p><strong>Server version:</strong> ' . htmlspecialchars($row['ver']) . '</p>';
echo '<p><strong>Host:</strong> ' . htmlspecialchars($host) . '</p>';
echo '<p><strong>Port:</strong> ' . htmlspecialchars($port) . '</p>';
echo '<p><strong>Database name:</strong> ' . htmlspecialchars($db) . '</p>';
echo '<p><strong>User:</strong> ' . htmlspecialchars($user) . '</p>';
echo '<p><strong>Operating System:</strong> ' . htmlspecialchars($osInfo) . '</p>';
} catch (PDOException $e) {
http_response_code(500);
echo '<h2>Error</h2>';
echo '<p><strong>Status:</strong> Connection failed</p>';
error_log('Connection error: ' . $e->getMessage());
exit;
}

تنظیمات امنیتی در LAMP
ایجاد یک ساختار LAMP امن نیازمند توجه ویژه به پیکربندی فایروال، تنظیم SSL، و برنامه ریزی منظم برای پشتیبان گیری است. در این بخش، مراحل مختلف ایمین سازی LAMP را بررسی خواهیم کرد.
پیکربندی فایروال
یک فایروال مناسب برای حفاظت از سرور شما ضروری است. در اینجا، نحوه پیکربندی UFW برای Ubuntu و firewalld برای AlmaLinux را توضیح خواهیم داد.
نصب و راه اندازی Firewalld در AlmaLinux
اگر Firewalld نصب نشده باشد، می توانید آن را با دستور زیر نصب کنید:
sudo dnf install firewalld -y
sudo systemctl start firewalld
sudo systemctl enable firewalld
باز کردن پورتهای ۲۲ و ۸۰ و ۴۴۳ برای SSH و HTTP و HTTPS و بستن بقیه پورت ها:
sudo firewall-cmd --set-default-zone=drop
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
برای اعمال تغییرات در فایروال دستور زیر را اجرا کنید:
sudo firewall-cmd --reload
برای بررسی اعمال تنظیمات میتوانید دستور زیر را اجرا کنید:
sudo firewall-cmd --list-all

نصب و راه اندازی UFW در Ubuntu
اگر UFW نصب نشده است، می توانید آن را با دستور زیر نصب کنید:
sudo apt install ufw -y
فعالسازی قوانین فایروال برای باز کردن پورتهای ۲۲ و ۸۰ و ۴۴۳ برای SSH و HTTP و HTTPS بستن بقیه پورت ها:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
برای بررسی اعمال تنظیمات میتوانید دستور زیر را اجرا کنید:
sudo ufw status verbose

تنظیم SSL/TLS با Let’s Encrypt (Certbot)
Certbot ابزاری است که می توانید از آن برای تنظیم SSL/TLS استفاده کنید.
دستور نصب Certbot برای Ubuntu
sudo apt install certbot python3-certbot-apache -y
دستور نصب Certbot برای AlmaLinux
sudo dnf install certbot python3-certbot-apache -y
دستور دریافت گواهی SSL
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
تمدید خودکار گواهی SSL
Certbot به طور خودکار گواهی های SSL را تمدید می کند. بااین حال برای اطمینان، میتوانید دستور زیر را اجرا کنید:
sudo certbot renew --dry-run
توصیه های پشتیبان گیری و snapshot گیری منظم
پشتیبان گیری منظم و Snapshot گیری از اهمیت بالایی برخوردار است و به ویژه زمانی که با سرورهای Production یا پایگاههای داده بزرگ کار می کنید، این موضوع بیشتر حس می شود. این کار به شما امکان می دهد تا از آسیب دیدگی دیتاها، اشتباهات کاربری و حتی حملات سایبری پیشگیری کنید. در زیر به جزئیات بیشتری درباره روش ها و نکات مهم پشتیبان گیری برای LAMP می پردازیم.
برای پشتیبان گیری میتوانید از روش های مختلفی استفاده کنید:
- پشتیبان گیری لوکال: این روش شامل نگهداری کپی از دیتاهای شما بر روی دیسک های سخت، NAS یا سرورهای دیگر در شبکه است. استفاده از نرم افزارهایی مانند Rsync و Bacula می تواند به سینک کردن منظم داده ها کمک کند.
- پشتیبان گیری ابری: این گزینه به شما اجازه می دهد که نسخه های پشتیبان خود را در یک محیط ابری (مثل Google Drive، Dropbox یا یک پلتفرم مخصوص پشتیبان گیری) ذخیره کنید. این روش به دلیل قابلیت دسترسی از هر مکان و حفاظت در برابر موارد اتفاقات غیرمترقبه بسیار محبوب است.
Snapshot گیری فرآیندی است که در آن وضعیت کامل یک سیستم در یک زمان خاص ثبت می شود. این روش به ویژه برای سرورهای مجازی و محیط های Developement بسیار کارآمد است.
- تنظیم Snapshot روزانه یا هفتگی: با تنظیم زمان بندی منظم برای ایجاد snapshots، می توانید از تغییرات خطرناک یا غیرمترقبه جلوگیری کنید. به عنوان مثال، می توانید از ابزارهایی مانند LVM snapshots یا ZFS snapshots استفاده کنید.
- تمدید و مدیریت Snapshots: اطمینان حاصل کنید که snapshots قدیمی را به طور منظم حذف می کنید تا از اشغال فضای دیسک جلوگیری شود. این کار به مدیریت بهتر منابع سرور کمک می کند و همچنین فرآیند بررسی و بازگردانی را تسریع می بخشد.
در نهایت، ایجاد یک استراتژی پشتیبان گیری مناسب و منظم و همچنین مستندسازی آن، می تواند به شما در حفظ امنیت و سلامت داده ها کمک کند. به یاد داشته باشید که صرف نظر از اینکه چه ابزاری را انتخاب می کنید، مهم ترین نکته این است که پشتیبان گیری به طور منظم انجام شود و همیشه از آخرین نسخه های داده ها و سیستم های خود به خوبی محافظت کنید.
خلاصه و نتیجه گیری
در این مقاله، مراحل کامل نصب و پیکربندی LAMP بر روی لینوکس Ubuntu 24 و AlmaLinux 9 را بررسی کردیم. از مراحل اولیه نصب Apache و PHP گرفته تا پیکربندی MariaDB و موارد امنیتی هر بخش را با دقت مورد بررسی قرار دادیم.
با توجه به اهمیت امنیت در سرورهای Production، پیکربندی فایروال (UFW برای Ubuntu و firewalld برای AlmaLinux) و تنظیم SSL/TLS با استفاده از Let’s Encrypt، به عنوان ابزاری مهم برای حفظ امنیت داده ها و خدمات وب معرفی شدند. همچنین، توصیه های پشتیبان گیری منظم و استفاده از Snapshot گیری به عنوان راهکارهای مؤثر در حفظ داده ها و جلوگیری از ضررهای احتمالی مطرح گردید.
پیاده سازی این مراحل و توصیه های توضیح داده شده در این مقاله به شما کمک خواهد کرد تا یک محیط وب مطمئن، امن و قابل اعتماد برای کاربران خود فراهم کنید. با رعایت نکات امنیتی و بروز نگه داشتن سیستم، می توانید به بهبود عملکرد و کاهش خطرات ناشی از تهدیدات سایبری کمک کنید و از داده های خود به بهترین نحو محافظت کنید.