Ubuntu ۽ Nginx تي Laravel 7 تي ايپليڪيشن کي ترتيب ڏيڻ

Ubuntu ۽ Nginx تي Laravel 7 تي ايپليڪيشن کي ترتيب ڏيڻ

مون فيصلو ڪيو ته منهنجو پورٽ فوليو Laravel 7 استعمال ڪندي. انهي ڪري ته مکيه صفحو هڪ لينڊنگ صفحو هوندو، ۽ ان تي سموري معلومات ايڊمن پينل استعمال ڪندي تبديل ڪري سگهجي ٿي. ڳالهه ناهي. اهو مقرري تي آيو. مون کي ڪجهه سٺا سبق مليا آهن ته اهو ڪيئن ڪجي هڪ مڪمل سرور تي سڀني مشڪلاتن سان. مان تعیناتي ۾ تمام مضبوط نه آهيان؛ مان عام طور تي مڪمل اسٽيڪ کان وڌيڪ اڳيان آهيان. ۽، جيڪڏهن مان اڃا تائين لکي سگهان ٿو ۽ پي ايڇ پي ۾ ٽيسٽ ڪري سگهان ٿو، پوء سرور کي منظم ڪرڻ کان اڳ، وغيره. مان اڃا وڏو نه ٿيو آهيان. پر مون کي اهو سمجهڻو هو.

ھاڻي اسان سڀني مرحلن ذريعي وڃون ٿا، SSH ذريعي لانچ سان شروع ڪندي ۽ ڪم ڪندڙ سائيٽ سان ختم ڪندي. اسان سڀني نقصانن کان بچڻ جي ڪوشش ڪنداسين.

توهان شايد ساڳئي هدايتون آن لائن ڳولي سگهو ٿا. آخرڪار، مون کي آخرڪار اهو مليو. سچ، هڪ جاء تي نه، StackOverflow جي مدد کان سواء، ۽ مشڪل سان روسي ۾. مون کي تڪليف ڏني. تنهن ڪري مون فيصلو ڪيو ته توهان جي زندگي کي آسان بڻائي.

اسان DigitalOcean تي هڪ droplet سان سڀ ڪجهه ڪنداسين. اهو، يقينا، ضروري ناهي؛ ڪنهن به ميزباني کي چونڊيو. جڏهن توهان Ubuntu تي ڪم ڪندڙ سرور تي پهچي، واپس اچو. انهن لاءِ جيڪي اڃا تائين اهو ڪرڻ جو فيصلو ڪن ٿا DigitalOcean تي، اتي هڪ ڊومين قائم ڪرڻ تي وڌيڪ صلاحون هونديون. ۽ $100 حوالو لنڪ.

سڀ 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

نينڪس

  • sudo apt update
  • sudo apt install -y nginx
  • sudo ufw allow 'Nginx HTTP'
  • sudo ufw status

هن MySQL

  • 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

پي 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.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;
        }
}

Laravel لاءِ صرف 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;
    }
}

Laravel لاءِ 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

اي ٽي پي پي

  • 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 چيڪ رجسٽر ڪريو

مون کي يقين آهي ته توهان اهو سمجهندا ته ڪيئن رجسٽر ٿيو ڊجيٽل اوشن پاڻ سان. اهو آسان ناهي، ڪيترن ئي تصديق ۽ ٻين شين سان. جيڪڏهن توهان مسلسل نيٽ ورڪ جي غلطي حاصل ڪندا آهيو جڏهن دستاويزن جي تصديق ڪندي، هڪ وي پي اين ذريعي سڀ ڪجهه ڪرڻ جي ڪوشش ڪريو، ان کي مدد ڪرڻ گهرجي.

مٿين مينيو ۾، ڪلڪ ڪريو ٺاهيو->ننڍو ڦڙو. چونڊيو Ubuntu.

