تصمیم گرفتم نمونه کارها را با استفاده از لاراول 7 بسازم. به این ترتیب که صفحه اصلی یک صفحه فرود باشد و تمام اطلاعات موجود در آن با استفاده از پنل مدیریت تغییر کند. نکته نیست. به استقرار رسید. من چند آموزش خوب در مورد نحوه انجام این کار در یک سرور تمام عیار با تمام مشکلات پیدا کردم. من در استقرار خیلی قوی نیستم؛ من عموماً بیشتر جلو هستم تا فول استک. و اگر هنوز بتوانم در PHP بنویسم و تست کنم، قبل از مدیریت سرور و غیره. من هنوز بزرگ نشدم اما من باید آن را کشف می کردم.
اکنون تمام مراحل را طی می کنیم، از راه اندازی از طریق SSH شروع می شود و به سایت کاری ختم می شود. ما سعی خواهیم کرد از تمام مشکلات جلوگیری کنیم.
ممکن است بتوانید دستورالعمل های مشابه را به صورت آنلاین پیدا کنید. بالاخره بالاخره پیداش کردم. درست است، نه در یک مکان، نه بدون کمک StackOverflow، و به سختی به زبان روسی. من زجر کشیدم به همین دلیل تصمیم گرفتم زندگی شما را ساده کنم.
ما همه کارها را با یک قطره در DigitalOcean انجام خواهیم داد. این، البته، ضروری نیست؛ هر میزبانی را انتخاب کنید. وقتی به یک سرور فعال در اوبونتو رسیدید، برگردید. برای کسانی که هنوز تصمیم دارند این کار را در DigitalOcean انجام دهند، نکات بیشتری در مورد راه اندازی دامنه وجود خواهد داشت. و
تمام مراحل خاص DigitalOcean در پاورقی هایی مانند این آورده می شود.
بیا شروع کنیم.
TL;DR (فقط دستورات اولیه)
یک کاربر ایجاد کنید
ssh root@[IP-адрес вашего дроплета]
adduser laravel
usermod -aG sudo laravel
su laravel
SSH را به آن اضافه کنید
mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
- کلید عمومی را وارد کنید
chmod 600 ~/.ssh/authorized_keys
دیواره آتش
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
Nginx
sudo apt update
sudo apt install -y nginx
sudo ufw allow 'Nginx HTTP'
sudo ufw status
خروجی
sudo apt install -y mysql-server
sudo mysql_secure_installation
,NYNNY
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<Ваш пароль для MySQL>';
SELECT user,authentication_string,plugin,host FROM mysql.user;
FLUSH PRIVILEGES;
exit
پی اچ پی
-
sudo apt update
-
sudo apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https
-
sudo apt-add-repository ppa:ondrej/php
-
sudo apt update
-
7.3:
sudo apt install -y php7.3-fpm php7.3-mysql
-
7.4:
sudo apt install -y php7.4-fpm php7.4-mysql
-
sudo vim /etc/nginx/sites-available/<Ваш домен>
راه اندازی اولیه:
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name <Ваш домен или IP>;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
فقط راه اندازی HTTP برای لاراول:
server {
listen 80;
listen [::]:80;
root /var/www/html/<Имя проекта>/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name <Ваш домен или IP>;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
تنظیمات HTTPS برای لاراول:
server {
listen 80;
listen [::]:80;
server_name <Ваш домен> www.<Ваш домен>;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <Ваш домен> www.<Ваш домен>;
root /var/www/html/<Имя проекта>/public;
ssl_certificate /etc/letsencrypt/live/<Ваш домен>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<Ваш домен>/privkey.pem;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_prefer_server_ciphers on;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php index.html index.htm index.nginx-debian.html;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
location ~ /.well-known {
allow all;
}
}
sudo ln -s /etc/nginx/sites-available/<Ваш домен> /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
فریم ورک Laravel
-
7.3:
sudo apt install -y php7.3-mbstring php7.3-xml composer unzip
-
7.4:
sudo apt install -y php7.4-mbstring php7.4-xml composer unzip
-
mysql -u root -p
-
CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-
GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Ваш пароль от MySQL>';
-
FLUSH PRIVILEGES;
-
exit
-
cd /var/www/html
-
sudo mkdir -p <Имя проекта>
-
sudo chown laravel:laravel <Имя проекта>
-
cd ./<Имя проекта>
-
git clone <ссылка на проект> .
/git clone -b <имя ветки> --single-branch <ссылка на проект> .
-
composer install
-
vim .env
APP_NAME=Laravel
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=http://<Ваш домен>
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=<Ваш пароль от MySQL>
-
php artisan migrate
-
php artisan key:generate
-
sudo chown -R $USER:www-data storage
-
sudo chown -R $USER:www-data bootstrap/cache
-
chmod -R 775 storage
-
chmod -R 775 bootstrap/cache
HTTPS
-
sudo add-apt-repository ppa:certbot/certbot
-
sudo apt install -y python-certbot-nginx
-
sudo certbot certonly --webroot --webroot-path=/var/www/html/<Имя проекта>/public -d <Ваш домен> -d www.<Ваш домен>
-
sudo nginx -t
-
sudo ufw allow 'Nginx HTTPS'
-
sudo ufw status
-
sudo systemctl reload nginx
یک قطره در DigitalOcean ایجاد کنید و یک کلید SSH جدید ثبت کنید
من واقعاً معتقدم که نحوه ثبت نام در DigitalOcean را خودتان متوجه خواهید شد. این کار آسانی نیست، با تأییدهای زیاد و موارد دیگر. اگر به طور مداوم هنگام تأیید با استفاده از اسناد خطای شبکه دریافت می کنید، سعی کنید همه چیز را از طریق VPN انجام دهید، باید کمک کند.
در منوی بالا، کلیک کنید ساختن->قطره... ما انتخاب میکنیم اوبونتو.
به محض ثبت نام، 100 دلار به حساب خود دریافت خواهید کرد. اما گول نخورید شما فقط 60 روز فرصت دارید تا آن را سپری کنید. و این خیلی کم است. ممکن است شما نیز مانند من بخواهید از طرح گرانتری استفاده کنید تا بعداً، وقتی پول واقعی شروع به جریان کرد، بتوانید به یک طرح ارزانتر بروید. من فوراً به شما می گویم که کار نخواهد کرد. شما می توانید آن را افزایش دهید، اما نمی توانید آن را کاهش دهید. بنابراین می رود. من انتخاب می کنم استاندارد->$5.
من نزدیک ترین منطقه به خود را انتخاب می کنم فرانکفورت. شبکه VPC->پیش فرض-fra1
ما فوراً از طریق SSH احراز هویت را انجام خواهیم داد. کلیک کلید SSH جدید. اگر SSH ندارید، دستورالعمل های بسیار ساده ای در سمت راست وجود دارد. یک ترمینال bash را باز کنید و بچسبانید
ssh-keygen
. سپس به سراغ فایل با کلید عمومی می رویم/Users/<Ваше имя пользователя>/.ssh/id_rsa.pub
(یا به سادگیcat ~/.ssh/id_rsa.pub
)، محتویات را کپی کرده و در پنجره سمت چپ قرار دهید. هر اسمی.ما یک نام میزبان برای قطره ایجاد می کنیم.
فشار Droplet را ایجاد کنید
یک کاربر جدید ایجاد کنید
ssh root@[IP-адрес вашего дроплета]
- آیا مطمئن هستید که می خواهید به اتصال ادامه دهید (بله/خیر/[اثرانگشت])؟
yes
- رمز عبور SSH خود را وارد کنید
- یک کاربر ایجاد کنید لاراول:
adduser laravel
- رمز عبور و سایر اطلاعات خود را وارد کنید (من فقط نام کامل را وارد می کنم)
- کاربر را به گروه sudo اضافه کنید:
usermod -aG sudo laravel
SSH برای کاربر جدید
- تغییر به کاربر جدید:
su laravel
ما تمام اقدامات را تا پایان مقاله از طرف کاربر لاراول انجام می دهیم. بنابراین، اگر به طور ناگهانی قطع شد، دوباره وارد شوید و وارد شوید su laravel
mkdir ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
ما فایل را در Vim باز کردیم. اگر اصلا با آن آشنایی ندارید، می توانید در نانو کار کنید، حق شماست.
ابتدایی ترین دستورات Vim
برای استفاده از ویرایشگر Vim در طول مقاله، فقط باید موارد زیر را بدانید.
- Vim حالت های مختلفی دارد: حالت عادی که در آن دستورات را وارد می کنید و حالت ها و حالت های دیگر را انتخاب می کنید.
- برای خروج از هر حالت و بازگشت به حالت عادی کافیست فشار دهید
Esc
- حرکت در اطراف: شما فقط می توانید از فلش ها استفاده کنید
- بدون ذخیره کردن خارج شوید
<Normal mode>
::q!
- خارج شوید و ذخیره کنید
<Normal mode>
::wq
- به حالت ورودی متن بروید
<Normal mode>
:i
(از انگلیسی. درج)
- کلید عمومی خود را وارد می کنیم (که در بالا انجام دادیم)
- ما در برابر تغییرات محافظت می کنیم:
chmod 600 ~/.ssh/authorized_keys
نصب فایروال
- بیایید به تمام تنظیمات موجود نگاه کنیم:
sudo ufw app list
- OpenSSH را مجاز کنید (در غیر این صورت ما را قفل می کند):
sudo ufw allow OpenSSH
- بیایید فایروال را راه اندازی کنیم:
sudo ufw enable
,y
- ما بررسی می کنیم:
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
همه چیز خوب است.
نصب Nginx
در حین نصب گاهی اوقات از شما پرسیده می شود "آیا مطمئن هستید؟" پاسخ y
(خب، فقط اگر مطمئن باشید).
sudo apt update
sudo apt install nginx
افزودن Nginx به تنظیمات فایروال
sudo ufw app list
sudo ufw allow 'Nginx HTTP'
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
به آی پی خود بروید. اگر همه چیز خوب پیش رفت، باید موارد زیر را مشاهده کنید.
نصب MySQL
sudo apt install mysql-server
- راه اندازی یک اسکریپت حفاظت خودکار
sudo mysql_secure_installation
به سوالات پرسیده شده پاسخ دهید. اگر نمی دانید چه پاسخی بدهید، در اینجا چند گزینه پیشنهادی وجود دارد:
-
افزونه تایید رمز عبور -
N
-
کاربران ناشناس حذف شوند؟ -
Y
-
ورود ریشه از راه دور مجاز نیست؟ -
N
-
پایگاه داده آزمایشی حذف شود و به آن دسترسی داشته باشید؟ -
N
-
اکنون جداول امتیاز مجدد بارگیری شود؟ -
Y
-
بیایید به MySQL برویم:
sudo mysql
-
بیایید به روش های دسترسی نگاه کنیم:
SELECT user,authentication_string,plugin,host FROM mysql.user;
-
یک رمز عبور برای روت تعیین کنید:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<Ваш пароль для MySQL>';
-
بیایید دوباره به روش های دسترسی نگاه کنیم:
SELECT user,authentication_string,plugin,host FROM mysql.user;
-
تغییرات را اعمال کنید و از MySQL خارج شوید:
FLUSH PRIVILEGES;
иexit
-
اکنون برای ورود به MySQL باید از آن استفاده کنید
mysql -u root -p
و رمز عبور را وارد کنید
در حال نصب PHP
بیایید از یک مخزن شخص ثالث استفاده کنیم
sudo apt update
sudo apt install -y curl wget gnupg2 ca-certificates lsb-release apt-transport-https
sudo apt-add-repository ppa:ondrej/php
sudo apt update
حالا بیایید انتخاب کنیم. برای لاراول 7 می توانید PHP 7.3 یا 7.4 را انتخاب کنید. تنها تفاوت در اعداد 3 و 4 خواهد بود.
- 7.3:
sudo apt install -y php7.3-fpm php7.3-mysql
- 7.4:
sudo apt install -y php7.4-fpm php7.4-mysql
PHP FastCGI Process Manager (fpm) با درخواست های PHP کار می کند. mysql البته برای کار با MySQL.
از این به بعد همه کارها را روی 7.4 انجام خواهم داد.
راه اندازی Nginx
sudo vim /etc/nginx/sites-available/<Ваш домен>
به جای "< دامنه شما>" دامنه را وارد کنید (به عنوان مثال، mysite.ru
) که می خواهید در آینده از آن استفاده کنید. اگر هنوز یکی را ندارید، بنویسید، سپس فقط مراحل این فصل را برای دامنه خود تکرار کنید.
زیر را وارد کنید:
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name <Ваш домен или IP>;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
اگر به جای آن نسخه 7.3 را انتخاب کردید php7.4-fpm.sock
درج کردن php7.4-fpm.sock
.
به پورت 80 گوش کنید server_name
وقتی به درخواست root رسیدیم /var/www/html
فایل ایندکس را بگیرید اگر بعد از server_name
چیزی هست، ما دنبال همچین فایلی هستیم. اگر آن را پیدا نکردیم، 404 را بیرون می اندازیم. اگر به پایان می رسد .php
، رفتن fpm
... اگر وجود دارد .ht
، منع (403).
- ساخت لینک از
sites-available
вsites-enabled
:sudo ln -s /etc/nginx/sites-available/<Ваш домен> /etc/nginx/sites-enabled/
- در حال حذف پیوند به
default
:sudo unlink /etc/nginx/sites-enabled/default
- بررسی خطاها:
sudo nginx -t
- راه اندازی مجدد:
sudo systemctl reload nginx
بررسی کار:
sudo vim /var/www/html/info.php
- ما نوشتیم:
<?php phpinfo();
- برویم به
<Ваш IP>/info.php
شما باید چیزی شبیه به این را ببینید:
حالا این فایل قابل حذف است: sudo rm /var/www/html/info.php
لاراول را نصب کنید
-
7.3:
sudo apt install php7.3-mbstring php7.3-xml composer unzip
-
7.4:
sudo apt install php7.4-mbstring php7.4-xml composer unzip
-
بیایید به MySQL برویم:
mysql -u root -p
-
یک پایگاه داده با نام ایجاد کنید لاراول:
CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
-
ما دسترسی روت به لاراول:
GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Ваш пароль от MySQL>';
-
FLUSH PRIVILEGES;
-
exit
-
cd /var/www/html
-
یک پوشه برای پروژه ایجاد کنید:
sudo mkdir -p <Имя проекта>
-
ما در اختیار کاربر قرار می دهیم لاراول حقوق پروژه:
sudo chown laravel:laravel <Имя проекта>
بعد باید پروژه را انتقال دهید. به عنوان مثال، شبیه سازی از Github.
cd ./<Имя проекта>
git clone <ссылка на проект> .
شایان ذکر است که اگر فایل های استاتیک را ذخیره نکرده اید (به عنوان مثال از /public
) در Github، طبیعتاً آنها را نخواهید داشت. مثلا برای حل این موضوع یک تاپیک جداگانه ایجاد کردم deploy
، که قبلاً از آن کلون کردم: git clone -b <имя ветки> --single-branch <ссылка на проект> .
.
- نصب وابستگی ها:
composer install
- ایجاد .env:
vim .env
نسخه اصلی آن به شکل زیر است:
APP_NAME=Laravel
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=http://<Ваш домен>
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=<Ваш пароль от MySQL>
اگر .env خود را کپی کردید، APP_ENV را با production، APP_DEBUG را با false جایگزین کنید و تنظیمات صحیح MySQL را وارد کنید.
- انتقال پایگاه داده:
php artisan migrate
- تولید کد:
php artisan key:generate
تغییر مجوزها:
sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache
chmod -R 775 storage
chmod -R 775 bootstrap/cache
آخرین چیزی که باقی می ماند پیکربندی مجدد Nginx برای لاراول است:
sudo vim /etc/nginx/sites-available/<Ваш домен>
server {
listen 80;
listen [::]:80;
root /var/www/html/<Имя проекта>/public;
index index.php index.html index.htm index.nginx-debian.html;
server_name <Ваш домен или IP>;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
مانند دفعه قبل، اگر به جای آن نسخه 7.3 را انتخاب کردید php7.4-fpm.sock
درج کردن php7.4-fpm.sock
.
راه اندازی دامنه در DigitalOcean
همه چیز در واقع بسیار ساده است. شما یک دامنه خریداری می کنید (در هر مکانی)، به DigitalOcean بروید ساختن->دامنه ها/DNSبه در زمینه یک دامنه اضافه کنید وارد این دامنه شده و روی افزودن کلیک کنید. سپس به تنظیمات دامنه و فیلد بروید نام خانوادگی وارد @. یک پروژه را انتخاب کنید و کلیک کنید رکورد ایجاد کنید.
اکنون به سایتی که دامنه را خریداری کرده اید بروید، "DNS Servers" را در آنجا (یا چیزی مشابه) پیدا کنید و سرورهای DigitalOcean را وارد کنید (یعنیns1.digitalocean.com
,ns2.digitalocean.com
,ns3.digitalocean.com
). اکنون باید کمی (یا زیاد) صبر کنید تا این تنظیمات پذیرفته شوند. آماده!
تنها مشکل این است که سایت شما فقط به صورت HTTP باز می شود. برای داشتن HTTPS، به قسمت بعدی بروید.
راه اندازی HTTPS
certbot را نصب کنید و نام دامنه (فرمت) را به آن منتقل کنید mysite.ru
) و نام دامنه با www (www.mysite.ru
).
sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-nginx
sudo certbot certonly --webroot --webroot-path=/var/www/html/<Имя проекта>/public -d <Ваш домен> -d www.<Ваш домен>
اکنون باید Nginx را مجدداً پیکربندی کنید (فراموش نکنید که مقادیر خود را جایگزین کنید):
server {
listen 80;
listen [::]:80;
server_name <Ваш домен> www.<Ваш домен>;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <Ваш домен> www.<Ваш домен>;
root /var/www/html/<Имя проекта>/public;
ssl_certificate /etc/letsencrypt/live/<Ваш домен>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<Ваш домен>/privkey.pem;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_prefer_server_ciphers on;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php index.html index.htm index.nginx-debian.html;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
location ~ /.well-known {
allow all;
}
}
فکر می کنم شما قبلاً متوجه شده اید که چه چیزی باید برای PHP 7.3 تغییر کند.
در اینجا، در واقع، همه چیز ساده است. ما به سادگی همه درخواست ها را از HTTP (پورت 80) به HTTPS (پورت 443) هدایت می کنیم. و در آنجا همه چیز را مانند قبل انجام می دهیم، اما با رمزگذاری.
تنها چیزی که باقی می ماند این است که مجوزها را در فایروال تنظیم کنید:
sudo nginx -t
sudo ufw app list
sudo ufw allow 'Nginx HTTPS'
sudo ufw status
sudo systemctl reload nginx
حالا همه چیز باید همانطور که باید کار کند.
[پیشرفته] نصب Node.js
اگر به طور ناگهانی نیاز به اجرای دستورات npm به طور مستقیم روی سرور دارید، باید Node.js را نصب کنید.
sudo apt update
sudo apt install -y nodejs npm
nodejs -v
همین، در این مرحله متوقف شدم. در اصل من از نتیجه راضی هستم. شاید من از DigitalOcean در جایی نزدیکتر به روسیه و ارزان تر تغییر کنم. اما از آنجایی که من قبلاً تمام مراحل تأیید را در سایت طی کرده بودم و همه چیز را آنجا انجام داده بودم، آنها را با مثال نشان دادم. علاوه بر این، 100 دلار شروع آنها یک سکوی پرشی عالی برای آموزش است.
PS تشکر ویژه از نویسنده
PPS اگر شما یک مهندس برتر هستید که به دستورات bash فکر می کنید، لطفاً سختگیرانه قضاوت نکنید. ممکن است این مقاله را در سطح پایینی بیابید، اما خوشحال میشوم که وقتی به آن نیاز داشتم، یکی را پیدا میکردم. اگر پیشنهادهایی برای بهبود وجود دارد، من با آن موافقم.
منبع: www.habr.com