3. Nginx Server Setup
Now that i) we have configured a generic Linux server on your machine depending on the OS you’re runningii)created a user that can access to this server, we will now move on to the next step.
In this guide, we’ll discuss cover how to install Nginx (a webserver) on your Ubuntu 18.04 server.
You can follow the steps manually or you can just execute a bash script* and have this setup done for once the script is executed. For that please skip to the bottom of this section.
*Please complete till step 6 to download the Nginx server and check if it has been successfully installed. After this, you can execute the script.
What is Nginx?
Nginx is one of the most popular web servers currently being used and hosts some of the highest-traffic sites on the internet. It is really resource-friendly and can be used as a web server or reverse proxy. To know more about Nginx please click here
Open terminal in Ubuntu
TYPE the following commands
Code Block $ sudo su $ [sudo] password for 'username': # once you've entered your password you will have root permissions
Installing Nginx
Code Block $ sudo apt update $ sudo apt install nginx #After accepting the procedure, apt will install Nginx and any required dependencies to your server.
Adjusting the Firewall
Code Block $ sudo ufw app list #You should get a listing of the application profiles: output: Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH # Nginx HTTP: This profile opens only port 80 (normal, unencrypted web traffic). You need to enable this $ sudo ufw allow 'Nginx HTTP' #You can verify by typing $ sudo ufw status output: Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6) #You should see HTTP traffic allowed in the displayed output
Checking for webserver
Code Block $ systemctl status nginx output: 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 Wed 2020-02-12 11:14:27 CET; 30 min ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process #The service appears to have started successfull. You can access the default page Nginx landing page to confirm that the software is running properly by navigating to your server’s IP address.
Enter your server IP address
Code Block $ curlifconfig -4 icanhazip.com #This will give your IP
When you have your server’s IP address, enter it into your browser’s address bar:
Code Block http://your_server_ip or localhost
This should display the default Nginx landing page
...
Creating web directory for each host
Code Block $ sudo mkdir -p /var/www/html/example.com/public_html #The above directory is owned by root user. We need to change the ownership to the regular user $ sudo chown -R $USER:$USER /var/www/html/example.com/public_html $ sudo chmod -R 755 /var/www/html/ #Here the $USER refers to you, the currently logged in user
Creating demo page for each Host
Code Block $ sudo nano /var/www/html/example.com/public_html/index.html
Add the following lines
Code Block <html> <head> <title>www.example.com</title> </head> <body> <h1>Hello! this page is to test for the static website</h1> </body> </html>
Create configuration file for each host
Code Block language actionscript3 $ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com.conf $ sudo nano /etc/nginx/sites-available/example.com.conf output: # Default server configuration # server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # listen [::]:443 ssl default_server; # # Note: You should disable gzip for SSL traffic. # See: https://bugs.debian.org/773332 # # Read up on ssl_ciphers to ensure a secure configuration. # See: https://bugs.debian.org/765782 # # Self signed certs generated by the ssl-cert package # Don't use them in a production server! # # include snippets/snakeoil.conf; root /var/www/html/example.com/public_html; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name example.com www.example.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } #Edit line 27 and 32 accordingly in your terminal
Enable Nginx Server block
Code Block $ sudo rm /etc/nginx/sites-enabled/default $ sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/ $ sudo systemctl restart nginx
Test Nginx Server block
Code Block $ sudo nano /etc/hosts #Add all your virtual domain like below. output: [...] 192.168.225.24 example.com [...] #we do this beacuse this is your domain and we'll need to point it to the localhost server
The We’re working on a script that will do all of this manual work for you is here → script.sh (still to come) please configure manually for now, we are working on automating this process by writing a simple script. It should be available soon
to execute this
Name it something like:
script.sh
.Make it executable:
sudo chmod 755 script.sh
Run it:
sudo ./script.sh example.com
Once you have all of this setup, you will have to send the following information to Rumie.
Provide Rumie:
Public IP Address of the Server
Username - Part 2
User Password - Part 2
Web Directory Root
Content Sync Schedule (UTC Time + Day(s) of the Week/Month)
Project ID it should be connected to
Rumie will use this information to access your server and sync Content