To deploy a Next.js app to the public, you'll need to follow these steps. First, create a new project using the Next.js CLI by running `npx create-next-app my-app` in your terminal.
Next, navigate to your project directory and install the required dependencies by running `npm install` or `yarn install`.
Before deploying your app, make sure to build it by running `npm run build` or `yarn build`. This will create a production-ready version of your app in the `out` directory.
Once you've built your app, you can deploy it to a hosting platform such as Vercel, Netlify, or GitHub Pages.
Prerequisites
Before you start deploying your Next.js app to the public, you need to have a few things in place.
First and foremost, you need a fully developed Next.js application. If you haven't already, initiate the project and make sure it's ready for deployment.
You'll also need AWS account credentials to move forward.
It's also a good idea to have the AWS CLI installed on your local machine.
To ensure a smooth deployment process, make sure to configure your bucket properties.
Setting Up Next.js
To set up Next.js, you'll need to create a new project using the `npx create-next-app` command, which will generate a basic project structure with a `pages` directory and an `app.js` file.
The `pages` directory is where you'll create your routes, and Next.js will automatically handle client-side routing for you.
Next.js uses a file-based routing system, where each file in the `pages` directory represents a route.
To get started with Next.js, you'll need to install the `@zeit/next-css` package to enable CSS support.
Once installed, you can import CSS files into your pages using the `import` statement.
Next.js also supports server-side rendering (SSR) out of the box, which allows you to render your pages on the server before sending them to the client.
To enable SSR, you'll need to create a `getServerSideProps` function in your page components.
This function will be called on the server when the page is requested, allowing you to fetch data and render the page before sending it to the client.
Building and Preparing the App
To make the application ready for the production stage, we need to bundle the javascript files. This process is done by Next.js by executing the command "npm run build".
Next.js bundles the javascript files to make the application ready for deployment. The command "npm run build" is used to achieve this.
The bundled application is now ready for deployment to the public.
Running and Managing the App
To run and manage your Next.js app, you'll need to deploy it locally first. Deploy a locally built Next.js app to Vercel to make it accessible to the public.
Once deployed, you'll want to run the app in the background even after closing the terminal. We can achieve this using the PM2 tool to run, stop, and restart the Next.js application.
To do this, follow Step 7: Run Next.js via PM2 in the background. This will allow you to manage the app even when the terminal is closed.
Deployment
Deployment is where the magic happens. You can deploy a locally built Next.js app to Vercel, making it easily accessible to the public.
You can also deploy your Next.js app to Koyeb using git-driven deployment. This process involves creating a web service on the Koyeb control panel, selecting GitHub as the deployment option, and choosing the repository and branch containing your application code.
Here are the steps to create a Koyeb App and Service:
- Click Create Web Service on the Overview tab of the Koyeb control panel.
- Select GitHub as the deployment option.
- Choose the GitHub repository and branch containing your application code.
- Name the App and Service.
- Click the Deploy button.
Once the build has finished, you will be able to access your application running on Koyeb by clicking the URL ending with .koyeb.app.
Set Next.js Environment Variables
Setting environment variables for Next.js is crucial for both static page generation and dynamic page generation with server-side rendering. Next.js uses environment variables at build time and at request time.
You'll need to set environment variables both within the build and deploy task, and in the Environment variables of your Azure Static Web Apps resource. This ensures that your environment variables are set correctly for both static and dynamic page generation.
Next.js uses environment variables at build time and at request time, so make sure to set them accordingly. This will help you avoid any issues with your environment variables not being set correctly.
Install PM2
To manage the Next.js process running in the background after the terminal is closed, we need a tool like PM2.
PM2 is a tool that allows us to run, stop, and restart the Next.js application even after the terminal is closed.
To install PM2, you can use the following command in your terminal: pm2 install. This will download and install PM2 on your system.
To verify PM2 installation, execute the command pm2 in your terminal. You will get a response similar to the screenshot given below, indicating that PM2 has been installed successfully.
Deploy Next.js App
Deploying a Next.js app can be done in several ways, including deploying to Vercel or Koyeb.
To deploy a locally built Next.js app to Vercel, you'll need to follow the steps outlined in the Vercel documentation. You can also deploy to Koyeb using a git-driven deployment.
To deploy to Koyeb, follow these steps: click Create Web Service on the Overview tab of the Koyeb control panel, select GitHub as the deployment option, choose the GitHub repository and branch containing your application code, name the App and Service, and click the Deploy button.
A Koyeb App and Service will be created, and your application will be built and deployed to Koyeb. Once the build has finished, you'll be able to access your application running on Koyeb by clicking the URL ending with .koyeb.app.
You'll need to add a file called .dockerignore to the project's root directory to limit the files copied to the Docker image. This file should contain the following contents.
Here's a list of the deployment options for a Next.js app:
- Vercel
- Koyeb (git-driven deployment)
After deploying your Next.js app to Koyeb, you'll need to set up a reverse proxy in Nginx to redirect requests to the app running at port 3000. This can be done by implementing a technique called reverse proxy in Nginx.
Next.js Sitemap
When deploying your Next.js app on Vercel, it's essential to consider SEO. You can generate a sitemap.xml for your Next.js app on Vercel.
A sitemap helps search engines understand your app's structure and content, improving visibility and crawlability. You can learn how to generate a sitemap.xml for your Next.js app on Vercel.
Sources
- https://learn.microsoft.com/en-us/azure/static-web-apps/deploy-nextjs-hybrid
- https://vercel.com/docs/frameworks/nextjs
- https://www.koyeb.com/docs/deploy/nextjs
- https://episyche.com/blog/user-guide-for-deploying-the-nextjs-app-in-production-using-pm2-and-nginx
- https://www.cloudthat.com/resources/blog/a-guide-to-deploy-nextjs-application-on-amazon-s3
Featured Images: pexels.com