الانتقال للمحتوى الرئيسي

إعداد خادم Ubuntu كامل مع LAMP Stack - دليل شامل خطوة بخطوة

Ubuntu Server, LAMP Stack Linux متقدم 2742 مشاهدة 2025/12/07

دليل شامل لإعداد خادم Ubuntu كامل مع LAMP Stack

المقدمة

إعداد خادم Linux كامل هو عملية معقدة تتطلب فهماً عميقاً للعديد من المكونات. في هذا الدليل المفصل جداً، سنغطي كل خطوة من خطوات إعداد خادم Ubuntu Server 22.04 LTS مع LAMP Stack (Linux، Apache، MySQL، PHP) مع شرح مفصل لكل أمر وسببه.

ما هو LAMP Stack؟

  • L - Linux: نظام التشغيل الأساسي
  • A - Apache: خادم الويب
  • M - MySQL/MariaDB: نظام إدارة قاعدة البيانات
  • P - PHP: لغة البرمجة للويب

متطلبات الخادم:

  • خادم Ubuntu Server 22.04 LTS (جديد أو موجود)
  • صلاحيات sudo أو root
  • اتصال بالإنترنت مستقر
  • مساحة تخزين كافية (20 جيجابايت على الأقل)
  • ذاكرة RAM: 1 جيجابايت على الأقل (2 جيجابايت موصى بها)

الخطوة 1: تحديث النظام والأدوات الأساسية

تحديث قائمة الحزم:

sudo apt update

هذا الأمر يحدث قائمة الحزم المتاحة من المستودعات. يجب تشغيله دائماً قبل أي تثبيت للتأكد من الحصول على أحدث إصدارات البرامج.

ترقية النظام:

sudo apt upgrade -y

يقوم هذا الأمر بترقية جميع الحزم المثبتة إلى أحدث إصداراتها. العلم -y يؤكد تلقائياً على جميع الأسئلة.

تثبيت أدوات أساسية:

sudo apt install -y curl wget git unzip software-properties-common apt-transport-https ca-certificates gnupg lsb-release
  • curl: لتحميل الملفات من الإنترنت
  • wget: بديل لـ curl مع ميزات إضافية
  • git: للتحكم في الإصدارات
  • unzip: لفك الضغط عن الملفات
  • software-properties-common: لإدارة مستودعات البرامج
  • apt-transport-https: لدعم HTTPS في apt
  • ca-certificates: شهادات الأمان
  • gnupg: للتحقق من التوقيعات
  • lsb-release: معلومات عن التوزيعة

الخطوة 2: إعداد جدار ناري أساسي (UFW)

التحقق من حالة UFW:

sudo ufw status

السماح بالاتصالات الأساسية:

sudo ufw allow ssh
sudo ufw allow 80
sudo ufw allow 443
  • ssh (22): للوصول عن بعد
  • 80: HTTP
  • 443: HTTPS

تفعيل جدار الناري:

sudo ufw enable

الخطوة 3: تثبيت وإعداد Apache

تثبيت Apache:

sudo apt install -y apache2

التحقق من حالة Apache:

sudo systemctl status apache2

تفعيل Apache للتشغيل التلقائي:

sudo systemctl enable apache2

إعداد Virtual Host أساسي:

sudo mkdir -p /var/www/html/example.com/public_html
sudo chown -R www-data:www-data /var/www/html/example.com
sudo chmod -R 755 /var/www/html/example.com

إنشاء ملف Virtual Host:

sudo nano /etc/apache2/sites-available/example.com.conf

أضف المحتوى التالي:


    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html/example.com/public_html

    
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined

تفعيل الموقع:

sudo a2ensite example.com.conf
sudo a2dissite 000-default.conf
sudo systemctl reload apache2

الخطوة 4: تثبيت وإعداد MySQL/MariaDB

تثبيت MariaDB (بديل أفضل لـ MySQL):

sudo apt install -y mariadb-server mariadb-client

تأمين MariaDB:

sudo mysql_secure_installation

سيطلب منك:

  • إعداد كلمة مرور root
  • حذف المستخدمين المجهولين
  • منع تسجيل الدخول عن بعد لـ root
  • حذف قاعدة البيانات التجريبية
  • إعادة تحميل جداول الصلاحيات

الدخول إلى MariaDB:

sudo mysql -u root -p

إنشاء قاعدة بيانات ومستخدم:

CREATE DATABASE example_db;
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

الخطوة 5: تثبيت وإعداد PHP

إضافة مستودع PHP:

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

تثبيت PHP 8.1 مع الإضافات المطلوبة:

sudo apt install -y php8.1 php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath php8.1-intl php8.1-fpm

التحقق من تثبيت PHP:

php --version

إعداد PHP للعمل مع Apache:

sudo a2enmod php8.1
sudo systemctl restart apache2

إنشاء ملف اختبار PHP:

sudo nano /var/www/html/example.com/public_html/info.php

أضف:

اختبار PHP:

افتح المتصفح واذهب إلى: http://your_server_ip/info.php

الخطوة 6: تثبيت phpMyAdmin

تثبيت phpMyAdmin:

sudo apt install -y phpmyadmin

اختر Apache2 عند السؤال، ثم اضغط "Yes" لإعداد قاعدة البيانات.

ربط phpMyAdmin مع Apache:

sudo ln -s /usr/share/phpmyadmin /var/www/html/example.com/public_html/phpmyadmin

إعداد كلمة مرور phpMyAdmin:

sudo mysql -u root -p
ALTER USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
EXIT;

الخطوة 7: إعداد SSL مع Let's Encrypt

تثبيت Certbot:

sudo apt install -y certbot python3-certbot-apache

الحصول على شهادة SSL:

sudo certbot --apache -d example.com -d www.example.com

سيطلب منك عنوان البريد الإلكتروني وموافقتك على الشروط.

اختبار التجديد التلقائي:

sudo certbot renew --dry-run

الخطوة 8: إعداد Fail2Ban للحماية

تثبيت Fail2Ban:

sudo apt install -y fail2ban

إنشاء ملف إعداد محلي:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

تعديل الإعدادات:

sudo nano /etc/fail2ban/jail.local

غير القيم التالية:

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3

[sshd]
enabled = true

إعادة تشغيل Fail2Ban:

sudo systemctl restart fail2ban

الخطوة 9: إعداد النسخ الاحتياطي التلقائي

إنشاء سكريبت النسخ الاحتياطي:

sudo nano /usr/local/bin/backup.sh

أضف المحتوى:

#!/bin/bash

# Backup script for web server
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/var/backups"
DB_BACKUP="$BACKUP_DIR/db_backup_$DATE.sql"
WEB_BACKUP="$BACKUP_DIR/web_backup_$DATE.tar.gz"

# Create backup directory if it doesn't exist
mkdir -p $BACKUP_DIR

# Backup database
mysqldump -u example_user -p'strong_password' example_db > $DB_BACKUP

# Backup web files
tar -czf $WEB_BACKUP /var/www/html/example.com

# Delete backups older than 7 days
find $BACKUP_DIR -type f -name "*.sql" -mtime +7 -delete
find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +7 -delete

echo "Backup completed on $DATE"

جعل السكريبت قابل للتنفيذ:

sudo chmod +x /usr/local/bin/backup.sh

إضافة مهمة مجدولة:

sudo crontab -e

أضف السطر:

0 2 * * * /usr/local/bin/backup.sh

الخطوة 10: تحسين الأداء

تفعيل mod_rewrite:

sudo a2enmod rewrite
sudo systemctl restart apache2

تحسين إعدادات PHP:

sudo nano /etc/php/8.1/apache2/php.ini

غير القيم التالية:

upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300

إعداد Gzip compression:

sudo a2enmod deflate
sudo nano /etc/apache2/mods-enabled/deflate.conf

أضف:


    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript

الخطوة 11: مراقبة النظام

تثبيت htop لمراقبة العمليات:

sudo apt install -y htop

تشغيله: htop

مراقبة استخدام القرص:

df -h

مراقبة الذاكرة:

free -h

مراقبة سجلات النظام:

sudo journalctl -u apache2 -f

الخطوة 12: استكشاف الأخطاء الشائعة

مشكلة عدم عمل PHP:

sudo a2enmod php8.1
sudo systemctl restart apache2

مشكلة في قاعدة البيانات:

sudo systemctl status mariadb
sudo systemctl restart mariadb

مشكلة في الصلاحيات:

sudo chown -R www-data:www-data /var/www/html/example.com
sudo chmod -R 755 /var/www/html/example.com

إعادة تشغيل جميع الخدمات:

sudo systemctl restart apache2
sudo systemctl restart mariadb
sudo systemctl restart php8.1-fpm

خاتمة

تهانينا! لقد نجحت في إعداد خادم Ubuntu كامل مع LAMP Stack. خادمك الآن جاهز لاستضافة مواقع الويب بأمان وكفاءة. تذكر دائماً الحفاظ على النظام محدثاً ومراقبة السجلات بانتظام.

نصائح إضافية:

  • قم بتغيير كلمات المرور الافتراضية
  • راقب استخدام الموارد بانتظام
  • احتفظ بنسخ احتياطية منتظمة
  • قم بتحديث النظام بانتظام
  • استخدم HTTPS دائماً

من خلال

Mohannad Hassounah

مشرف

معلومات الشرح

البرنامج: Ubuntu Server, LAMP Stack
نظام التشغيل: Linux
المستوى: متقدم