مقدمه
در این مقاله قصد داریم که تمام پیکربندی های که هنگام راه اندازی اپلیکیشن لاراول، بر روی سرور Ubuntu 18.04
توسط وب سرور Nginx
به آن ها نیاز دارید را آموزش دهیم.
نصب پیش نیازها بر روی سرور
۱. Nginx
2. PHP8
3. MySQL
این مقاله برای کسانی مفید می باشد که درک خوبی از مباحث شبکه و تجربه کافی برای کار با سرور را داشته باشند.
هنگامی که شما یک سرور اشتراکی یا سرور VPS
خریداری می کنید میتوانید از طریق telnet
یا ssh
به سرور خود ورود کنید، قبل از اجرای دستورات بر روی سرور می توانید برای telnet
یا ssh
کردن اگر سیستم عامل شما لینوکس است از دستورات زیر استفاده کنید :
نکته: البته سرور اشتراکی به شما پنل مدیریتی می دهد و میتوانید از طریق پنل خود هاستینگ به DirectAdmin
یا Cpanel
ورود کنید.
ssh -p 22 userserver@ipserver
telnet ipserver
پس از ورود اولین دستور که اجرا می کنید به این صورت می باشد : apt-get update
، این دستور تمام مخزن های خود را بر روی سرور لینوکس بروز رسانی می کند
۱. Nginx
Nginx یکی از محبوب ترین وب سرور ها در جهان می باشد که وظیفه میزبانی برخی از بزرگترین و پر بازیدترین سایت های اینترنتی را برعهده دارد. در حال حاضر انتخاب بین Apache
و Nginx
بوده ولی بخاطر عملکرد و سرعت و امنیت و مدیریت منابع میتوان Nginx
را به عنوان وب سرور و یا پروکسی معکوس معرفی کرد.
۱.۱ نصب Nginx
apt-get install nginx
۱.۲ تنظیم فایروال
قبل از راه اندازی Nginx
باید تنظیمات مربوط به فایروال انجام شود تا دسترسی به ان امکان پذیر باشد. Nginx
هنگام نصب خود را به عنوان یک سرویس به ufw
معرفی می کند و این امر دسترسی به آن را ساده می کند.
تنظیمات برنامه فایروال را که ufw
می داند با تایپ کردن دستور زیر لیست کنید :
ufw app list
شما باید فهرستی از مشخصات برنامه را به شکل زیر دریافت کنید :
//Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
حال می توانید HTTP
را با تایپ فعال کنید .
ufw allow Nginx HTTP
حال می توانید لیست وضعیت تغییرات انجام شده را به این شکل ببنید، ما با این عمل اجازه عبور ترافیک بر روی HTTP
را صادر کردیم.
ufw status
خروجی :
//Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
۱.۳ برسی وضعیت وب سرور
در پایان انجام این فرایند ها باید چک کنیم توسط دستور زیر که وب سرور در حالت فعال قرار گرفته باشد.
systemctl status nginx
خروجی :
//Output
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-06-09 00:00:00 ; 3h 33min ago
Docs: man:nginx(8)
Process: 2062 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 1803 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 2064 (nginx)
Tasks: 5 (limit: 4915)
CGroup: /system.slice/nginx.service
├─2064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─2066 nginx: worker process
├─2068 nginx: worker process
├─2071 nginx: worker process
└─2072 nginx: worker process
اکنون اگر از طریق مرورگر خود IP
سرور یا دامنه مورد نظر را تایپ کنید باید خروجی به شکل ذیل مشاهده کنید :

