Next.js:n asennus ja julkaisu
Käymme vaihe vaiheelta läpi, miten Next.js-projekti luodaan create-next-app-työkalulla, miten App Router -kansiorakenne toimii ja miten projekti julkaistaan Vercelissä tai omalla palvelimella.

Next.js:n asennusta varten asennat Node.js:n ajantasaisen LTS-version ja ajat päätteessä komennon npx create-next-app@latest. Ohjattu toiminto kysyy TypeScript-, ESLint-, Tailwind CSS- ja App Router -valinnoista. Siirryt projektikansioon ja käynnistät kehityspalvelimen komennolla npm run dev; sivusto aukeaa osoitteessa localhost:3000, ja julkaisua varten käytetään komentoa npm run build.
Mikä on Next.js ja kenen kannattaa käyttää sitä?
Next.js on Reactin päälle rakennettu verkkosovelluskehys. Siinä missä React piirtää vain käyttöliittymäkomponentit, Next.js tuo valmiina reitityksen, palvelinpuolen sivutuotannon, staattisen sivutulosteen, kuvien optimoinnin ja API-päätepisteet.
Sen suurin ero on, että se voi tuottaa sivut palvelimella HTML:nä. Hakukoneet ja sosiaalisen median esikatselut näkevät sisällön suoraan, ja ensimmäinen avautuminen nopeutuu. Siksi se sopii yksisivuisia sovelluksia paremmin sisältövetoisille yrityssivustoille, luetteloille ja blogisivuille.
Jos kehität vain kirjautumista vaativaa hallintapaneelia, yksinkertaisempi rakenne voi riittää; tätä tilannetta varten katso oppaamme React-asennus Vitellä.
Edellytykset
Next.js on tarkka tuetuista Node.js-versioista ja luopuu uusissa pääversioissa vanhojen Node-versioiden tuesta. Siksi ongelmattomin tapa on asentaa osoitteesta nodejs.org ajantasainen LTS-versio.
- Node.js:n ajantasainen LTS-versio ja npm (tulee Noden mukana); myös pnpm, yarn tai bun käyvät.
- Koodieditori; suositelluilla laajennuksilla asennusta varten katso artikkeli VS Coden asennus.
- Git ja etävarasto (GitHub, GitLab): julkaisuprosessit ammentavat yleensä varastosta.
- Jos asennat omalle palvelimellesi, Linux-palvelin, johon on SSH-yhteys.
Asenna ja varmista Node.js
Node.js:n asennus eroaa hieman käyttöjärjestelmän mukaan; Next.js-komennot ovat asennuksen jälkeen kaikkialla samat.
Windows
Lataa LTS-asennustiedosto osoitteesta nodejs.org tai käytä wingetiä; avaa sen jälkeen pääte uudelleen.
winget install OpenJS.NodeJS.LTS
node -vmacOS
Voit asentaa virallisella paketilla tai Homebrewlla.
brew install node
node -vLinux
Jakelun varastojen versio voi olla vanhentunut; asentaminen nvm:llä on turvallisempaa.
nvm install --lts
nvm use --lts
node -vProjektin luominen create-next-app-työkalulla
Create next app -ohjattu toiminto on virallinen aloitustyökalu, ja se asentaa kaikki tarvittavat paketit kerralla. Kun ajat komennon, sinulta kysytään projektin nimi ja muutama valinta; jos olet epävarma, suositeltujen oletusten hyväksyminen on hyvä alku.
| Kysymys | Suositus |
|---|---|
| TypeScript | Kyllä; havaitsee virheet jo kirjoitettaessa |
| ESLint | Kyllä; koodin laadun vuoksi |
| Tailwind CSS | Riippuu mausta; valitse suunnittelujärjestelmäsi mukaan |
| src/-kansio | Riippuu mausta; erottaa asetustiedostot koodista |
| App Router | Kyllä; uusille projekteille suositeltu rakenne |
| Import alias | Oletus @/* riittää |
npx create-next-app@latest benim-sitem
cd benim-sitem
npm run devApp Router -rakenteen ymmärtäminen
Next.js App Router tuottaa reitityksen kansiorakenteesta. Jokainen app-kansion alla oleva kansio on osoitteen osa; kansion page.tsx-tiedosto määrittelee sivun ja layout.tsx kyseisen osion yhteisen rungon.
App Routerissa komponentit ovat oletuksena palvelinkomponentteja: ne toimivat palvelimella, voivat hakea dataa suoraan eivätkä lähetä selaimelle JavaScriptiä. Komponenteista, jotka tarvitsevat vuorovaikutusta, kuten napsautuksia tai lomakkeen tilaa, teet asiakaskomponentteja kirjoittamalla niiden ylimmäksi use client -direktiivin.
| Tiedosto | Osoite / tehtävä |
|---|---|
| app/layout.tsx | Koko sivuston juurirunko: html, body, yhteinen otsikko ja alatunniste |
| app/page.tsx | Etusivu (/) |
| app/hakkimizda/page.tsx | Osoite /hakkimizda |
| app/blog/[slug]/page.tsx | Dynaaminen osoite: /blog/mikä-tahansa-kirjoitus |
| app/not-found.tsx | 404-sivu |
| app/api/iletisim/route.ts | API-päätepiste (POST- ja GET-käsittelijät) |
Metadata hakukoneoptimointia varten
Jokainen sivu tai layout-tiedosto voi määritellä otsikon, kuvauksen ja Open Graph -tunnisteet viemällä metadata-olion. Dynaamisilla sivuilla käytetään generateMetadata-funktiota. Tämä rakenne helpottaa hakukoneystävällisten verkkosivujen vaatimien tunnisteiden hallintaa sivutasolla.
Build ja ympäristömuuttujat
Ennen julkaisua tee tuotantokäännös komennolla npm run build. Build-tuloste listaa, tuotetaanko kukin sivu staattisena vai dynaamisena; jos odottamaton sivu tulee dynaamiseksi, se on varhainen merkki turhasta palvelinkuormasta.
Ympäristömuuttujat säilytetään .env.local-tiedostossa. Vain NEXT_PUBLIC_-etuliitteiset muuttujat lähetetään selaimelle; tietokannan salasanan ja API:n salaiset avaimet tulee jättää ilman etuliitettä ja käyttää vain palvelinkoodissa.
npm run build
npm run startMiten kukin sivu kannattaa tuottaa?
Next.js:n voima tulee siitä, että voit valita jokaiselle sivulle eri renderöintistrategian. Väärä valinta tarkoittaa joko turhia palvelinkustannuksia tai vanhentunutta sisältöä; siksi luokittele sivusi tyypin mukaan heti perustamisen jälkeen.
Harvoin muuttuvat sivut, kuten meistä-, palvelu- ja yhteystietosivut, sopivat ihanteellisesti staattiseen tuotantoon: ne tuotetaan kerran käännösvaiheessa ja tarjoillaan CDN:stä alle sekunnissa. Lähes kaikki yrityksen kotisivun sivut kuuluvat tähän ryhmään.
Satunnaisesti päivittyvillä sivuilla, kuten blogeissa ja tuoteluetteloissa, uudelleentuotanto (revalidate) tietyin väliajoin on hyvä kompromissi. Käyttäjäkohtaiset paneelit, ostoskorit ja reaaliaikaista saatavuutta näyttävät varausnäkymät tulee sen sijaan tuottaa palvelimella jokaisella pyynnöllä. Tämä viimeinen ryhmä on yleinen skenaario hotellien ja toimistojen kaltaisissa alakohtaisissa ohjelmistoissa, ja se vaatii tietokannan, välimuistin ja valtuutuksen suunnittelua yhdessä.
Next.js-julkaisuvaihtoehdot
Next.js-julkaisuun on kolme yleistä tapaa. Valinta riippuu liikenteestä, budjetista, datan sijainnista ja tiimisi kokemuksesta palvelimien hallinnasta.
- Vercel: Next.js:n kehittäneen yrityksen alusta. Yhdistät varaston, ja jokaisella lähetyksellä syntyy automaattinen käännös ja esikatseluosoite.
- Oma Node.js-palvelin: komennolla npm run start toimivaa sovellusta pitää käynnissä prosessinhallinta, kuten PM2, ja sen eteen asetetaan Nginx. Antaa täyden hallinnan, mutta ylläpitovastuu on sinulla.
- Staattinen vienti: next.config-tiedoston output: 'export' -asetuksella sivusto muuttuu pelkiksi HTML-tiedostoiksi. Palvelinkomponentteja vaativat dynaamiset ominaisuudet eivät toimi tässä tilassa.
Julkaisu PM2:lla ja Nginxillä
Kun olet asentanut Node.js:n Ubuntu-pohjaiselle palvelimelle, hae projekti varastosta, käännä se ja käynnistä PM2:lla. PM2:n startup-komento pyytää ajamaan sudolla näytölle tulostamansa rivin; tämä rivi saa sovelluksen käynnistymään automaattisesti palvelimen käynnistyessä uudelleen.
git clone https://github.com/kullanici/benim-sitem.git
cd benim-sitem
npm ci
npm run build
sudo npm install -g pm2
pm2 start npm --name benim-sitem -- start
pm2 save
pm2 startupserver {
listen 80;
server_name ornek.com www.ornek.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Yleiset virheet ja ratkaisut
Suurin osa Next.js-projekteissa kohdatuista virheistä johtuu versioiden yhteensopimattomuudesta tai palvelin- ja asiakaskoodin sekoittamisesta. Pakettienhallinnan ongelmissa auttaa myös npm-komennot-opas.
| Oire | Ratkaisu |
|---|---|
| Varoitus: Node-versiota ei tueta | Siirry ajantasaiseen LTS-versioon; jos käytät nvm:ää, nvm use --lts |
| Portti 3000 on käytössä | Valitse toinen portti komennolla npm run dev -- -p 3001 |
| Hydration failed -virhe | Siirrä koodi, joka tuottaa erilaisen tulosteen palvelimella ja selaimessa (päivämäärä, satunnaisluku, window-käyttö), asiakaskomponenttiin tai useEffectin sisään |
| useState-hookia ei voi käyttää palvelinkomponentissa | Lisää tiedoston alkuun use client -direktiivi |
| Ympäristömuuttuja on tyhjä tuotannossa | Määritä muuttuja myös palvelimella; jos tarvitset sitä selaimessa, käytä NEXT_PUBLIC_-etuliitettä ja käännä uudelleen |
Usein kysytyt kysymykset
01Kannattaako käyttää Pages Routeria vai App Routeria?
Uusille projekteille virallinen suositus on App Router; palvelinkomponentit, sisäkkäiset layoutit ja suoratoistorenderöinti ovat vain tässä rakenteessa. Pages Routeria tuetaan edelleen, joten vanhaa projektia ei tarvitse siirtää kiireellä.
02Onko Vercel pakollinen Next.js:lle?
Ei. Next.js on avointa lähdekoodia ja toimii millä tahansa palvelimella tai Docker-kontissa, jossa Node.js voi pyöriä. Vercel helpottaa asennusta; oma palvelin voi puolestaan olla edullisempi, antaa paremman datan sijainnin hallinnan ja enemmän kontrollia.
03Toimiiko Next.js-projekti jaetussa verkkopalvelussa?
Palvelinominaisuuksia vaativa projekti ei toimi perinteisessä jaetussa webhotellissa, jossa Node.js-prosessia ei voi ajaa. Jos sivustosi on täysin staattinen, voit ladata output: export -asetuksella tuotetut tiedostot; muuten tarvitaan VPS tai Node-tukea tarjoava ympäristö.
Next.js:n asennus päättyy muutamaan komentoon; oikea renderöintistrategia ja vankka julkaisuympäristö tekevät projektista pitkäikäisen. Jos suunnittelet työhösi sopivaa sovellusta, kuten varaus-, ilmoitus- tai hallintapaneelia, tutustu ohjelmistoratkaisuihimme; ja sisältökeskeistä nopeaa sivustoa varten tutustu verkkosivujen suunnittelun tiimiimme.