جيئن ئي توهان رجسٽر ڪندا، توهان کي پنهنجي اڪائونٽ ۾ $100 ملي ويندا. پر بيوقوف نه ٿيو. توهان وٽ صرف ان کي خرچ ڪرڻ لاء 60 ڏينهن آهن. ۽ اهو تمام ٿورڙو آهي. توهان شايد، مون وانگر، هڪ وڌيڪ مهانگو منصوبو استعمال ڪرڻ چاهيو ٿا، ته جيئن بعد ۾، جڏهن حقيقي پئسا وهڻ شروع ٿئي، توهان سستي واري منصوبي تي تبديل ڪري سگهو ٿا. مان توهان کي سڌو ٻڌايان ٿو ته اهو ڪم نه ڪندو. توهان ان کي وڌائي سگهو ٿا، پر توهان ان کي گهٽائي نٿا سگهو. سو وڃي ٿو. مان چونڊيو معياري->$5.

مان اسان جي ويجهو علائقو چونڊيو Frankfurt. VPC نيٽورڪ->ڊفالٽ-fra1

اسان فوري طور تي SSH ذريعي تصديق ڪنداسين. ڪلڪ ڪريو نئون SSH Key. جيڪڏهن توهان وٽ SSH نه آهي، ساڄي پاسي تمام سادي هدايتون آهن. بش ٽرمينل کوليو ۽ پيسٽ ڪريو ssh-keygen. ان کان پوء اسان عوامي چيڪ سان فائل ڏانهن وڃو /Users/<Ваше имя пользователя>/.ssh/id_rsa.pub (يا سڌو cat ~/.ssh/id_rsa.pub)، مواد کي نقل ڪريو ۽ کاٻي پاسي واري ونڊو ۾ پيسٽ ڪريو. ڪو به نالو.

اسان بوند لاءِ ميزبان نالو کڻي آيا آهيون.

پڪو قطرو ٺاهيو

ھڪڙو نئون استعمال ڪندڙ ٺاھيو

  • ssh root@[IP-адрес вашего дроплета]
  • ڇا توهان پڪ سان ڳنڍڻ جاري رکڻ چاهيو ٿا (ها/نه/[فنگر پرنٽ])؟ yes
  • پنهنجو SSH پاسورڊ داخل ڪريو
  • هڪ صارف ٺاهيو laravel: adduser laravel
  • پنهنجو پاسورڊ ۽ ٻي معلومات داخل ڪريو (مان صرف پورو نالو داخل ڪريو)
  • استعمال ڪندڙ کي sudo گروپ ۾ شامل ڪريو: usermod -aG sudo laravel

SSH نئين استعمال ڪندڙ لاء

  • نئين استعمال ڪندڙ کي تبديل ڪريو: su laravel

اسان سڀني عملن کي اڳتي وڌايو، آرٽيڪل جي آخر تائين، لاريول استعمال ڪندڙ جي طرفان. تنهن ڪري، جيڪڏهن توهان اوچتو مداخلت ڪئي آهي، ٻيهر لاگ ان ۽ داخل ٿيو su laravel

  • mkdir ~/.ssh
  • chmod 700 ~/.ssh
  • vim ~/.ssh/authorized_keys

اسان 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)

توھان جي IP ڏانھن وڃو. جيڪڏھن سڀ ڪجھ ٺيڪ ٿي وڃي، توھان کي ھيٺ ڏنل ڏسڻ گھرجي.

Ubuntu ۽ Nginx تي Laravel 7 تي ايپليڪيشن کي ترتيب ڏيڻ

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

هاڻي اچو ته چونڊيو. Laravel 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 پروسيس مئنيجر (fpm) PHP درخواستن سان ڪم ڪري ٿو. mysql، يقينا، MySQL سان ڪم ڪرڻ لاءِ.

ھاڻي مان 7.4 تي سڀ ڪجھ ڪندس.

Nginx ترتيب ڏيڻ

  • sudo vim /etc/nginx/sites-available/<Ваш домен>

