Ravindra BagaleCourses & study guides English

Nginx Configuration Tutorial: Port, Root Folder आणि Index Page बदला

मागच्या chapter मध्ये आपण Amazon Linux वर Apache चा folder, port आणि पहिलं page बदललं. आता तेच तीन बदल आधी Amazon Linux वरच्या Nginx साठी, मग Ubuntu वरच्या Apache साठी, आणि शेवटी Ubuntu वरच्या Nginx साठी करणार. सोबत settings file ला हात लावण्याआधी backup कसा घ्यायचा, मराठी text UTF-8 ने नीट कसा दाखवायचा, आणि service reload होत नसेल तर चुकीची line कशी शोधायची, हेही शिकू.

या class मध्ये काय शिकणार

  • Nginx ची settings कुठे असतात: /etc/nginx/nginx.conf आणि server { } block
  • Nginx files मध्ये braces आणि semicolons कसे चालतात
  • Settings file edit करण्याआधी backup घेणं, आणि तो परत ठेवणं
  • Nginx चा port (listen), folder (root) आणि पहिलं page (index) बदलणं
  • sudo nginx -t ने test आणि reload ने apply
  • Browsers कुठले ports उघडत नाहीत
  • मराठी text विचित्र अक्षरांत दिसत असेल तर: charset utf-8;
  • Ubuntu वर Apache: apache2.conf, ports.conf आणि 000-default.conf
  • status वाचून चुकीची line शोधणं
  • Ubuntu वर Nginx: sites-available/default
  • Apache आणि Nginx एकत्र, वेगवेगळ्या ports वर

1. तीच तीन settings, नावं वेगळी

का. प्रत्येक web server ला तीन गोष्टी माहीत पाहिजेत: कुठल्या port वर वाट बघायची, website कुठल्या folder मध्ये आहे, आणि पहिलं page कुठलं दाखवायचं. Apache साठी आपण ही बदलली आहेत. Nginx मध्ये settings त्याच, फक्त नावं वेगळी.

त्याच तीन settings, वेगळी नावं Port Apache Listen 90 Nginx listen 90; Folder Apache DocumentRoot /var/www/mycollege Nginx root /var/www/mywebsite; पहिलं page Apache DirectoryIndex college.html Nginx index home.html; Line च्या शेवटी Apache काही नाही Nginx semicolon ; Nginx ची नावं small letters मध्ये, server block च्या आत.Apache ची नावं capital ने सुरू होतात.

Figure 1. Apache आणि Nginx: Listen आणि listen, DocumentRoot आणि root, DirectoryIndex आणि index. Nginx ची प्रत्येक line semicolon ने संपते.

काय.

  1. Port: Apache Listen, Nginx listen.
  2. Folder: Apache DocumentRoot, Nginx root.
  3. पहिलं page: Apache DirectoryIndex, Nginx index.

Nginx मधली नावं छोट्या अक्षरांत लिहितात, आणि Nginx ची प्रत्येक setting semicolon ; ने संपते.

2. Nginx ची settings कुठे असतात

का. Setting कोणत्या file मध्ये आहे हे माहीत नसेल तर ती बदलता येत नाही. या chapter मधला प्रत्येक Nginx बदल योग्य file उघडूनच सुरू होतो.

काय. Settings files /etc मध्ये असतात. Nginx चा स्वतःचा folder आहे /etc/nginx, आणि main file आहे /etc/nginx/nginx.conf. तुम्हाला दुसऱ्या endings च्या settings files पण भेटतील, जसं .conf, .cnf, .ini, किंवा default आणि 000-default.conf सारखी नावं. सगळ्या साध्या text files आहेत, nano ने edit करायच्या.