2.MySQL
اگر از اوبنوتو 18.04 استفاده می کنید به صورت پیش فرض در مخرن بسته APT
موجود است، برای نصب آن از دستور زیر استفاده کنید.
apt-get install mysql-server
پس از نصب MySQL
بر روی سرور خود از شما گذرواژه را نمی خواهد یا تغییرات پیکربندی دیگر را انجام دهید، اکنون این امر باعث می شود نصب MySQL
ناامن باشد، برای همین امر دستور بعدی اجرا کنید.
mysql_secure_installation
این امر ما را از طریق مجموعی از درخواست راهنمایی می کند که در آن می توانیم تغییراتی در گزینه های امنیتی نصب MySQL
خود ایجاد کنیم. مانند تعیین رمزعبور برای کاربر اصلی و غیره. از طریق دستور زیر میتوانید برای کاربر اصلی یک رمزعبور تعیین کنید با دستورات SQL
خود را جرا کنید.
mysql -u root -p
پس از انجام تمام فرایند های ذکر شده باید وضعیت فعال بودن سرویس MySQL
خود را از طریق دستور بعدی چک کنید.
systemctl status mysql
خروجی :
// Output
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2019-06-09 00:00:00; 3h 53min ago
Process: 1948 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid (code=exited, status=0/SUCCESS)
Process: 1792 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 1950 (mysqld)
Tasks: 28 (limit: 4915)
CGroup: /system.slice/mysql.service
└─1950 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
و در آخر شما باید یک کاربر و دیتابیس ایجاد کنید بر روی سرویس MySQL
خود که به ترییب دستورات زیر را وارد کنید .
۲.۱ ورود به MySQL
mysql -u root -p
۲.۲ تعریف کاربر جدید و اعمال دسترسی ها
mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
پس از ایجاد کاربر با دستور \q
از سرویس MySQL
خود خارج شوید و بعد با دستور بعدی با کاربر جدید وارد شوید.
mysql -u username -p
۲.۳ ایجاد دیتابیس
CREATE DATABASE dbname;
۳. PHP
اگر از اوبنوتو 18.04 استفاده می کنید به صورت پیش فرض در مخرن بسته APT
موجود است، برای نصب آن از دستور زیر استفاده کنید.
sudo apt install php8.0
با دستور زیر از ورژن PHP
نصب شده مطما شوید.
php -v
برای نصب PHP
در کنار Nginx
باید بسته FPM
را نصب کنید .
sudo apt install php8.0-fpm
سپس تمام php-extensions
های مورد نیاز را نصب کنید.
sudo apt install php8.0-common php8.0-mysql php8.0-xml php8.0-curl php8.0-gd php8.0-imagick php8.0-cli php8.0-dev php8.0-imap php8.0-mbstring php8.0-opcache php8.0-soap php8.0-zip -y
همانطور که می دانید توسط Composer تمام بسته های PHP
مدیریت می شود، اکنون بعد از نصب موارد بالا حال می خواهیم Composer
را هم نصب کنیم. دستورات زیر را به ترتیب اجرا کنید در بالا لینک نصب و پیکربندی از از روی سایت composer
هم لینک داده شده است.
cd ~
curl -sS https://getcomposer.org/installer -o composer-setup.php
و بعد از آن توسط دستور زیر شروع به نصب کنید.
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
در آخر با زدن دستور زیر شما composer
را نصب دارید.
composer
پیکربندی و راه اندازی برنامه
پس از انجام تمام موارد بالا مسیری که برای میزبانی برنامه های خود در نظر گرفته می شود در این مسیر /var/www/html
می باشد. من با در نظر گرفتن اینکه شما Git را میدانید بقیه مقاله را ادامه می دهم، البته در یک مقاله دیگ سعی میکنم راه اندازی FTP
سرور راه هم پوشش بدهم ولی فعلا مبنا Git
می باشد .
با رفتن به مسیر /var/www/html
مخزن خود را با دستور زیر clone
کنید.
git clone https://github.com/username/project-name.git
سپس با دستورات زیر :
cp .env.example .env
nano .env
باز کردن فایل .env
میتوانید تمام تنظیمات خود را نسبت به سروری که پیکربندی کردین تغییر دهید.
حال برای نصب وابستگی ها بسته ها خود بر روی اپلیکیشن دستور زیر را اجرا کنید.
composer update
با دستورات زیر تمام کش ها و لاگ های قبلا تست گرفته اید را میتوانید پاک کنید و کلید منحصر اپ خود را ایجاد کنید و عمل migrate
دینابیس را انجام دهید.
composer dump-autoload
php artisan config:clear
php artisan key:generate
php artisan migrate
php artisan db:seed
اکنون موقع آن رسیده است که پیکربندی لاراول را بر روی Nginx
انجام دهیم که وب سرور ما درخواست ها به درستی مدیریت کند مسیری که به صورت پیش فرض خود Nginx
تعیین کرده است این /etc/nginx/sites-available/default.conf
مسیر می باشد. اولین دستور که باید تایپ کنید به شکل زیر می باشد :
nano /etc/nginx/sites-available/default.conf
تنظیمات زیر را جایگزین محتوای داخل فایل کنید :
// /etc/nginx/sites-available/default.conf file
server {
listen 80;
listen [::]:80;
root /var/www/html/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name <our.application.name>;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
به جای کلمه server_name
در تنظمیات باید دامنه یا IP
سرور خود را قرار دهید.
حال فقط کافی است که یک symbolic link
به مسیر /etc/nginx/sites-enabled/
ایجاد کنیم.
ln -S /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/
اکنون میتوانیم پیکربندی که انجام دادیم را با دستور زیر از صحت آن بر روی nginx
مطما شویم و اگر پیغام زیر را دریافت کردید یعنی همچی به درستی انجام شده است.
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
آخرین گامی که باید انجام دهید ریستارت کردن nginx
است و اگر همچی به درستی انجام داده باشید سایت شما رور دامنه و یا IP
بالا امده و میتوانید خدمات خود را به کابرانتان ارایه دهید.
systemctl restart nginx
کلام آخر
در این پست سعی کردم راهنمای کاملی به شما بدهم که چگونه می توانید برنامه Laravel
خود را با Nginx
در Ubuntu 18.04
در سرور به کار بگیرید. امیدوارم این مقاله به همه شما کمک کند.