"<Your domain>" جي بدران ڊومين داخل ڪريو (مثال طور، 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جڏهن اسان روٽ درخواست تي پهچون ٿا /var/www/html index فائل وٺو. جيڪڏهن بعد ۾ 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

توھان کي ڪجھھ ڏسڻ گھرجي:

Ubuntu ۽ Nginx تي Laravel 7 تي ايپليڪيشن کي ترتيب ڏيڻ

ھاڻي ھن فائل کي ختم ڪري سگھجي ٿو: sudo rm /var/www/html/info.php

Laravel انسٽال ڪريو

  • 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

  • نالي سان ڊيٽابيس ٺاهيو laravel: CREATE DATABASE laravel DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  • اسان روٽ تائين رسائي فراهم ڪندا آهيون laravel: GRANT ALL ON laravel.* TO 'root'@'localhost' IDENTIFIED BY '<Ваш пароль от MySQL>';

  • FLUSH PRIVILEGES;

  • exit

  • cd /var/www/html

  • پروجيڪٽ لاءِ فولڊر ٺاهيو: sudo mkdir -p <Имя проекта>

  • اسان صارف مهيا ڪندا آهيون laravel پروجيڪٽ جا حق: 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 کي پيداوار سان، APP_DEBUG کي غلط سان تبديل ڪريو ۽ 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 کي ٻيهر ترتيب ڏيڻ لاء Laravel:

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 at ٺاهيو->ڊومينز/DNS... ميدان ۾ ڊومين شامل ڪريو توھان ھي ڊومين داخل ڪريو ۽ شامل ڪريو تي ڪلڪ ڪريو. پوء ڊومين سيٽنگون ۽ فيلڊ ڏانھن وڃو دوست نام داخل ڪرڻ @. ھڪڙو منصوبو چونڊيو ۽ ڪلڪ ڪريو رڪارڊ ٺاهيو.
ھاڻي ان سائيٽ ڏانھن وڃو جتي توھان ڊومين خريد ڪيو آھي، اتي ”DNS سرورز“ ڳولھيو (يا ڪجھ ساڳيو) ۽ داخل ڪريو 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;
    }
}

مان سمجهان ٿو ته توهان اڳ ۾ ئي سمجهي چڪا آهيو ته پي ايڇ پي 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

اهو ئي آهي، مون هن اسٽيج تي روڪي ڇڏيو. اصول ۾، مان نتيجو سان مطمئن آهيان. شايد مان ڊجيٽل اوشن مان مٽائيندس روس جي ويجهو ۽ سستو. پر جيئن ته مان پهريان ئي سائيٽ تي سڀني تصديق جي دورن مان گذري چڪو آهيان ۽ اتي سڀ ڪجهه ڪيو، مون انهن کي مثال طور ڏيکاريو. اضافي طور تي، انهن جي شروعاتي $100 ٽريننگ لاء هڪ بهترين اسپرنگ بورڊ آهي.

پي ايس خاص ليکڪ جي مهرباني هن خلاصو، جيڪو مٿين سڀني عملن جي بنياد طور ڪم ڪيو. ڪجهه حالتن ۾ اهو Laravel 7 لاء ڪم نٿو ڪري، مون ان کي مقرر ڪيو.

پي پي ايس جيڪڏهن توهان هڪ اعليٰ انجنيئر آهيو جيڪو بش ڪمانڊ ۾ سوچي ٿو، مهرباني ڪري سختي سان فيصلو نه ڪريو. توھان کي ھي آرٽيڪل گھٽ معيار جو معلوم ٿي سگھي ٿو، پر مون کي ھڪڙي ڳولڻ ۾ خوشي ٿئي ھا جڏھن مون کي ھڪڙي جي ضرورت ھئي. جيڪڏهن بهتري لاءِ تجويزون آهن، مان ان لاءِ آهيان.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو