نحوه بالا آوردن پروژه لاراول با استفاده از lemp

2024-08-28

در این پست، قصد دارم نحوه بالا آوردن پروژه‌های لاراول را با استفاده از استک LEMP در سیستم‌عامل لینوکس توضیح دهم.

در این پست، قصد دارم نحوه بالا آوردن پروژه‌های لاراول را با استفاده از استک LEMP (Linux، Nginx، MySQL/MariaDB، PHP) در سیستم‌عامل لینوکس توضیح دهم. این راهنما به شما کمک می‌کند تا به‌راحتی یک پروژه لاراول را روی سرور لینوکس خود مستقر کنید.

اگر بخواهم به صورت دقیق تر بگم، نحوه کانفیگ پروژه های لاراول با nginx و php-fpm در زمانی که از php7.4 و php8.2 به طور همزمان استفاده میکنیم و سیستم عامل ما در این توضیح اوبونتو است.

نام پروژه ای که در این پست می خواهیم بالا بیاریم Laravel است و جاهایی که از laravel استفاده شده باید نام پروژه خودتون رو بنویسید که البته هرجایی نیاز باشه یادآوری هم خواهم کرد.

سعی کردم در این پست به صورت خیلی خلاصه و البته بر اساس تجربه خود دقیق تر بنویسم که در طول این چند سال از این روش استفاده کردم و همچنین هر کجا که احساس کردید روش بهتری است لطفا در کامنت بنویسید که این متن رو هم آپدیت کنم. ممنون ازتون

 


 

اولویتها:

نکته: قبل از این اولویت ها ما در نظر میگیریم که پروژه خود رو در جایی از سیستم خودت نوشته و یا از گیت clone کردید.

۱- نصب nginx

۲- تنظیم دامنه

۳- نصب php

۴- نصب mysql

۵- نصب postgresql

۶- نصب composer

۷- مجوز نوشتن لاگ


 

در مرحله اول باید nginx رو نصب کنیم که به ترتیب مراحل پایین رو برین جلو:

1- sudo apt update

2- sudo apt install nginx

3- sudo ufw app list

4- sudo ufw allow 'Nginx HTTP'

 

در مرحله پایین (بند ۵) باید به جای laravel.test نام و دامنه ای که می خواهید پروژه خودتون رو بالا بیارین رو بنویسید.

5- sudo nano /etc/nginx/sites-available/laravel.test

در فایلی که ایجاد شده باید کد زیر رو قرار بدین:

server {
    listen 80;
    server_name laravel.test;
    root /path/to/your/laravel/public;
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

 

در سطر server_name باید آدرس دامنه پروژه که می خواهیم بالا بیاریم نوشته شود
در سطر root باید آدرس پوشه public پروژه روی سیستم نوشته شود
در سطر fastcgi_pass unix باید آدرس php-fpm با توجه به نسخه php پروژه نوشته بشه مثلا:

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

یا

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

بعد از نوشتن موارد بالا فایل laravel.test رو ذخیره و از آن خارج بشین و دوباره دستورات زیر رو به ترتیب اجرا کنید:

6- sudo ln -s /etc/nginx/sites-available/laravel.test /etc/nginx/sites-enabled/

7- sudo nginx -t

8- sudo systemctl reload nginx

توجه: اگر جایی خطایی دریافت کردید میتونید با دستور زیر خطاهای رخ داده در سطح nginx را مشاهده کنید:

sudo tail -f /var/log/nginx/error.log

توجه: اگر قبلا apache روی سیستم نصب شده باشد باید اون رو غیرفعال کردن:

1- sudo systemctl stop apache2

بعد nginx رو فعال کرد:

2- sudo systemctl start nginx


برای تنظیم دامنه دسترسی به پروژه باید به آخر فایل /etc/hosts سطر زیر رو اضافه کنیم که این کار باعث میشه با وارد کردن آدرس laravel.test در مرورگر پروژه ما نشون داده بشه:

127.0.0.1    laravel.test


الان که نصب nginx تموم شده می تونیم نصب php رو آغاز کنیم. که در زیر دو نسخه php7.4 و php8.2 رو نصب خواهیم کرد و فقط این رو به یاد داشته باشید که همیشه با استفاده از دستور sudo apt install php آخرین نسخه php نصب می شود ولی اینجا چون ما میخواهیم نسخه های قبلی رو نصب کنیم نیاز داریم اول repository هایی که نسخه های قبلی php در اونجا هستند رو به لینوکس اضافه کنیم و بعدا از اون ها استفاده کنیم.

۱- نصب php7.4:

1- sudo add-apt-repository ppa:ondrej/php

2- sudo apt update

3- sudo apt install php7.4

4- sudo apt install php7.4-cli php7.4-fpm php7.4-mysql php7.4-xml php7.4-curl php7.4-mbstring php7.4-zip php7.4-bcmath php7.4-pgsql php7.4-gd

 

۲- نصب php8.2:

1- sudo add-apt-repository ppa:ondrej/php

2- sudo apt update

3- sudo apt install php8.2

4- sudo apt install php8.2-cli php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl php8.2-mbstring php8.2-zip php8.2-bcmath php8.2-pgsql php8.2-gd

 

۳- نصب آخرین نسخه php:

1- sudo apt install php

2- sudo apt install php-cli php-fpm php-mysql php-xml php-curl php-mbstring php-zip php-bcmath php-pgsql php-gd

 

۴- الان که هر دو نسخه php رو نصب کردیم باید nginx رو هم یکبار ریستارت کنیم:

sudo systemctl restart nginx

 

۵- برای سوئیچ بین نسخه های php در زمان استفاده از پروژه در cli می توانیم از دستور زیر استفاده کنیم:

sudo update-alternatives --config php

 


برای نصب دیتابیس Mysql باید مراحل زیر رو برین جلو:

1- sudo apt install mysql-server

- در زمان اجرای دستور زیر هر سوالی پرسید می تونید Enter زد البته اگر نیازی دیدین میتونید تغییرات خود رو اعمال کنید:

sudo mysql_secure_installation

sudo mysql -u root

در دستور زیر باید به جای your_password پسورد مورد نظر خودتان بنویسید:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Your_password';

برای خروج از محیط mysql هم می توانید از دستور زیر استفاده کنید:

exit


اگر هم خواستید که postgresql رو نصب کنید باید مراحل زیر رو برید:

1- sudo apt install postgresql postgresql-contrib

2- sudo -i -u postgres

3- psql

به جای your_password باید رمز دلخواه خود رو بنویسید

4- ALTER USER postgres WITH PASSWORD 'your_password';

 


الان می خواهیم composer رو نصب کنیم که با استفاده از اون package و vendor پروژه رو نصب کنیم: (حتما نیاز است که قبلا php را نصب کرده باشین)

1- php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

2- php composer-setup.php

3- php -r "unlink('composer-setup.php');"

4- sudo mv composer.phar /usr/local/bin/composer


بعضی از فایل ها در پروژه ما نیاز به ایجاد دسترسی هستند که بشه داخل اون ها تغییراتی بدیم که باید کامند های زیر رو اجرا کنید. فقط توجه کنید که به جای [path] باید مسیر پروژه خودتون رو بگذارید:

sudo chmod 755 [main-path exmple: /home/samad/laravel]

cd [path]

sudo usermod -aG www-data $USER

sudo chown -R $USER:www-data storage