So installierst du Next.js unter Ubuntu

Next.js ist eine kostenlose, quelloffene und produktionsreife React-Anwendung, die dir Bausteine zur Verfügung stellt, um superschnelle und extrem benutzerfreundliche Webanwendungen zu erstellen. Sie wurde von Vercel entwickelt und ermöglicht React-basierte Webanwendungen mit serverseitigem Rendering und die Erstellung statischer Websites. Next.js kann alle für React erforderlichen Konfigurationen übernehmen und bietet zusätzliche Funktionen und Optimierungen für deine Anwendung.

Diese Anleitung zeigt dir, wie du Next.js mit Nginx als Reverse Proxy auf Ubuntu 22.04 installierst.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 22.04 läuft.
  • Ein gültiger Domainname zeigt auf die IP deines Servers.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Node.js installieren

Bevor du beginnst, muss Node.js auf deinem Server installiert werden. Installiere zunächst alle erforderlichen Abhängigkeiten mit dem folgenden Befehl:

apt install curl gnupg2 wget -y

Als Nächstes fügst du das Node.js-Repository mit dem folgenden Befehl hinzu:

curl -sL https://deb.nodesource.com/setup_18.x | bash -

Sobald das Repository hinzugefügt ist, kannst du Node.js mit dem folgenden Befehl installieren:

apt install nodejs -y

Nach der Installation überprüfst du die Node.js-Version mit dem folgenden Befehl:

node -v

Du solltest die folgende Ausgabe sehen:

v18.12.1

Du kannst auch die NPM-Version mit dem folgenden Befehl überprüfen:

npm -v

Du solltest die folgende Ausgabe sehen:

8.19.2

Erstellen einer Next.js-Anwendung

Du kannst das npx-Tool verwenden, um eine Next.js-Anwendung zu erstellen. npx ist ein CLI-Tool, mit dem sich Abhängigkeiten, die in der npm-Registry gehostet werden, einfach installieren und verwalten lassen.

Führe den folgenden Befehl aus, um eine Next.js-Anwendung namens nextapp zu erstellen:

npx create-next-app nextapp

Du solltest die folgende Ausgabe erhalten:

Need to install the following packages:
  create-next-app@13.0.3
Ok to proceed? (y) y
? Would you like to use TypeScript with this project? … No / Yes
? Would you like to use ESLint with this project? … No / Yes
Creating a new Next.js app in /root/nextapp.

Using npm.

Installing dependencies:
- react
- react-dom
- next
- typescript
- @types/react
- @types/node
- @types/react-dom
- eslint
- eslint-config-next

added 237 packages, and audited 238 packages in 20s

78 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Initializing project with template: default 

Success! Created nextapp at /root/nextapp

Sobald du fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Ausführen einer Next.js-Anwendung

Nachdem du eine Next.js-Anwendung erstellt hast, wechselst du in das Verzeichnis nextapp und führst sie mit dem folgenden Befehl aus:

cd nextapp
npm run dev

Du erhältst die folgende Ausgabe:

> nextapp@0.1.0 dev
> next dev

ready - started server on 0.0.0.0:3000, url: http://localhost:3000
event - compiled client and server successfully in 3.2s (154 modules)
Attention: Next.js now collects completely anonymous telemetry regarding usage.
This information is used to shape Next.js' roadmap and prioritize features.
You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
https://nextjs.org/telemetry

Drücke die Tastenkombination STRG+C, um die Anwendung anzuhalten. Erstelle dann die Anwendung mit dem folgenden Befehl:

npm run build

Du erhältst die folgende Ausgabe:

> nextapp@0.1.0 build
> next build

info  - Linting and checking validity of types  
info  - Creating an optimized production build  
info  - Compiled successfully
info  - Collecting page data  
info  - Generating static pages (3/3)
info  - Finalizing page optimization  

Route (pages)                              Size     First Load JS
? ? /                                      4.83 kB        83.7 kB
?   ? css/ae0e3e027412e072.css             707 B
?   /_app                                  0 B            78.9 kB
? ? /404                                   212 B          79.1 kB
? ? /api/hello                             0 B            78.9 kB
+ First Load JS shared by all              79.2 kB
  ? chunks/framework-0f397528c01bc177.js   45.7 kB
  ? chunks/main-5cebf592faf0463a.js        31.8 kB
  ? chunks/pages/_app-05f53d08443c56f6.js  402 B
  ? chunks/webpack-2369ea09e775031e.js     1.02 kB
  ? css/ab44ce7add5c3d11.css               247 B

?  (Server)  server-side renders at runtime (uses getInitialProps or getServerSideProps)
?  (Static)  automatically rendered as static HTML (uses no initial props)

Starte die Next.js-Anwendung mit folgendem Befehl:

npm start

Du solltest die folgende Ausgabe sehen:

> nextapp@0.1.0 start
> next start

ready - started server on 0.0.0.0:3000, url: http://localhost:3000

Drücke die Tastenkombination STRG+C, um die Anwendung anzuhalten.

Verwalten der Next.js-Anwendung mit PM2

PM2 ist ein fortschrittlicher Prozessmanager für produktive Node.js-Anwendungen. Er ermöglicht es dir, Anwendungen für immer am Leben zu erhalten.

Um PM2 zu installieren, führe den folgenden Befehl aus:

npm install pm2@latest -g

Starte dann deine Next.js-Anwendung mit PM2, indem du den folgenden Befehl ausführst:

pm2 start "npm start"

Du erhältst die folgende Ausgabe:

[PM2] Starting /usr/bin/bash in fork_mode (1 instance)
[PM2] Done.
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? id  ? name         ? namespace   ? version ? mode    ? pid      ? uptime ? ?    ? status    ? cpu      ? mem      ? user     ? watching ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? 0   ? npm start    ? default     ? N/A     ? fork    ? 1321     ? 0s     ? 0    ? online    ? 0%       ? 24.5mb   ? root     ? disabled ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Jetzt ist die Next.js-Anwendung gestartet und lauscht auf Port 3000. Du kannst dies mit dem folgenden Befehl überprüfen:

ss -antpl | grep 3000

Du erhältst die folgende Ausgabe:

LISTEN 0      511          0.0.0.0:3000      0.0.0.0:*    users:(("node",pid=1337,fd=18))

Du kannst den Status deiner Next.js-Anwendung auch mit dem folgenden Befehl überprüfen:

pm2 show "npm start"

Du erhältst die folgende Ausgabe:

 Describing process with id 0 - name npm start 
???????????????????????????????????????????????????????????
? status            ? online                              ?
? name              ? npm start                           ?
? namespace         ? default                             ?
? version           ? N/A                                 ?
? restarts          ? 0                                   ?
? uptime            ? 59s                                 ?
? script path       ? /usr/bin/bash                       ?
? script args       ? -c npm start                        ?
? error log path    ? /root/.pm2/logs/npm-start-error.log ?
? out log path      ? /root/.pm2/logs/npm-start-out.log   ?
? pid path          ? /root/.pm2/pids/npm-start-0.pid     ?
? interpreter       ? none                                ?
? interpreter args  ? N/A                                 ?
? script id         ? 0                                   ?
? exec cwd          ? /root/nextapp                       ?
? exec mode         ? fork_mode                           ?
? node.js version   ? N/A                                 ?
? node env          ? N/A                                 ?
? watch & reload    ? ?                                   ?
? unstable restarts ? 0                                   ?
? created at        ? 2022-11-12T13:30:39.734Z            ?
???????????????????????????????????????????????????????????
 Divergent env variables from local env 


 Add your own code metrics: http://bit.ly/code-metrics
 Use `pm2 logs npm start [--lines 1000]` to display logs
 Use `pm2 env 0` to display environment variables
 Use `pm2 monit` to monitor CPU and Memory usage npm start

Wenn du fertig bist, kannst du mit der Installation und Konfiguration von Nginx fortfahren.

Nginx als Reverse Proxy für die Next.js-Anwendung konfigurieren

Es ist eine gute Idee, Nginx als Reverse Proxy zu installieren und zu konfigurieren, um auf die Next.js-Anwendung zuzugreifen.

Installiere zunächst das Nginx-Paket mit dem folgenden Befehl:

apt install nginx -y

Sobald Nginx installiert ist, erstellst du eine Konfigurationsdatei für den virtuellen Nginx-Host:

nano /etc/nginx/conf.d/next.conf

Füge die folgenden Konfigurationen hinzu:

server {
  
  server_name next.example.com;

  location / {
    # Reverse proxy for Next server
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Port $server_port;

  }
}

Speichere und schließe die Datei. Überprüfe dann den Nginx auf Syntaxkonfigurationsfehler:

nginx -t

Du solltest die folgende Ausgabe sehen:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starte anschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart nginx

Du kannst den Status von Nginx auch mit dem folgenden Befehl überprüfen:

systemctl status nginx

Du solltest die folgende Ausgabe sehen:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-11-12 13:35:46 UTC; 6s ago
       Docs: man:nginx(8)
    Process: 2023 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 2024 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 2025 (nginx)
      Tasks: 3 (limit: 464122)
     Memory: 3.3M
     CGroup: /system.slice/nginx.service
             ??2025 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??2026 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??2027 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Nov 12 13:35:46 ubuntu22041 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 12 13:35:46 ubuntu22041 systemd[1]: Started A high performance web server and a reverse proxy server.

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Zugriff auf die Next.js Webanwendung

Jetzt ist die Next.js-Anwendung installiert und mit Nginx konfiguriert. Du kannst sie jetzt über die URL http://next.example.com aufrufen. Du solltest die Next.js-Webseite auf dem folgenden Bildschirm sehen:

Fazit

Glückwunsch! Du hast die Next.js-Anwendung erfolgreich mit Nginx auf Ubuntu 22.04 installiert. Jetzt kannst du deinen Entwicklungsprozess mit dem Next.js-Framework beschleunigen. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.

Das könnte dich auch interessieren …