GitHub Website AWS EC2 वर Nginx ने कशी Host करायची
खरे projects nano मध्ये type करत नाहीत: developers त्यांचा code GitHub वर ठेवतात, आणि cloud engineers म्हणून आपलं काम तो host करणं. या chapter मध्ये आपण GitHub वर free static website शोधणार, wget ने EC2 server वर आणणार, unzip करणार, आणि Nginx चा root बरोबर folder वर ठेवणार. सोबत ssh अडवणारा key-permission error fix करू, index.html खरंच कुठल्या folder मध्ये आहे ते शोधायला शिकू, आणि एका server वर अनेक sites ला domain names का लागतात ते बघू. शेवटी phishing pages बद्दल सावधानता, कारण हेच hosting चं skill attackers चुकीच्या कामासाठी वापरतात.
या class मध्ये काय शिकणार
- GitHub, repository, public आणि private repos, आणि organisation accounts म्हणजे काय
- Language bar बघून static project आणि backend लागणारा project ओळखणं
- Linux, Mac आणि Windows वर
UNPROTECTED PRIVATE KEY FILEfix करणं - Repository server वर आणायच्या दोन पद्धती: Download ZIP +
scp, किंवा server वरwget - Example 1: दहा sites असलेला repo,
/usr/share/nginx/tensitesमधून host - Example 2: डझनभर mini-projects असलेला repo:
index.htmlशोधा,pwd,rootset करा - Folder नावाने अनेक projects उघडणं, आणि domains हीच योग्य पद्धत का
- चांगल्या सवयी:
rm -rf *आधीpwd, विचित्र URLs ला quotes,file.zip.1, LICENSE check - Phishing login pages passwords कसे चोरतात, आणि स्वतःला कसं वाचवायचं
1. का: खरे projects GitHub वर असतात
का. मागच्या chapters मध्ये आपण pages हाताने लिहिली किंवा agent कडून लिहून घेतली. खऱ्या companies मध्ये code एका ठिकाणी असतो जिथे पूर्ण team काम करते, आणि बऱ्याचदा ते ठिकाण GitHub असतं. Developers code लिहितात; आपण तो host करतो.
Classroom line
We keep our code stored on github.com.
Class मधलं वाक्य
"GitHub dot com varthi aapla code store karun thevto."
GitHub dot com वरती आपला code store करून ठेवतो.
Classroom line
We keep our code stored on github.com.
2. काय: GitHub आणि repositories
का. Company चा code host करण्याआधी तो कुठे आहे आणि तो download करायची परवानगी आहे का, हे माहीत हवं. Public आणि private repositories हे उत्तर देतात.
GitHub (github.com, Microsoft च्या मालकीचं) ही website आहे जिथे companies आणि developers source code ठेवतात. एका project चा code ठेवायची जागा म्हणजे repository, किंवा repo.
- Public repository internet वर कोणीही बघू आणि download करू शकतो. Public repos search किंवा download करायला sign in करायची गरज नाही.
- Private repository फक्त तुम्ही allow केलेल्या लोकांना दिसते. ते sign in करतात, किंवा token वापरतात.
- Free accounts मध्ये unlimited public आणि private repositories बनवता येतात.
- Companies त्यांचे repositories organisation accounts मध्ये ठेवतात, जे पूर्ण team share करते.
Classroom line
A public repository means anyone in the world can download that code from the internet.
Class मधलं वाक्य
Public repository म्हणजे जगातलं कोणीही internet वरून तो code download करू शकतं.
Classroom line – हिंदी
"Public repository cha matlab hai, duniya me koi bhi internet se wo code download kar sakta hai."
Figure 1. एक project म्हणजे एक repository. Public: कोणीही download करू शकतो. Private: फक्त तुम्ही allow केलेले लोक.
Static की backend? Language bar वाचा. प्रत्येक repository च्या page वर तो कुठल्या languages वापरतो त्याचा रंगीत bar असतो.
- फक्त HTML, CSS आणि JavaScript: static site. Nginx files जशाच्या तशा serve करतो. या chapter मध्ये आपण हेच host करतो.
- Java, Python, PHP किंवा बाकी languages: project ला code चालवणारा backend लागतो. फक्त files copy करून चालत नाही; हे course मध्ये पुढे host करू.
Figure 2. फक्त HTML, CSS आणि JavaScript: static, Nginx serve करतो. Java, Python किंवा PHP: backend लागतो.
Example 1: search करणं. github.com वर html websites search करा. काही repositories मध्ये एक site असते, आणि काहींमध्ये डझनभर छोटे beginner projects. Sign in न करता search pages खूप पटापट उघडले तर GitHub Too many requests page दाखवतो. एक minute थांबा, किंवा sign in करा.
3. कसं: server ला connect करा
का. Server वर पोहोचल्याशिवाय या chapter मधलं काहीच चालत नाही. इथला key permission fix Mac, Linux आणि नवीन Windows users ना सगळ्यात आधी लागतो.
Step 1. SSH आणि HTTP allow करून Amazon Linux server launch करा (किंवा आधीचा वापरा). Free-tier eligible instance types वापरा, आणि AWS च्या सध्याच्या free-tier terms check करा.
Step 2. Username साठी AMI बघा: Amazon Linux साठी ec2-user, Ubuntu साठी ubuntu.
Step 3. Connect करा:
ssh -i mykey.pem ec2-user@PUBLIC_IP
ssh ने key नाकारली तर. असं दिसू शकतं:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'mykey.pem' are too open.
...
ec2-user@PUBLIC_IP: Permission denied (publickey).
का. Private key म्हणजे घराची चावी. तुमच्या computer वरचे दुसरे users ती file वाचू शकत असतील, तर ssh ती वापरायला नकार देतो. File फक्त तुम्हालाच वाचता आली पाहिजे.
Classroom line
The PEM file needs only 400 permission.
Class मधलं वाक्य
"PEM file la fakta 400 permission pahije."
PEM file ला फक्त 400 permission पाहिजे.
Classroom line
The PEM file needs only 400 permission.
Linux आणि Mac वर fix.
Step 1. हे चालवा:
chmod 400 mykey.pem
400 म्हणजे: 4 = तुमच्यासाठी (owner) read, 0 = group ला काहीच नाही, 0 = बाकी सगळ्यांना काहीच नाही.
Windows वर fix. PowerShell मध्ये cd आणि ls चालतात कारण PowerShell च्या स्वतःच्या commands ची ती नावं आहेत, आणि ssh आणि scp चालतात कारण Windows मध्ये OpenSSH client येतो. chmod तिथे नाही, म्हणून file चे Properties वापरा. आधीच्या Windows versions मध्ये key चालून जायची; नवीन updates पण strict आहेत.
Classroom line
In Windows we could ssh directly. Now Windows too is slowly making this compulsory in the new updates.
Class मधलं वाक्य
"Windows madhe aapan directly ssh karu shakat hoto. Mag aatha Windows valyani bi halu halu compulsory karayla laglet navin updates madhe."
Windows मध्ये आपण directly ssh करू शकत होतो. मग आता Windows वाल्यांनी पण हळूहळू compulsory करायला लागलेत नवीन updates मध्ये.
Classroom line
In Windows we could ssh directly. Now Windows too is slowly making this compulsory in the new updates.
Step 1. mykey.pem वर right-click करून Properties निवडा, मग Security tab, मग Advanced.
Step 2. Disable inheritance click करा आणि Remove all inherited permissions निवडा. Inheritance म्हणजे file ला तिच्या parent folder कडून मिळालेल्या permissions.
Classroom line
What is inheritance? We call it 'varasa' (what's handed down).
Class मधलं वाक्य
"Inheritance mhanje kay, varasa mhanato aapan."
Inheritance म्हणजे काय, वारसा म्हणतो आपण.
Classroom line
What is inheritance? We call it 'varasa' (what's handed down).
Step 3. Add click करा, मग Select a principal, तुमचं Windows user name type करा, Check Names आणि OK click करा.
Step 4. फक्त Read tick करा, मग OK आणि Apply. आता key फक्त तुम्हीच वाचू शकता, आणि ssh ती accept करतो.
Figure 3. दुसरे वाचू शकतील अशी key ssh नाकारतो. Linux आणि Mac: chmod 400. Windows: Properties, Security, Advanced, फक्त तुमचा user आणि Read.
4. कसं: code server वर आणायच्या दोन पद्धती
का. GitHub पासून server पर्यंत एकापेक्षा जास्त रस्ते आहेत. दोन्ही माहीत असले की जलद रस्ता निवडता येतो, आणि link चालली नाही तर दुसरा वापरता येतो.

Whiteboard: Repository वरचं हिरवं Code button: clone URL, आणि खाली Download ZIP. त्याची link copy करायला Download ZIP वर right-click करा.
पद्धत A: Download ZIP, मग scp. तुमच्या computer वर Code > Download ZIP click करा, मग server वर copy करा:
scp -i mykey.pem main.zip ec2-user@PUBLIC_IP:/home/ec2-user/
File दोनदा प्रवास करते: GitHub वरून तुमचा computer, computer वरून server.
पद्धत B: link copy करा, server वर wget. Download ZIP वर right-click करून Copy link निवडा, आणि server terminal मध्ये wget च्या पुढे paste करा. Server थेट GitHub वरून download करतो: जलद, आणि एक step कमी.
Classroom line
Right-click Download ZIP, copy the link... and go to the terminal and paste it after wget.
Class मधलं वाक्य
"Download zip la right click kara, copy link kara... aani terminal madhe jaoun wget chya pudhe paste kara."
Download zip ला right click करा, copy link करा... आणि terminal मध्ये जाऊन wget च्या पुढे paste करा.
Classroom line
Right-click Download ZIP, copy the link... and go to the terminal and paste it after wget.
Figure 4. पद्धत A: Download ZIP आणि scp. पद्धत B: ZIP ची link copy करून server वर sudo wget.
5. Example 1: दहा sites असलेला एक repository
का. वरच्या पातळीवर index.html असलेली repository ही सगळ्यात सोपी खरी case: download, unzip, Nginx ला तिथे point करा, झालं.
काय बनवणार. एका repository मध्ये दहा sample sites आणि त्या सगळ्यांच्या links असलेली index.html आहे. आपण तो /usr/share/nginx/tensites मध्ये ठेवणार आणि Nginx ला तिकडे point करणार.
Step 1. Nginx start करा (गरज असेल तर आधी sudo yum install nginx -y ने install करा) आणि आत्ता तो कुठून serve करतो ते बघा:
sudo service nginx start
cd /usr/share/nginx/html
ls
Step 2. एक folder वर जा:
cd /usr/share/nginx
Step 3. ZIP download करा. हा folder root चा आहे म्हणून sudo लागतो:
sudo wget https://github.com/OWNER/REPO/archive/refs/heads/master.zip
काही repos master ऐवजी main वापरतात; GitHub देतो तशीच link copy करा.
Step 4. Unzip करा:
sudo unzip master.zip
यामुळे REPO-master नावाचा folder तयार होतो.
Step 5. त्याला छोटं नाव द्या:
sudo mv REPO-master tensites
Step 6. index.html लगेच आत आहे ते check करा:
[ec2-user@ip-172-31-xx-xx nginx]$ cd tensites
[ec2-user@ip-172-31-xx-xx tensites]$ ls
README.md index.html style.css ... (one folder per site)
[ec2-user@ip-172-31-xx-xx tensites]$ pwd
/usr/share/nginx/tensites
Step 7. Settings file उघडा:
sudo nano /etc/nginx/nginx.conf
Step 8. server block मधला root directive बदला:
root /usr/share/nginx/tensites;
Ctrl+O, Enter, मग Ctrl+X ने save करा.
Step 9. Apply करा:
[ec2-user@ip-172-31-xx-xx tensites]$ sudo service nginx reload
Redirecting to /bin/systemctl reload nginx.service
Step 10. http://PUBLIC_IP/ उघडा. Repo चं index page दिसतं; दहाही sites वर click करून बघा.
Figure 5. Animation: cd, sudo wget, sudo unzip, sudo mv ने छोटं नाव, nginx.conf मध्ये root, reload.
त्याऐवजी html folder मधली जुनी site बदलायची असेल तर. /usr/share/nginx/html च्या आत unzip करायचं असेल, तर आधी जुन्या files sudo rm -rf * ने काढाव्याशा वाटतील. ते current folder मधलं सगळं delete करतं, undo नाही. आधी pwd चालवा आणि तो /usr/share/nginx/html दाखवतो याची खात्री करा.
6. Example 2: डझनभर mini-projects असलेला repository
हे वेगळं का. काही repositories मध्ये डझनभर छोटे projects असतात, प्रत्येक स्वतःच्या folder मध्ये. root ZIP च्या top folder वर असेल, तर तिथे index.html नसते आणि site दिसत नाही. index.html असलेला folder शोधावा लागतो.
Classroom line
You must understand folders.
Class मधलं वाक्य
"Tumhala folders kalayla pahije."
तुम्हाला folders कळायला पाहिजे.
Classroom line
You must understand folders.
Step 1. html folder मध्ये download आणि unzip करा:
cd /usr/share/nginx/html
sudo wget https://github.com/OWNER/REPO/archive/refs/heads/main.zip
sudo unzip main.zip
sudo mv REPO-main projects
Step 2. cd आणि ls ने आत जा:
[ec2-user@ip-172-31-xx-xx html]$ cd projects
[ec2-user@ip-172-31-xx-xx projects]$ ls
LICENSE README.md projects
[ec2-user@ip-172-31-xx-xx projects]$ cd projects
[ec2-user@ip-172-31-xx-xx projects]$ ls
age-calculator dad-jokes-generator music-player rock-paper-scissors-game ...
Step 3. एका project मध्ये जा आणि index.html आहे का बघा:
[ec2-user@ip-172-31-xx-xx projects]$ cd music-player
[ec2-user@ip-172-31-xx-xx music-player]$ ls
index.html script.js style.css ...
Step 4. ज्या folder मध्ये index.html दिसते तिथे pwd चालवा आणि path copy करा:
[ec2-user@ip-172-31-xx-xx music-player]$ pwd
/usr/share/nginx/html/projects/projects/music-player
Classroom line
In the folder that has index.html, simply fire pwd.
Class मधलं वाक्य
"Jya folder madhye index.html aahe, tya folder madhye simply pwd fire karaycha."
ज्या folder मध्ये index.html आहे, त्या folder मध्ये simply pwd fire करायचा.
Classroom line
In the folder that has index.html, simply fire pwd.
Step 5. तो /etc/nginx/nginx.conf मध्ये root setting म्हणून paste करा. फक्त हीच line बदला:
root /usr/share/nginx/html/projects/projects/music-player;
Step 6. Reload करा आणि http://PUBLIC_IP/ उघडा. Music player दिसतो.
sudo service nginx reload
Figure 6. Animation: index.html दिसेपर्यंत cd आणि ls, pwd, path root म्हणून paste, reload.
Example 3: दुसऱ्या project वर switch. त्याच steps, दुसरा folder:
cd ../dad-jokes-generator
pwd
sudo nano /etc/nginx/nginx.conf
sudo service nginx reload
root /usr/share/nginx/html/projects/projects/dad-jokes-generator; सोबत. root बदलला की server कुठली एक site दाखवतो ते बदलतं.
7. एकाच वेळी अनेक projects: folder URLs, ports, domains
का. एका repository मध्ये अनेक projects असतील, तर visitors प्रत्येकापर्यंत कसे पोहोचणार ते ठरवावं लागतं. Folder URLs, ports आणि domains हे तीन पर्याय, प्रत्येकाची किंमत वेगळी.
Root parent folder वर. root ला /usr/share/nginx/html/projects/projects; ठेवा. आता प्रत्येक project त्याच्या folder नावावर उघडतो:
http://PUBLIC_IP/music-player/http://PUBLIC_IP/dad-jokes-generator/http://PUBLIC_IP/rock-paper-scissors-game/
चालतं, पण visitors ना तुमची folder नावं माहीत असावी लागतील.
Classroom line
The user doesn't know our folder's name, right?
Class मधलं वाक्य
"User la mahiti nasto na aplya folder cha nav."
User ला माहिती नसतं ना आपल्या folder चं नाव.
Classroom line
The user doesn't know our folder's name, right?
Figure 7. Root parent folder वर: प्रत्येक project http://PUBLIC_IP/folder-name/ वर. योग्य पद्धत म्हणजे प्रत्येक site ला domain आणि server block.
योग्य पद्धत. प्रत्येक site ला स्वतःचं domain name आणि स्वतःचा server block. दुसरा पर्याय तुम्ही आधी पाहिलाय: वेगवेगळे ports. Domains आणि server blocks पुढच्या chapter मध्ये.
Classroom line
If you want to host more than one website, you actually need a domain name.
Class मधलं वाक्य
"Eka peksha jast websites host karaychya asel, actually aplyala domain name lagto."
एकापेक्षा जास्त websites host करायच्या असतील, actually आपल्याला domain name लागतो.
Classroom line
If you want to host more than one website, you actually need a domain name.
Classroom line
Hosting fifty-five websites means writing fifty-five server blocks.
Class मधलं वाक्य
"Panchavanna website host karne mhanje, panchavanna server block lihayche."
पंचावन्न website host करणं म्हणजे, पंचावन्न server block लिहायचे.
Classroom line
Hosting fifty-five websites means writing fifty-five server blocks.
8. लोक अडकतात अशा छोट्या गोष्टी
का. यातली प्रत्येक छोटी चूक गोंधळात टाकणारा error देते. त्या आधीच माहीत असल्या की debugging चा एक तास वाचतो.
-
Spaces किंवा brackets असलेले URLs. पूर्ण URL double quotes मध्ये टाका, नाहीतर shell तो तोडतो:
sudo wget "https://example.com/files/my song (live).mp3" -
main.zip.1.main.zipआधीच असेल तरwgetपुढचा downloadmain.zip.1म्हणून save करतो. आधी जुनी file delete करा (sudo rm main.zip), किंवा download ला स्वतः नाव द्या:sudo wget -O site2.zip https://github.com/OWNER/REPO/archive/refs/heads/main.zip -
Unzip ला
sudo./usr/share/nginxआणि त्यातलाhtmlfolder root चे आहेत, म्हणून तिथेunzipआणिmvलाsudoलागतो. - Quality वेगवेगळी. कोणीही repo publish करू शकतो. काही polished दिसतात, काही rough. Promise करण्याआधी preview करा.
- LICENSE check करा. Template पुन्हा वापरण्याआधी, किंवा त्यावरून बनवलेली site विकण्याआधी, repo ची
LICENSEfile उघडा आणि ती पाळा; credit मागितलं असेल तर द्या.
खरं skill. समजा एखाद्या local bakery किंवा tuition class ला साधी website हवीये. ज्याचं licence परवानगी देतं असा template निवडा, text आणि images बदला, आणि EC2 वर host करा.
Classroom line
You can earn money from the people around you.
Class मधलं वाक्य
"Tumhi paise kamau shakta tumhi aaju baju chya lokankadna."
तुम्ही पैसे कमवू शकता तुमच्या आजूबाजूच्या लोकांकडून.
Classroom line
You can earn money from the people around you.
9. सावधान: phishing login pages
Phishing: look-alike login pages
हेच hosting चं skill attackers चुकीच्या कामासाठी वापरतात. ते कसं चालतं ते माहीत असलं की तुम्ही फसणार नाही.
- Attacker खऱ्या login page चा look copy करतो, समजा Instagram चं, आणि स्वतःच्या server वर host करतो.
- Message मध्ये link पाठवतो: "तुमचं account block होईल, आत्ता login करा."
- Page खरं दिसतं, म्हणून victim username आणि password टाकतो.
- Form ते attacker च्या server ला पाठवतो, खऱ्या company ला नाही.
स्वतःला वाचवा:
- Password टाकण्याआधी address bar मधलं domain check करा.
- Messages मधल्या links वरून login करू नका. App उघडा, किंवा address स्वतः type करा.
- Two-factor sign-in किंवा passkeys चालू करा.
- Fake pages खऱ्या company ला report करा.
Classroom line
They'll think it's Instagram, so they'll type their username and password.
Class मधलं वाक्य
"Tyanna vatnar Instagram ahe, mag te tyanche username password taktil."
त्यांना वाटणार Instagram आहे, मग ते त्यांचे username password टाकतील.
Classroom line
They'll think it's Instagram, so they'll type their username and password.
Classroom line
This is exactly what's called a phishing attack.
Class मधलं वाक्य
"Yalach phishing attacks mhantat."
यालाच phishing attacks म्हणतात.
Classroom line
This is exactly what's called a phishing attack.
Figure 8. Phishing page passwords कसे चोरतं, आणि स्वतःला वाचवायचे चार मार्ग.
10. Clean up आणि पुढे काय
का. विसरलेला practice server पैसे घेत राहतो. काम संपल्यावर तो terminate करणं हा कामाचाच भाग.
Step 1. Practice झाली की EC2 console मध्ये instance terminate करा, म्हणजे पैसे लागणं थांबतं.
पुढे. Domain names आणि server blocks ने एका server वर अनेक websites host करणं.
11. पूर्ण flow एका page वर
- ज्याच्या language bar मध्ये फक्त HTML, CSS आणि JavaScript आहे असा public repo शोधा.
ssh -i mykey.pem ec2-user@PUBLIC_IP(key फक्त तुम्हालाच वाचता यावी:chmod 400, किंवा Windows Properties).- Download ZIP वर right-click, link copy करा.
cd /usr/share/nginx,sudo wget <link>,sudo unzip master.zip,sudo mv REPO-master tensites.index.htmlदिसेपर्यंतcdआणिls; मगpwd.sudo nano /etc/nginx/nginx.conf:root <तो path>;.sudo service nginx reload,http://PUBLIC_IP/उघडा.- LICENSE check करा; काम झालं की instance terminate करा.
12. Hands-on lab: GitHub repository पासून live site पर्यंत
हा lab का. खऱ्या कामात code तुमच्या keyboard मधून नाही, GitHub वरून येतो. हा lab एक public HTML/CSS/JavaScript repository घेऊन Nginx ने live करतो, प्रत्येक step ला check सकट.
- Static repository निवडा
- करा: GitHub वर अशी public repository उघडा जिच्या language bar मध्ये फक्त HTML, CSS आणि JavaScript आहे, आणि वरच्या पातळीवर
index.htmlआहे. - Check करा: File list मध्ये
index.htmlदिसते. - का: Nginx एकटा फक्त साध्या files देऊ शकतो. Java, Python किंवा PHP असलेल्या repo ला backend लागतो, तो course मध्ये पुढे येतो.
- करा: GitHub वर अशी public repository उघडा जिच्या language bar मध्ये फक्त HTML, CSS आणि JavaScript आहे, आणि वरच्या पातळीवर
- Key fix करा आणि login करा
- Command:
chmod 400 mykey.pem && ssh -i mykey.pem ec2-user@PUBLIC_IP - काय दिसेल: ec2-user चा prompt.
- Check करा:
UNPROTECTED PRIVATE KEY FILEwarning नाही. - का: इतरांना वाचता येणारी key
sshनाकारतो. Windows वरchmodऐवजी file च्या Properties → Security वापरा.
- Command:
- Nginx start करा
- Command:
sudo yum install nginx -y && sudo service nginx start - काय दिसेल:
Complete!(किंवाNothing to do.), मग systemctl redirect ची ओळ. - Check करा:
http://PUBLIC_IP/मध्ये Nginx welcome page दिसतं. - का: आधी welcome page दिसलं की Nginx आणि port 80 चालतात हे सिद्ध होतं, म्हणून नंतरचा प्रॉब्लेम तुमच्या files किंवा settings मध्येच.
- Command:
- Server वर ZIP download करा
- Command:
cd /usr/share/nginx && sudo wget https://github.com/OWNER/REPO/archive/refs/heads/master.zip - काय दिसेल:
master.zip...saved. - Check करा:
lsमध्येmaster.zipदिसतं. - का: Link Code → Download ZIP मधून जशीच्या तशी copy करा; काही repos
mainवापरतात. Laptop वर download करूनscpने upload करण्यापेक्षा server वरचाwgetजलद.
- Command:
- Unzip आणि rename करा
- Command:
sudo unzip master.zip && sudo mv REPO-master mysite - काय दिसेल: प्रत्येक file साठी एक
inflating:ओळ. - Check करा:
ls mysiteमध्येindex.htmlदिसते. - का: छोटं folder नाव
rootची ओळ सोपी ठेवतं.index.htmlथेट आत असायला हवी, नाहीतर Nginx 403 किंवा 404 दाखवतो.
- Command:
- Nginx ला folder कडे point करा
- Command:
sudo nano /etc/nginx/nginx.conf - काय दिसेल:
serverblock मध्येroot /usr/share/nginx/mysite;set करा. Save करून बाहेर पडा. - Check करा:
sudo nginx -t→syntax is okआणिtest is successful. - का:
rootNginx ला सांगतो कोणता folder म्हणजे website. Typo ने site बंद पडू नये म्हणून reload आधी test.
- Command:
- Reload करा आणि site उघडा
- Command:
sudo service nginx reload - काय दिसेल:
Redirecting to /bin/systemctl reload nginx.service - Check करा:
http://PUBLIC_IP/मध्ये repository ची site, styles आणि images सकट दिसते. - का: Page दिसलं पण styles नाहीत, तर CSS path चुकलाय किंवा file नावात case वेगळा आहे; DevTools → Network उघडून 404 शोधा.
- Command:
- Practice संपली की terminate करा
- करा: EC2 console → instance select करा → Instance state → Terminate instance.
- Check करा: State Terminated; थोड्या वेळाने तो list मधून जातो.
- का: Code अजूनही GitHub वर आहे, म्हणून काहीच हरवत नाही. विसरलेला server पैसे घेत राहतो.
13. घरी करून बघा
Try at home
Task 1: एक site
- ssh तक्रार करत असेल तर key च्या permissions fix करा.
- Static repo शोधा, त्याची ZIP
/usr/share/nginxमध्येsudo wgetकरा, unzip करा आणि नाव बदला. rootset करा, reload करा आणिhttp://PUBLIC_IP/उघडा.
Task 2: अनेक projects
- अनेक mini-projects असलेला repo
/usr/share/nginx/htmlमध्ये download करा. - एका project ची
index.htmlशोधा,pwdचालवा,rootset करा, reload करा. - त्याच पद्धतीने दुसऱ्या project वर switch करा.
rootparent folder वर ठेवा आणि दोन projects folder नावाने उघडा.
झालं की instance terminate करा.
Recap
थोडक्यात
- GitHub code ठेवतो; एक project म्हणजे एक repository. Public repos कोणीही download करू शकतो, private फक्त तुम्ही allow केलेले लोक.
- Language bar मध्ये फक्त HTML, CSS आणि JavaScript = static, Nginx serve करू शकतो.
UNPROTECTED PRIVATE KEY FILE: Linux आणि Mac वरchmod 400; Windows वर फक्त तुमच्या user ला Read.- Code server वर आणायला Download ZIP +
scp, किंवा ZIP link +sudo wget. sudo unzip,sudo mvने छोटं नाव, मगrootindex.htmlअसलेल्या folder वर.- Folders मध्ये हरवलात?
index.htmlदिसेपर्यंतcdआणिls, मगpwdआणि paste. - Root parent folder वर असेल तर projects folder नावाने उघडतात; अनेक sites साठी domains आणि server blocks.
rm -rf *आधीpwd, विचित्र URLs ला quotes,file.zip.1कडे लक्ष, LICENSE check, आणि messages मधल्या login links वर कधीच विश्वास नको.
Ravindra Bagale, trainer: linkedin.com/in/ravindra-bagale. OWNER/REPO म्हणजे कुठलाही public repository; tensites, projects, project folders ची नावं आणि mykey.pem शिकण्यासाठीची उदाहरणं आहेत; PUBLIC_IP म्हणजे तुमच्या instance चा public IPv4 address. Outputs "..." ने छोटे केलेत; prompt मधलं hostname उदाहरणादाखल आहे.
सराव Tasks
Goa Beach Stays हा पणजी मधला हॉस्पिटॅलिटी व्यवसाय आहे. Rosario Fernandes त्यांचं 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 करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Service चालू आहे का ते पाहा
का: Site बंद असेल तर आधी web server चालू आहे का ते पाहा.
काय करायचं: httpd service चं status दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Ubuntu वर package install करा
का: Ubuntu apt वापरतं. Package नावं वेगळी: Ubuntu वर Apache म्हणजे apache2.
काय करायचं: Ubuntu वर apache2 package confirm न विचारता install करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- 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 करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं GitHub वरून code घ्या
का: git clone पूर्ण repository server वर copy करतो.
काय करायचं: https://github.com/goabeachstays/website.git सध्याच्या folder मध्ये clone करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Server वरून website test करा
का: DNS तयार होण्याआधीही web server उत्तर देतो का ते curl दाखवतो.
काय करायचं: http://localhost ला request पाठवा व फक्त response headers दाखवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं SSH चा port
का: Security group rules ला योग्य port हवा.
काय करायचं: SSH साठी security group ने कोणता TCP port उघडावा?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम nginx config test करा
का: Restart मुळे site बंद पडण्याआधी test चुका पकडतो.
काय करायचं: nginx configuration files मधल्या चुका तपासा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Service आत्ता व boot ला सुरू करा
का: enable reboot नंतर सुरू करतो; --now आत्ताच सुरू करतो.
काय करायचं: nginx service enable करा व लगेच सुरू करा, एका command ने.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Port 80 सगळ्यांसाठी उघडा
का: Security group HTTP allow करत असेल तरच visitors website पाहू शकतात.
काय करायचं: Security group sg-013a13c4b3634c3b2 वर 0.0.0.0/0 कडून inbound TCP port 80 allow करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम CloudFormation: web SG
का: फक्त 443 उघडल्याने server सुरक्षित.
काय करायचं: 0.0.0.0/0 कडून TCP 443 allow करणारा AWS::EC2::SecurityGroup. GroupDescription द्या.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
अवघड Ubuntu वर nginx site enable करा
का: Ubuntu वर sites-available पासून sites-enabled ला symbolic link ने site enable होते.
काय करायचं: /etc/nginx/sites-enabled/ मध्ये /etc/nginx/sites-available/goabeachstays ची symbolic link बनवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.









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