Nginx files कशा बनलेल्या असतात.

  1. Settings braces { } मधल्या blocks मध्ये group केलेल्या असतात. Website ची settings server { } block मध्ये असतात, आणि तो http { } block च्या आत असतो.
  2. Closing brace } सगळ्यात शेवटी उघडलेला block बंद करतो, गणितातल्या brackets सारखं.
  3. प्रत्येक setting ; ने संपते.
  4. # ने सुरू होणाऱ्या lines comments असतात.
  5. include /etc/nginx/conf.d/*.conf; ही line /etc/nginx/conf.d मधली .conf ने संपणारी प्रत्येक file load करायला लावते.
nginx.conf: braces मधले blocks, प्रत्येकsetting नंतर semicolon http { ... include /etc/nginx/conf.d/*.conf; server { listen 90; listen [::]:90; server_name _; root /var/www/mywebsite; index home.html; charset utf-8; ... } } Blocks Closing brace सगळ्यात शेवटी उघडलेला block बंद करतो. दोन listen lines 90 IPv4 साठी, [::]:90 IPv6 साठी. दोन्ही बदला. [::] मध्ये space नको. Semicolons प्रत्येक setting ; ने संपते. index line नसेल तर add करा. include conf.d मधली प्रत्येक .conf file load करतो, म्हणून backups तिथे नको.

Figure 2. nginx.conf मधला server block: braces मधले blocks, दोन listen lines, प्रत्येक setting नंतर semicolon.

3. Edit करण्याआधी backup

का. एक चुकीचं अक्षर आणि Nginx बंद. चालू file ची copy असेल तर काही seconds मध्ये परत जाता येतं.

Classroom line

Always keep in mind: before you modify a config file, take its backup.

कुठे ठेवायचा. तुमच्या home folder मध्ये, /etc/nginx च्या बाहेर. /etc/nginx/conf.d मध्ये .conf ने संपणाऱ्या नावाची copy राहिली (उदाहरणार्थ old.conf), तर ती extra settings file म्हणून load होते आणि Nginx बिघडवू शकते. Home folder नेहमी safe.

कसं.

Step 1. Copy बनवा:

sudo cp /etc/nginx/nginx.conf ~/nginx.conf.bak

Step 2. Edit मुळे Nginx बिघडला, तर copy परत ठेवा आणि reload करा:

sudo cp ~/nginx.conf.bak /etc/nginx/nginx.conf
sudo service nginx reload
Edit करण्याआधी backup, बिघडलं तर restore 1. Backup sudo cp /etc/nginx/nginx.conf ~/nginx.conf.bak Copy तुमच्या home folder मध्ये, /etc/nginx च्या बाहेर. 2. Edit sudo nano /etc/nginx/nginx.conf listen, root, index बदला. Ctrl+X, Y, Enter ने save. 3. Test sudo nginx -t syntax is ok आणि test is successful? मग reload. 4. बिघडलं? Restore sudo cp ~/nginx.conf.bak /etc/nginx/nginx.conf चालणारी file परत आली. Reload करा, site परत चालते.

Figure 3. Animation: home folder मध्ये backup, edit, sudo nginx -t ने test, बिघडली तर copy परत.

4. Amazon Linux वर Nginx: आपला port, folder आणि पहिलं page

का. Real servers अनेकदा site स्वतःच्या port आणि folder वर चालवतात. Apache नंतर हेच Nginx वर केलं की कळतं: काम तेच, फक्त शब्द बदलतात.

Example 1: काय बनवणार.

  1. Port: 90
  2. Folder: /var/www/mywebsite
  3. पहिलं page: home.html
  4. URL: http://PUBLIC_IP:90/

कसं.

Step 1. Amazon Linux server ला connect करा आणि Nginx start करा (नसेल तर आधी sudo yum install nginx -y ने install करा, आणि Apache बंद आहे ते बघा):

sudo service nginx start

Step 2. Folder आणि page बनवा:

sudo mkdir /var/www/mywebsite
sudo nano /var/www/mywebsite/home.html

हे type करा:

<h1>My website on Nginx</h1>

Step 3. Settings file चा backup घ्या:

sudo cp /etc/nginx/nginx.conf ~/nginx.conf.bak

Step 4. File उघडा:

sudo nano /etc/nginx/nginx.conf

खाली server { पर्यंत scroll करा. Default मध्ये हे असतं:

listen       80;
listen       [::]:80;
server_name  _;
root         /usr/share/nginx/html;

Step 5. दोन्ही listen lines मध्ये port बदला. पहिली IPv4 addresses साठी, दुसरी [::] वाली IPv6 साठी. [::] च्या आत space नको:

listen       90;
listen       [::]:90;

Step 6. Folder बदला:

root         /var/www/mywebsite;

Step 7. Default मध्ये index line नसते, म्हणून server block च्या आत ती add करा:

index        home.html;

प्रत्येक line च्या शेवटी ; विसरू नका.

Step 8. Ctrl+X, Y, Enter ने save करा. बोट घसरलं आणि Ctrl शिवाय x type झाला, तर file मध्ये एक extra x जातो, आणि Nginx त्याच्यावर तक्रार करतो.

Step 9. Nginx ला file check करू द्या:

[ec2-user@ip-172-31-xx-xx ~]$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

काही problem असेल तर तो line सांगतो, उदाहरणार्थ unknown directive "x" in /etc/nginx/nginx.conf:....

Step 10. Changes apply करा:

[ec2-user@ip-172-31-xx-xx ~]$ sudo service nginx reload
Redirecting to /bin/systemctl reload nginx.service

Step 11. Security Group मध्ये inbound rule add करा: Custom TCP, port 90, source 0.0.0.0/0. 22 आणि 80 चे rules आहे तसेच ठेवा.

Step 12. http://PUBLIC_IP:90/ उघडा. My website on Nginx दिसतं.

nano showing /etc/nginx/nginx.conf: include /etc/nginx/mime.types, the comment about loading modular files from /etc/nginx/conf.d with include /etc/nginx/conf.d/*.conf, and the server block with listen 90, listen [::]:90, server_name _, an index line, a root line and charset utf-8.

Whiteboard: Edit नंतरची Amazon Linux वरची nginx.conf: listen 90 आणि listen [::]:90, नवीन index line, demo च्या स्वतःच्या folder कडे जाणारी root, आणि charset utf-8. index आणि charset डाव्या कडेपासून सुरू झाल्या तरी Nginx ला चालतं.

Example 2: browsers काही ports उघडत नाहीत. समजा तुम्ही port 69 घेतला. Nginx start होतो, Security Group पण allow करतो, पण browser request पाठवतच नाही; restricted किंवा unsafe port चा error दाखवतो. सगळे मोठे browsers दुसऱ्या services च्या ports ची एक fixed list block करतात. 90, 8080 किंवा 9090 सारखा नेहमीचा port घ्या.

Example 3: पहिलं page नसेल तर 403. Folder मध्ये home.html (किंवा index line मधलं दुसरं कुठलंच नाव) नसेल, तर http://PUBLIC_IP:90/ वर 403 Forbidden येतो: Nginx folder ची list दाखवत नाही. बाकीची pages नावाने उघडतात, उदाहरणार्थ http://PUBLIC_IP:90/about.html.

5. मराठी विचित्र अक्षरांत दिसतं: charset utf-8

का. भारतीय sites वर अनेकदा मराठी किंवा हिंदी text असतो. Page UTF-8 आहे असं server ने सांगितलं नाही, तर visitors ना अक्षरांऐवजी विचित्र चिन्हं दिसतात.

काय दिसतं. तुम्ही home.html मध्ये मराठी text टाकला:

<h1>आमचं कॉलेज</h1>

Apache वर तो नीट दिसला, पण Nginx मधून browser असं काहीतरी दाखवतो: आमचं कॉलेज.

का. तुमची file UTF-8 मध्ये save झालीये, म्हणजे मराठी, हिंदी आणि बाकी सगळ्या scripts cover करणारा character set. Nginx browser ला page कुठल्या character set मध्ये आहे ते सांगत नाही, म्हणून browser एक जुना Western set guess करतो आणि प्रत्येक मराठी अक्षराचे अनेक विचित्र symbols बनवतो. (Amazon Linux वरचा Apache default मध्येच UTF-8 पाठवतो, म्हणून तिथे नीट दिसलं.)

Classroom line

We'll have to turn on some setting in nginx that allows the other scripts too.

कसं.

Step 1. nginx.conf मधल्या server { } block च्या आत ही line add करा:

charset      utf-8;

Step 2. Test आणि reload:

sudo nginx -t
sudo service nginx reload

Step 3. Page refresh करा. मराठी text नीट दिसतो.

Page मध्ये पण. प्रत्येक HTML page च्या <head> मध्ये ही line टाका, म्हणजे page कुठल्याही server वर चालेल:

<meta charset="utf-8">
मराठी विचित्र अक्षरांत दिसतं? Browser लासांगा हे UTF-8 आहे home.html (saved as UTF-8) आमचं कॉलेज charset शिवाय आमचं कॉलेज Browser ने चुकीचा character set guess केला. charset utf-8 सोबत आमचं कॉलेज आता server सांगतो कुठला character set आहे. charset utf-8; server block च्या आत, मग reload <meta charset="utf-8"> प्रत्येक HTML page च्या head मध्ये

Figure 4. Animation: charset नसेल तर browser चुकीचा guess करतो आणि मराठी विचित्र अक्षरांत दिसतं; charset utf-8 टाकलं की नीट दिसतं.

6. Ubuntu वर Apache: settings कुठे असतात

का. Ubuntu वर Apache च्या files Amazon Linux पेक्षा वेगळ्या पद्धतीने ठेवलेल्या असतात. Main file मध्ये DocumentRoot शोधलं तर सापडणार नाही.

Classroom line

So where do all the configuration files live?

काय.

  1. Folder: /etc/apache2.
  2. Main file: /etc/apache2/apache2.conf. त्यात सगळं नसतं; ती छोट्या files include करते, जसा program libraries आत घेतो.
  3. ports.conf मध्ये port: Listen 80.
  4. sites-available/000-default.conf मध्ये website: <VirtualHost *:80>, DocumentRoot /var/www/html.
  5. sites-enabled/000-default.conf ही sites-available मधल्या file ची link आहे. कुठल्याही नावाने edit केलं तरी एकच file बदलते; खरी file sites-available मधली.
Ubuntu वर Apache: एक main file जी छोट्या filesinclude करते /etc/apache2/apache2.conf Include ports.conf IncludeOptional sites-enabled/*.conf /etc/apache2/ports.conf Listen 90 /etc/apache2/sites-available/000-default.conf <VirtualHost *:90> DocumentRoot /var/www/mycollege DirectoryIndex college.html </VirtualHost> sites-enabled/000-default.conf हा sites-available मधल्या खऱ्या fileची link आहे. कुठलीही edit केली तरी तीच file बदलते. Port दोन्ही ठिकाणी बदला: ports.conf मध्ये Listen 90 आणि000-default.conf मध्ये VirtualHost *:90.

Figure 5. apache2.conf मध्ये ports.conf (Listen) आणि sites-enabled च्या files include होतात; 000-default.conf मध्ये VirtualHost, DocumentRoot आणि DirectoryIndex.

Example 4: Ubuntu वर काय बनवणार.

  1. Port: 90
  2. Folder: /var/www/mycollege
  3. पहिलं page: college.html

कसं.

Step 1. Ubuntu server launch करा, ubuntu ने connect करा, आणि Apache install करा. आधी package list update करा:

sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 start

Install fail झालं असेल तर sudo service apache2 start उत्तर देतो Unit apache2.service not found.: sudo apt-get update करा आणि परत install करा.

Step 2. आत बघा:

cd /etc/apache2
ls

apache2.conf, ports.conf, sites-available, sites-enabled वगैरे दिसतात.

Step 3. बदलणार आहात त्या दोन files चा backup घ्या:

sudo cp /etc/apache2/ports.conf ~/ports.conf.bak
sudo cp /etc/apache2/sites-available/000-default.conf ~/000-default.conf.bak

Step 4. ports.conf मध्ये port बदला:

sudo nano /etc/apache2/ports.conf

Listen 80 च्या जागी:

Listen 90

Step 5. Website ची file उघडा:

sudo nano /etc/apache2/sites-available/000-default.conf

Step 6. पहिली line नवीन port वर बदला, म्हणजे site 90 वर उत्तर देईल:

<VirtualHost *:90>

Step 7. Folder बदला आणि त्याच्या खाली पहिलं page add करा:

DocumentRoot /var/www/mycollege
DirectoryIndex college.html

Step 8. Save करा. Folder आणि page बनवा:

sudo mkdir /var/www/mycollege
sudo nano /var/www/mycollege/college.html

हे type करा:

<meta charset="utf-8">
<h1>college</h1>

Step 9. Check आणि reload:

sudo apache2ctl configtest
sudo service apache2 reload

Files बरोबर असतील तर configtest Syntax OK print करतो.

Step 10. Port 90 साठी Security Group rule add करा (Custom TCP, 90, 0.0.0.0/0), आधीसारखा.

Step 11. http://PUBLIC_IP:90/ उघडा. college दिसतं.

Step 12. List साठी history चालवा:

sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 start
cd /etc/apache2
sudo nano /etc/apache2/ports.conf
sudo nano /etc/apache2/sites-available/000-default.conf
sudo mkdir /var/www/mycollege
sudo nano /var/www/mycollege/college.html
sudo service apache2 reload

7. Reload fail झाला: status वाचा

का. Settings file मध्ये एक typo आणि reload red मध्ये fail. कारण नेहमी लिहिलेलं असतं; फक्त वाचायचं.

Classroom line

Whenever any service stops with an error... what do we do then?

Classroom line

Check the status. It's written in the status.

कसं.

Step 1. Fail झालेल्या service चा status चालवा:

sudo service apache2 status

Step 2. शेवटच्या lines वाचा. त्यात file आणि line दिलेली असते.

Example 5: एक extra अक्षर. एका line वर एकटा x type झाला तर:

AH00526: Syntax error on line 14 of /etc/apache2/sites-enabled/000-default.conf:
Invalid command 'x', perhaps misspelled or defined by a module not included in the server configuration

Example 6: चुकीचं spelling. DirectoryIndex college.html च्या ऐवजी DocumentIndex college.html लिहिलं तर तसाच Invalid command 'DocumentIndex' message येतो. Spelling बरोबर करा, मग परत reload करा.

Classroom line

When you see red, check the status.

8. Ubuntu वर Nginx

का. Ubuntu Nginx settings वेगवेगळ्या files मध्ये ठेवतो. तिथे nginx.conf edit करून काहीच बदललं नाही, तर कारण हे.

काय. Ubuntu वर Nginx website ची settings वेगळ्या file मध्ये ठेवतो: /etc/nginx/sites-available/default. /etc/nginx/sites-enabled/default तिची link आहे, म्हणून कुठल्याही नावाने तीच file उघडते.

Classroom line

Now Nginx... stop Apache, start Nginx, and change Nginx's configuration.

कसं.

Step 1. Apache बंद करा, Nginx नसेल तर install करा, आणि start करा:

sudo service apache2 stop
sudo apt-get install nginx -y
sudo service nginx start

Step 2. Site file चा backup घ्या आणि ती उघडा:

sudo cp /etc/nginx/sites-available/default ~/default.bak
sudo nano /etc/nginx/sites-available/default

Step 3. तीच तीन settings बदला:

listen 90 default_server;
listen [::]:90 default_server;
root /var/www/mycollege;
index college.html;

Step 4. Test, reload, आणि http://PUBLIC_IP:90/ उघडा:

sudo nginx -t
sudo service nginx reload

परत college दिसतं, आता Nginx serve करतोय.

Ubuntu वर Nginx: site च्या settingssites-available/default मध्ये /etc/nginx/sites-available/default listen 90 default_server; listen [::]:90 default_server; root /var/www/mycollege; index college.html; server_name _; nginx.conf सारखंच listen = port (दोन्ही lines) root = folder index = पहिलं page प्रत्येक line ; ने संपते sites-enabled/default तिची link आहे.

Figure 6. Ubuntu वर Nginx: /etc/nginx/sites-available/default मध्ये listen, root आणि index.

9. Apache आणि Nginx एकत्र

का. कधी site Apache वरून Nginx वर downtime शिवाय हलवावी लागते, किंवा जुनी आणि नवीन site बाजूबाजूला चालवावी लागते. वेगवेगळे ports हे शक्य करतात.

काय. एका server वर दोन web servers एकाच वेळी चालू शकतात, फक्त वेगवेगळ्या ports वर. दोघं port 80 वर शक्य नाही: जो दुसरा start होतो तो fail होतो.

Example 7.

  1. Nginx port 80 वर: http://PUBLIC_IP/.
  2. Apache 8080 वर: ports.conf मध्ये Listen 8080 आणि 000-default.conf मध्ये <VirtualHost *:8080>; मग http://PUBLIC_IP:8080/.
  3. Security Group मध्ये 8080 पण उघडा.

Classroom line

Apache and Nginx can both run at the same time, if the two run on different ports.

Apache आणि Nginx एकत्र: फक्त वेगवेगळ्या portsवर Browser http://PUBLIC_IP/ http://PUBLIC_IP:8080/ एक EC2 server Nginx port 80 वर http://PUBLIC_IP/ Apache port 8080 वर http://PUBLIC_IP:8080/ दोघंही एकाच वेळी port 80 वर नाही: दुसरा start होत नाही.Security Group मध्ये 8080 पण उघडा.

Figure 7. एक server: Nginx port 80 वर आणि Apache port 8080 वर; URL मधला port web server ठरवतो.

10. पुढे काय

आत्तापर्यंत आपण छोटी pages हाताने लिहिली. पुढे developer GitHub वर ठेवतो तो खरा website code आपण host करणार. नंतर ते automate करणार: developer एकाच ठिकाणी code बदलतो, आणि तो आपोआप server वर पोचतो.

Classroom line

I'll write in one place, and everything should reach the server automatically.

11. पूर्ण flow एका page वर

  1. आधी backup: sudo cp <file> ~/<file>.bak.
  2. Amazon Linux वर Nginx: /etc/nginx/nginx.conf, server { }: listen 90;, listen [::]:90;, root /var/www/mywebsite;, index home.html;, charset utf-8;.
  3. Check आणि apply: sudo nginx -t, sudo service nginx reload.
  4. Security Group: नवीन port साठी Custom TCP. Browsers block करतात ते ports टाळा.
  5. Ubuntu वर Apache: ports.conf (Listen 90) आणि sites-available/000-default.conf (<VirtualHost *:90>, DocumentRoot, DirectoryIndex); sudo apache2ctl configtest, sudo service apache2 reload.
  6. Reload fail: sudo service apache2 status, file आणि line वाचा, fix करा.
  7. Ubuntu वर Nginx: /etc/nginx/sites-available/default.
  8. Apache आणि Nginx एकत्र: वेगवेगळे ports.

12. Hands-on lab: Nginx स्वतःच्या port, folder आणि पहिल्या page वर

हा lab का. कोणतीही server setting बदलायची सुरक्षित पद्धत नेहमी एकच: backup, edit, test, apply, check, आणि undo कसं करायचं ते माहीत. हा lab ती पद्धत Nginx वर चालवतो, आणि charset ची ओळ सिद्ध करायला मराठी text वापरतो.

  1. Nginx install आणि start करा
    • Command: sudo yum install nginx -y && sudo service nginx start
    • काय दिसेल: Complete!, मग Redirecting to /bin/systemctl start nginx.service.
    • Check करा: curl -s http://localhost | grep -i title Nginx welcome चं title दाखवतो.
    • का: Apache port 80 वर चालू असेल तर आधी तो stop करा (sudo service httpd stop): एक port एकच program वापरू शकतो.
  2. Settings file चा backup घ्या
    • Command: sudo cp /etc/nginx/nginx.conf ~/nginx.conf.bak
    • काय दिसेल: काहीच नाही.
    • Check करा: ls ~ मध्ये nginx.conf.bak दिसतं.
    • का: Copy /etc/nginx/conf.d बाहेर ठेवा: तिथली प्रत्येक .conf file load होते, म्हणून आतला backup सुद्धा load होईल.
  3. Folder आणि मराठी page बनवा
    • Command: sudo mkdir -p /var/www/mywebsite && echo "<h1>नमस्कार</h1>" | sudo tee /var/www/mywebsite/home.html
    • काय दिसेल: <h1>नमस्कार</h1>
    • Check करा: ls /var/www/mywebsite → home.html
    • का: मराठी अक्षरं multi-byte UTF-8 आहेत, म्हणून charset बरोबर set आहे की नाही ते लगेच दिसतं.
  4. Server block edit करा
    • Command: sudo nano /etc/nginx/nginx.conf
    • काय दिसेल: server { } block मध्ये listen 90;, listen [::]:90;, root /var/www/mywebsite; set करा, आणि index home.html; व charset utf-8; जोडा. Save करून बाहेर पडा.
    • Check करा: तुम्ही बदललेली प्रत्येक ओळ ; ने संपते.
    • का: दोन्ही listen ओळी बदलायला हव्यात: एक IPv4, दुसरी IPv6. Semicolon नसणं हा Nginx चा सगळ्यात नेहमीचा typo.
  5. Apply आधी test करा
    • Command: sudo nginx -t
    • काय दिसेल: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok and nginx: configuration file /etc/nginx/nginx.conf test is successful
    • Check करा: त्याऐवजी line सांगितली तर ती ओळ दुरुस्त करून परत चालवा.
    • का: -t चालू server ला हात न लावता file तपासतो. तुटलेली file visitors पर्यंत कधीच पोहोचत नाही.
  6. reload ने apply करा
    • Command: sudo service nginx reload && curl http://localhost:90
    • काय दिसेल: <h1>नमस्कार</h1>
    • Check करा: Security group मध्ये port 90 उघडा, मग http://PUBLIC_IP:90/ मध्ये नमस्कार नीट अक्षरात दिसतं.
    • का: reload चालू visitors ना न तोडता नवीन settings वाचतो. index home.html मुळेच URL मध्ये file चं नाव लागत नाही.
  7. बाजूला Apache चालवा
    • Command: sudo service httpd start && curl -s -o /dev/null -w "%{http_code}\n" http://localhost/
    • काय दिसेल: 200
    • Check करा: एकाच server वर port 80 वरून Apache आणि port 90 वरून Nginx उत्तर देतात.
    • का: दोन web servers एक machine फक्त वेगवेगळ्या ports वर share करू शकतात. Site एकीकडून दुसरीकडे downtime शिवाय हलवायची ही पद्धत.
  8. पूर्ववत करा आणि stop करा
    • Command: sudo cp ~/nginx.conf.bak /etc/nginx/nginx.conf && sudo nginx -t && sudo service nginx reload
    • काय दिसेल: nginx -t च्या दोन success ओळी.
    • Check करा: curl http://localhost:90 आता fail होतो. Instance stop करा.
    • का: Backup restore करून परत test केलं की undo चालतो हे सिद्ध होतं, आणि backup घेण्याचा उद्देश हाच.

13. घरी करून बघा

Try at home

Task 1: Amazon Linux वर Nginx

  1. nginx.conf चा backup home folder मध्ये घ्या.
  2. Port 90, folder /var/www/mywebsite, पहिलं page home.html set करा, आणि charset utf-8; add करा.
  3. sudo nginx -t चालवा, reload करा, port 90 उघडा आणि page check करा.
  4. home.html मध्ये एक मराठी line टाका आणि ती नीट दिसते का ते बघा.

Task 2: बिघडवा आणि परत आणा

  1. एक ; काढा, sudo nginx -t चालवा आणि message वाचा.
  2. तुमचा backup परत copy करा आणि reload करा.

Task 3: Ubuntu वर Apache

  1. Listen 90, <VirtualHost *:90>, DocumentRoot /var/www/mycollege आणि DirectoryIndex college.html set करा.
  2. Reload करा आणि http://PUBLIC_IP:90/ उघडा.
  3. DirectoryIndex चं spelling चुकवा, reload करा, आणि sudo service apache2 status ने line शोधा. Fix करा.

Task 4: Ubuntu वर Nginx

  1. Apache बंद करा, Nginx start करा, आणि sites-available/default मध्ये तेच port, folder आणि पहिलं page set करा.

झालं की instances stop किंवा terminate करा.

Recap

थोडक्यात

  1. Apache Listen, DocumentRoot, DirectoryIndex = Nginx listen, root, index.
  2. Nginx settings braces मधल्या blocks मध्ये असतात; प्रत्येक line ; ने संपते. दोन्ही listen lines बदला (IPv4 आणि IPv6).
  3. Settings file edit करण्याआधी home folder मध्ये backup; edit मुळे बिघडलं तर तो परत ठेवा.
  4. sudo nginx -t file check करतो; sudo service nginx reload apply करतो.
  5. नवीन port Security Group मध्ये उघडा; browsers काही ports उघडत नाहीत, म्हणून नेहमीचे ports वापरा.
  6. मराठी ऐवजी विचित्र अक्षरं: charset utf-8; आणि <meta charset="utf-8"> टाका.
  7. Ubuntu Apache: port साठी ports.conf, VirtualHost, folder आणि पहिल्या page साठी sites-available/000-default.conf. Reload fail: status वाचा.
  8. Ubuntu Nginx: sites-available/default. Apache आणि Nginx एकत्र फक्त वेगवेगळ्या ports वर.

Ravindra Bagale, trainer: linkedin.com/in/ravindra-bagale. mywebsite आणि mycollege folders, home.html, about.html आणि college.html pages, आणि मराठी sample text शिकण्यासाठीची उदाहरणं आहेत; PUBLIC_IP म्हणजे तुमच्या instance चा public IPv4 address. Outputs मधले काही भाग "..." ने छोटे केलेत; error examples मधले line numbers आणि prompt मधलं hostname उदाहरणादाखल आहेत.

सराव Tasks

या scenario बद्दल

Sahyadri Clinic हा सातारा मधला आरोग्य सेवा व्यवसाय आहे. Dr. Anil Deshmukh त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं बदलानंतर service restart करा

का: Config बदल service restart/reload नंतरच लागू होतात.

काय करायचं: nginx service restart करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Service चालू आहे का ते पाहा

का: Site बंद असेल तर आधी web server चालू आहे का ते पाहा.

काय करायचं: httpd service चं status दाखवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Ubuntu वर package install करा

का: Ubuntu apt वापरतं. Package नावं वेगळी: Ubuntu वर Apache म्हणजे apache2.

काय करायचं: Ubuntu वर apache2 package confirm न विचारता install करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Amazon Linux वर package install करा

का: Amazon Linux 2023 वर dnf हा package manager. -y आपोआप yes देतो.

काय करायचं: Amazon Linux 2023 वर httpd package confirm न विचारता install करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Server वरून website test करा

का: DNS तयार होण्याआधीही web server उत्तर देतो का ते curl दाखवतो.

काय करायचं: http://localhost ला request पाठवा व फक्त response headers दाखवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं GitHub वरून code घ्या

का: git clone पूर्ण repository server वर copy करतो.

काय करायचं: https://github.com/sahyadriclinic/website.git सध्याच्या folder मध्ये clone करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम nginx config test करा

का: Restart मुळे site बंद पडण्याआधी test चुका पकडतो.

काय करायचं: nginx configuration files मधल्या चुका तपासा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Service आत्ता व boot ला सुरू करा

का: enable reboot नंतर सुरू करतो; --now आत्ताच सुरू करतो.

काय करायचं: nginx service enable करा व लगेच सुरू करा, एका command ने.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Port 80 सगळ्यांसाठी उघडा

का: Security group HTTP allow करत असेल तरच visitors website पाहू शकतात.

काय करायचं: Security group sg-00210306304c4c3b2 वर 0.0.0.0/0 कडून inbound TCP port 80 allow करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम CloudFormation: web SG

का: फक्त 443 उघडल्याने server सुरक्षित.

काय करायचं: 0.0.0.0/0 कडून TCP 443 allow करणारा AWS::EC2::SecurityGroup. GroupDescription द्या.

कसं करायचं:
  1. Task मधल्या top-level keys पासून सुरू करा.
  2. Child keys 2 spaces ने indent करा (tabs नकोत).
  3. प्रत्येक property मध्ये task मधली value भरा.
  4. Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.

मध्यम Security group बनवा

का: Security group म्हणजे instance भोवतीचा firewall.

काय करायचं: vpc-01030c304edeadbee मध्ये sahyadriclinic-web-sg नावाचा security group "Web servers" description सह बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Ubuntu वर nginx site enable करा

का: Ubuntu वर sites-available पासून sites-enabled ला symbolic link ने site enable होते.

काय करायचं: /etc/nginx/sites-enabled/ मध्ये /etc/nginx/sites-available/sahyadriclinic ची symbolic link बनवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: nginx.conf च्या आत. प्रत्येक Nginx बदल एका settings file मध्ये सुरू होतो. /etc/nginx/nginx.conf मध्ये server { } blocks. प्रत्येक line ; ने संपते, blocks braces मध्ये. Backup घ्या, edit करा, nginx -t ने test, मग reload. तीन मुख्य lines:
उजळणी card: nginx.conf च्या आत · PNG download करा
उजळणी card: Test आणि apply: nginx -t आणि reload. एक ; सुटला तर Nginx थांबतो आणि सगळ्या sites बंद. nginx -t चालू server ला हात न लावता syntax तपासतो. reload downtime शिवाय apply करतो. नेहमी आधी -t; "syntax is ok" नंतरच reload. Commands:
उजळणी card: Test आणि apply: nginx -t आणि reload · PNG download करा
उजळणी card: charset utf-8 ने Marathi text fix. Marathi किंवा Hindi text म सारख्या विचित्र अक्षरांत दिसतो. Browser ने चुकीचं encoding ओळखलं. UTF-8 मध्ये प्रत्येक भाषा येते. Server block मध्ये charset add करा (किंवा page मध्ये meta tag), मग reload. Line:
उजळणी card: charset utf-8 ने Marathi text fix · PNG download करा
उजळणी card: Ubuntu वर Apache config. Ubuntu, Amazon Linux प्रमाणे नाही, Apache settings अनेक files मध्ये वाटतं. apache2.conf = main, ports.conf = Listen ports, sites-available/000-default.conf = site folder. ports.conf आणि VirtualHost दोन्हीकडे port बदला, मग apache2 restart. Port 8080:
उजळणी card: Ubuntu वर Apache config · PNG download करा
मुलाखत card: Nginx चा port कसा बदलता?. Server block मध्ये listen बदला, test, reload, आणि SG मध्ये port उघडा. Nginx आणि firewall जुळायला हवेत. listen 8080; मग http://13.2.1.9:8080 उघडा.
मुलाखत card: Nginx चा port कसा बदलता? · PNG download करा
मुलाखत card: Apache आणि Nginx एकाच server वर चालू शकतात का?. हो, जर वेगवेगळ्या ports वर ऐकत असतील तर. दोन programs एक port share करू शकत नाहीत. Nginx 80, Apache 8080.
मुलाखत card: Apache आणि Nginx एकाच server वर चालू शकतात का? · PNG download करा
मुलाखत card: Browser काही ports का नाकारतो?. Browsers इतर protocols चे ports block करतात, उदा. 25 (mail) किंवा 6000. Web pages इतर services वर attack करू नयेत म्हणून. Web साठी 80, 443, 8080 किंवा 8000.
मुलाखत card: Browser काही ports का नाकारतो? · PNG download करा

अजून cards: Ravi Sir's Cards.