# 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 -ს და ის იქნება უსაფრთხო და უკვე ხალხის შეშინების გარეშე შეძლებ შენი პროექტის გაზიარებას


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://redberry.gitbook.io/resources/next-js/next-js-is-serverze-gamrtva.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
