> For the complete documentation index, see [llms.txt](https://redberry.gitbook.io/resources/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://redberry.gitbook.io/resources/next-js/next-js-is-serverze-gamrtva.md).

# Next js-ის სერვერზე გამრთვა

## სერვერზე ხელსაწყოების და პროგრამების დაყენება

პირველ რიგში, ჩვენ უნდა დავლოგინდეთ სერვერზე რისთვისაც უნდა გავუშვათ ბრძანება&#x20;

`ssh username@ipAdress`

ამის შემდეგ ჩვენ უნდა გავუშვათ ბრძანება `sudo apt update`

ეს ბრძანება ფექიჯების შესახებ ინფორმაციას განაახლებს სერვერზე, იმისთვის რომ როცა ჩვენ დავწერთ sudo `apt install something` -ს, სერვერმა იცოდეს რა არის ეს `something`

ამის შემდეგ ჩვენ უნდა დავაყენოთ node ამის გაკეთება შეგვიძლია შემდეგი ბრძანებით:

`curl https://deb.nodesource.com/setup_16.x | sudo bash`&#x20;

`sudo apt install nodejs`

ასევე გვჭირდება პროცესების მართვის ხელსაწყო pm2:

`sudo npm --global install pm2`

## სერვერზე Next js-ის პროექტის გამრთვა

ჩვენ home საქაღალდეში შევქმნათ apps-ს საქაღალდე სადაც გვექნება აპლიკაციები რომლებსაც სერვერზე გავმართავთ, აპლიკაციების apps-ს საქაღალდეში შენახვა, home-ში შენახვასთან შედარებით უკეთეს პრაქტიკად ითვლება.

შემდეგ შევიდეთ apps საქაღალდეში და დავკლონოთ github-იდან რეპოზიტორია:

`cd ~`

`mkdir apps`

`cd apps`

`git clone` [`https://github.com/my-app.git`](https://github.com/my-app.git)

თუ ვნახავთ apps საქაღალდის შიგთავს: `ls` ბრძანებით ჩვენ დავინახავთ რომ ჩვენი პროექტი ჩამოიტვირთა, მოდი ეხლა შევიდეთ პროექტის საქაღალდეში და დავიწყოთ მისი გამართვა.

`cd my-app`

`npm install`

დეველოპმენტ გარემოში ეხლა უბრალოდ გავუშვებდით `npm ruv dev`-ს და ყველაფერი კარგად იქნებოდა, მაგრამ next js აქვს ასეთი ბრძაება

&#x20;`npm run build`&#x20;

რომელიც ჩვენ აპლიკაციის პროდაქშენის build-ს დააგენერირებს და ოპტმიზაციებს უკეთებს.

ამ ბრძანების გაშვების შემდეგ ჩვენ პროექტში უნდა დამატებოდა ერთი საქაღალდე სახელად build-ი, რომელის შიგთავსაც გამოვიყენებთ საიტის დომენზე გასამართად.

## pm2-ის კონფიგურაცია

ისევე როგორც nodejs-ის პროექტის გამართვისას nextjs-ის დროსაც გვჭირდება pm2-ი, იგივე მიზეზების გამო რაც nodejs-ის პროექტში, იმიტომ რომ nextjs-ი full stack framework-ია და node-საც იყენებს, pm2-ის კონფიგურაცია აქაც ძალიან მარტივია,&#x20;

```
npm run build
```

```bash
pm2 start --name=nextjs-example npm -- start
```

## Nginx-ის კონფიგურაცია

ეხლა უკვე დროა რომ ჩვენი უკვე სერვერზე მყოფი პროექტი მსოფლიოსთვის მიღწევადი გავხადოთ, რისთვისაც უნდა გავმართოთ nginx-ი, მოდი მისი დაინსტალირებით დავიწყოთ:

&#x20;`sudo apt install nginx`

სერვერზე შევიდეთ შემდეგ ფოლდერში:

`cd /etc/nginx/sites-enabled`

თუ ჩვენ ამ საქაღალდეში გავუშვებთ `ls`-ს ბრძანებას უნდა დავინახოთ default-ი ფაილი, რომელიც შეგვიძლია თამამად ამოშალოთ: `sudo rm default` და ჩვენი ახალი კონფიგურაციის ფაილი შევქმნათ:

`sudo touch my-app.ge`

ეს ფაილი უნდა გავხსნათ `sudo nano my-app.ge` -ი ბრძანებით და შიგნით ჩავწეროთ შემდეგი კონფიგურაცია:

```nginx
server {
        listen 80;
        listen [::]:80;

        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;

        server_name my-app.ge www.my-app.ge;

        location / {
                proxy_pass http://localhost:3000;
        }
}
```

location-ში ჩვენ ვეუბნებით რომ ყველა შემოსული მოთხოვნა გადაამისამართოს localhost:3000-ზე სადაც ჩვენ pm2-ს აქვს nextjs-ის პროექტი გაშვებული,&#x20;

შემდეგ ეს ფაილი შევინხაოთ და გავუშვათ ბრძანება

`sudo systemctl restart nginx`

და ჩვენ თუ ვეწვევით [http://my-app.ge](http://my-app.ge/) -ს ჩვენ და ნებისნიერი ადამიანი დაინახავს ჩვენ პროექტს, მაგრამ ერთი რაღაც ჭირს ჩვენ საიტის, ის http-ზეა გამართული და შენმა ბრაუზერმა შეიძლება გაგაფრთხილა, რომ ეს საიტი არ არის უსაფრთხო, საბედნიეროდ https-ზე გამართვა ძალიან მარტივია.

## SSL-ის დაყენება LetsEcrypt-ით

იმისთვის რომ LetsEncrypt-ის სერთიფიკატი დავაყენოთ ჩვენ საიტზე და ის უსაფრთხო გავხადოთ, რამოდენიმე ფექეჯი უნდა დავაინსტალიროთ:

`sudo apt install certbot python3-certbot-nginx`

შემდეგ გავუშვათ ბრძანება:

`sudo certbot`

და მივყვეთ certbot-ის ინსტრუქციებს

რის შემდეგაც ჩვენი საიტი გამოიყენებს https -ს და ის იქნება უსაფრთხო და უკვე ხალხის შეშინების გარეშე შეძლებ შენი პროექტის გაზიარებას
