تثبيت وضبط تطبيق لارافيل مع خادم Nginx على حزمة LEMP في أوبنتو
تُعتبر بيئة العمل LEMP من أكثر البيئات شيوعًا وفاعلية لتشغيل تطبيقات الويب الحديثة، حيث تضم نظام التشغيل لينكس (Linux)، وخادم الويب Nginx، وقاعدة البيانات MySQL أو MariaDB، و PHP. أما إطار العمل لارافيل فهو أحد أشهر أُطر العمل لتطوير تطبيقات الويب باستخدام PHP، لما يوفره من تنظيم هيكلي متقدم، وميزات متعددة تسهل عملية البرمجة والصيانة. في هذا المقال سنعرض شرحًا تفصيليًا وموسعًا لخطوات تثبيت وضبط تطبيق لارافيل على خادم Nginx يعمل ضمن حزمة LEMP في نظام أوبنتو.
1. متطلبات النظام والتهيئة الأولية
قبل البدء بعملية التثبيت، يجب التأكد من وجود نظام تشغيل أوبنتو (Ubuntu) محدث، ويفضل أن يكون إصدارًا حديثًا مثل 20.04 LTS أو 22.04 LTS لضمان دعم البرمجيات الحديثة.
كما يجب توفر صلاحيات الروت (root) أو استخدام الأمر sudo لإدارة التثبيتات والتعديلات.
2. تثبيت حزمة LEMP (Linux, Nginx, MySQL, PHP)
2.1 تحديث النظام
في البداية، نقوم بتحديث الحزم المثبتة لضمان توافقها مع التحديثات الأخيرة:
bashsudo apt update sudo apt upgrade -y
2.2 تثبيت Nginx
خادم الويب Nginx هو بديل شائع لأباتشي، معروف بأدائه العالي ومرونته في التعامل مع تطبيقات الويب:
bashsudo apt install nginx -y
بعد التثبيت، نتحقق من حالة الخدمة:
bashsudo systemctl status nginx
يجب أن يكون الخادم في حالة تشغيل (active).
2.3 تثبيت MySQL أو MariaDB
قاعدة البيانات ضرورية لتخزين بيانات التطبيق. يمكن استخدام MySQL أو MariaDB، ويفضل في كثير من الحالات MariaDB لأنها مفتوحة المصدر بالكامل ومتوافقة مع MySQL:
bashsudo apt install mariadb-server mariadb-client -y
بعد التثبيت، ننفذ السكربت الآمن لضبط قواعد البيانات:
bashsudo mysql_secure_installation
سنتبع الخطوات التي تتضمن تعيين كلمة مرور للمستخدم الجذر، وإزالة المستخدمين المجهولين، وتعطيل تسجيل الدخول عن بُعد، وحذف قاعدة البيانات التجريبية.
2.4 تثبيت PHP ومودولاته
بما أن لارافيل مبني على PHP، يجب تثبيت إصدار PHP حديث (يفضل PHP 8.1 أو 8.2)، مع إضافات ضرورية لتشغيل إطار العمل:
bashsudo apt install php-fpm php-mysql php-xml php-mbstring php-curl php-zip php-bcmath php-tokenizer php-json php-cli php-common unzip curl -y
3. ضبط PHP-FPM لتكامل أفضل مع Nginx
Nginx يعمل بشكل ممتاز مع PHP عبر PHP-FPM (FastCGI Process Manager)، لذلك نحتاج إلى ضبط إعدادات PHP-FPM.
-
نحرص على تشغيل خدمة PHP-FPM:
bashsudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm
(يختلف رقم الإصدار حسب تثبيت PHP)
-
يمكن ضبط ملف إعداد PHP لتخصيص بعض القيم المهمة مثل حجم رفع الملفات والمهلة الزمنية:
bashsudo nano /etc/php/8.1/fpm/php.ini
تعديل القيم التالية (أو حسب الحاجة):
iniupload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300
memory_limit = 512M
بعد التعديلات، نعيد تشغيل خدمة PHP-FPM:
bashsudo systemctl restart php8.1-fpm
4. إعداد خادم Nginx لاستضافة تطبيق لارافيل
4.1 إنشاء مجلد المشروع
يفضل أن يكون مشروع لارافيل داخل مجلد /var/www:
bashsudo mkdir -p /var/www/laravelapp
sudo chown -R $USER:$USER /var/www/laravelapp
sudo chmod -R 755 /var/www/laravelapp
4.2 تثبيت Composer (مدير الحزم الخاص بـ PHP)
لارافيل يعتمد على Composer لإدارة الحزم. لتثبيته:
bashcurl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
بعد ذلك، نتحقق من تثبيت Composer:
bashcomposer --version
4.3 تثبيت إطار لارافيل
داخل مجلد المشروع، ننشئ تطبيق لارافيل جديد:
bashcd /var/www
composer create-project --prefer-dist laravel/laravel laravelapp
4.4 ضبط أذونات المجلدات
لارافيل يحتاج إلى أذونات معينة على مجلدي التخزين (storage) والتخزين المؤقت (bootstrap/cache) ليتمكن من كتابة الملفات:
bashsudo chown -R www-data:www-data /var/www/laravelapp/storage /var/www/laravelapp/bootstrap/cache
sudo chmod -R 775 /var/www/laravelapp/storage /var/www/laravelapp/bootstrap/cache
4.5 إعداد ملف الموقع في Nginx
ننتقل إلى إعداد ملف الموقع الخاص بلارافيل داخل Nginx:
bashsudo nano /etc/nginx/sites-available/laravelapp
نضع فيه الإعداد التالي:
nginxserver {
listen 80;
server_name your_domain.com; # ضع هنا اسم الدومين أو IP السيرفر
root /var/www/laravelapp/public;
index index.php index.html index.htm;
access_log /var/log/nginx/laravelapp_access.log;
error_log /var/log/nginx/laravelapp_error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
client_max_body_size 100M;
}
-
server_nameيجب أن يستبدل باسم النطاق الخاص بك أو الـ IP. -
مسار الـ
fastcgi_passقد يختلف حسب إصدار PHP المثبت.
4.6 تفعيل ملف الموقع وإعادة تشغيل Nginx
نقوم بتمكين الموقع:
bashsudo ln -s /etc/nginx/sites-available/laravelapp /etc/nginx/sites-enabled/
نتحقق من صحة إعدادات Nginx:
bashsudo nginx -t
إذا لم توجد أخطاء، نعيد تشغيل الخدمة:
bashsudo systemctl reload nginx
5. ضبط إعدادات قاعدة البيانات في لارافيل
-
ندخل إلى مجلد المشروع:
bashcd /var/www/laravelapp
-
نفتح ملف البيئة
.envلتعديل إعدادات الاتصال بقاعدة البيانات:
bashnano .env
-
نعدل القيم التالية حسب إعدادات قاعدة البيانات التي أنشأناها:
iniDB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=your_password
بعد ذلك ننشئ قاعدة البيانات والمستخدم في MySQL أو MariaDB:
sqlCREATE DATABASE laravel_db;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
6. تشغيل المهاجرات (Migrations) والبذور (Seeders)
لارافيل يستخدم المهاجرات لإدارة هيكل قواعد البيانات برمجياً، لذلك بعد ضبط الاتصال:
bashphp artisan migrate
إذا كان هناك بيانات أولية (Seeds):
bashphp artisan db:seed
7. ضبط الصلاحيات والملفات النهائية
لضمان عمل لارافيل بسلاسة خاصة في بيئة الإنتاج، نعيد ضبط الأذونات لبعض المجلدات:
bashsudo chown -R www-data:www-data /var/www/laravelapp
sudo chmod -R 775 /var/www/laravelapp/storage
sudo chmod -R 775 /var/www/laravelapp/bootstrap/cache
8. تفعيل التخزين المؤقت (Caching) لتحسين الأداء
لارافيل يدعم العديد من آليات التخزين المؤقت لتحسين الأداء:
-
لتفعيل التخزين المؤقت للتهيئة:
bashphp artisan config:cache
-
لتفعيل التخزين المؤقت للطرق:
bashphp artisan route:cache
-
لتفعيل التخزين المؤقت للواجهات:
bashphp artisan view:cache
9. ضبط إعدادات الجدار الناري (Firewall)
إذا كان لديك جدار ناري مثل UFW، يجب السماح لحركة المرور على المنفذ 80 و443 (إذا كنت تستخدم HTTPS):
bashsudo ufw allow 'Nginx Full'
sudo ufw enable
10. إضافة شهادة SSL (اختياري ولكن موصى به)
لتأمين الموقع، من الضروري إضافة شهادة SSL. يمكن الحصول عليها مجانًا من Let’s Encrypt.
10.1 تثبيت Certbot
bashsudo apt install certbot python3-certbot-nginx -y
10.2 طلب الشهادة وضبطها تلقائيًا
bashsudo certbot --nginx -d your_domain.com -d www.your_domain.com
سيقوم Certbot بضبط إعدادات Nginx تلقائيًا لتفعيل HTTPS.
11. نصائح تحسين الأداء والأمان
-
استخدام Redis أو Memcached لتخزين الكاش بدلاً من النظام الافتراضي في الملفات.
-
تفعيل OpCache في PHP لتسريع تنفيذ السكربتات.
-
تحديث النظام والحزم بشكل دوري لتجنب الثغرات الأمنية.
-
تأمين صلاحيات الملفات وعدم منح صلاحيات كتابة عامة غير ضرورية.
-
استخدام ملفات .env محمية وعدم رفعها إلى مستودعات عامة.
-
تفعيل جدار ناري وتقييد الوصول للبورتات غير المستخدمة.
-
النسخ الاحتياطي الدوري للبيانات خاصة قواعد البيانات.
جدول توضيحي لبعض المسارات والمهام الأساسية
| العنصر | الوصف | الأمر / المسار |
|---|---|---|
| مجلد المشروع | مكان وجود ملفات لارافيل | /var/www/laravelapp |
| ملف إعداد Nginx | إعدادات الموقع داخل خادم Nginx | /etc/nginx/sites-available/laravelapp |
| ملف البيئة | ضبط إعدادات البيئة مثل قاعدة البيانات | /var/www/laravelapp/.env |
| صلاحيات مجلد التخزين | يجب أن يكون قابل للكتابة من قبل www-data | /var/www/laravelapp/storage |
| إعادة تشغيل Nginx | لتطبيق التغييرات في إعدادات الخادم | sudo systemctl reload nginx |
| تنفيذ المهاجرات | لبناء جداول قاعدة البيانات حسب تصميم لارافيل | php artisan migrate |
| تفعيل التخزين المؤقت | لتحسين الأداء في بيئة الإنتاج | php artisan config:cache |
خاتمة
تثبيت وضبط تطبيق لارافيل على خادم Nginx ضمن حزمة LEMP في أوبنتو يتطلب خطوات مدروسة لضمان عمل التطبيق بكفاءة وأمان. يبدأ ذلك من تجهيز النظام وتثبيت المكونات الأساسية مثل Nginx، وقاعدة البيانات، وPHP، مرورًا بإعدادات PHP-FPM، وضبط خادم Nginx لاستضافة التطبيق، ووصولًا إلى ضبط صلاحيات المجلدات، وتحديث إعدادات لارافيل، وتحسين أداء الخادم.
اتباع الخطوات السابقة يضمن بيئة تشغيل مستقرة وقابلة للتطوير، مع الحفاظ على الأمن والأداء المناسبين، مما يجعل مشروعك القائم على لارافيل قادرًا على خدمة المستخدمين بكفاءة عالية ضمن بيئة خادم حديثة ومرنة.

