I'm assuming that you have built an website on React/Next/Angular or Vue.js and looking for deployment process on aws or some cloud.Let's go let's deploy your code on apache2 using PM2.
Tools used here:
Node
Frontend Frameworks
PM2
Apache2
Code and build a website in
- React
- Next.js
- Angular
- Vue,js
There are two types of website
- Static
- Dynamic
Assuming that you know how to create a website, and build and run on local, let's move it to the internet.If don't have any idea about building website comment it I'll guide you to the clouds.
Methods to deploy
- Netlify
- Github
- Gitlab
- AWS EC2
- Heroku
Today we will deploy Node server on apache2
Deploy on Apache2
Install PM2
sudo npm install -g pm2
Build your server files:
Assuming that you have code of some website on react.js/next.js/angular.js or Vue.js as far it builds and runs on npm it will fly.
npm run build
Start or Run node server with pm2
pm2 start npm --name "app-name" -- start
Install Apache2 server
sudo apt install apache2
The Apache web server will be operating as a reverse proxy. Requests to it will be proxied to the backend NodeJS applications, managed by PM2. In order for Apache to proxy requests, the following modules must be installed and enabled.
sudo en2mod proxy
sudo a2enmod proxy_http
Restart the apache server
sudo service apache2 restart
Add running node server configuration on apache2
cd into /etc/apache2/site-available
and make file server.conf
cd /etc/apache/site-available
sudo nano domain.conf
OR
sudo nano /etc/apache2/sites-available/domain.conf
Port 80
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
Port 443 - Secure
<VirtualHost *:443>
ServerName website.com
ServerAlias *.website.com
ProxyPreserveHost on
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" **%T/%D**" combined
ErrorLog /home/ubuntu/website/error.log
CustomLog /home/ubuntu/website/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/website.tech.crt
SSLCertificateKeyFile /etc/ssl/website.tech.key
</VirtualHost>
Here :
SSLEngine on
Add your own certificate key-pair
and stream your log file on custom location /home/ubuntu/website/error.log and /home/ubuntu/website/access.log
Enable the newly created configuration
sudo a2ensite domain.conf
Restart the server
sudo service apache2 restart
Go to website.com your custom domain.
Your website is deployed !!!
Top comments (1)
this article is very helpful!
thanks a lot!