EC2 वरच्या HTML Website मध्ये Images आणि Videos कसे add करायचे
मागच्या chapter मध्ये आपण Apache install केला आणि आपलं पहिलं page port 80 वर live झालं. आता खरी pages बनवायची. आधी server जे उत्तर देतो ते (HTTP status code) वाचायला शिकू, आणि /var/www/html मधले folders URLs मध्ये कसे बदलतात ते बघू. मग page बनवण्यापुरतं HTML शिकू, page वर तीन वेगवेगळ्या पद्धतीने images ठेवू, तुटलेली image debug करू, आणि शेवटी एक video आणि एक YouTube video add करू. Server start करा, Apache start करा, आणि प्रत्येक command माझ्यासोबत type करा.
या class मध्ये काय शिकणार
- HTTP status codes: 200, 301, 302, 401, 403, 404, 500 आणि त्यांच्या families
index.htmlनसेल तेव्हा Apache काय दाखवतो- Browser मध्ये DevTools ने status codes बघणं
/var/www/htmlखालचे folders URL paths कसे बनतात- Stop आणि start नंतर Apache परत start करणं, आणि
sudo systemctl enable httpd - HTML basics: tags,
headआणिbody,h1तेh6,p,liआणिimg widthने image छोटी-मोठी करणं- Page वर image आणायचे तीन मार्ग: दुसऱ्या site ची URL,
sudo wget, आणिscp - View Page Source आणि DevTools ने तुटलेली image debug करणं
<video controls>ने स्वतःचा video दाखवणं- Share › Embed ने YouTube video embed करणं
1. Cloud engineer ला HTML आणि URLs का लागतात
का. Websites तुम्ही design करणार नाही; ते developers करतात. पण तुम्ही चालवत असलेल्या server वर एखादं page किंवा image उघडत नसेल, तर ticket तुमच्याकडे येतं. Users सांगतात "site बिघडलीय", "line 12 मध्ये typo आहे" असं कोणी सांगत नाही. कारण शोधायला तुम्हाला URL, status code आणि server ने पाठवलेलं HTML वाचता आलं पाहिजे.
Classroom line
So working on URLs is our job.
Class मधलं वाक्य
म्हणजे URLs वर काम करणं हे आपलंच काम आहे.
Classroom line – हिंदी
"Iska matlab hai URL pe kaam karna apna kaam hai."
काय. Web page वरच्या प्रत्येक गोष्टीची स्वतःची URL असते:
- Page स्वतः, उदाहरणार्थ
http://PUBLIC_IP/photo.html. - त्यावरची प्रत्येक image, उदाहरणार्थ
http://PUBLIC_IP/beach.jpg. - प्रत्येक video, icon, CSS file आणि JavaScript file.
Browser प्रत्येक गोष्ट वेगळी मागतो, आणि प्रत्येकीला server कडून वेगळं उत्तर मिळतं.
समजा आपण YouTube आहोत. त्याच्या pages वर दोन प्रकारच्या files असतात:
- Application files: YouTube चा logo, Home, Shorts आणि Subscriptions चे icons, CSS आणि JavaScript. या YouTube ची team site सोबतच देते, आणि त्या सगळ्यांसाठी सारख्याच असतात.
- User-generated content: users दर मिनिटाला upload करतात ते videos आणि thumbnails.
दोन्ही URLs वरून serve होतात, आणि दोन्ही तुटू शकतात.
2. HTTP status codes: server ने काय उत्तर दिलं
का. Web server च्या प्रत्येक उत्तराची सुरुवात तीन आकडी number ने होते, त्याला status code म्हणतात. Request चाललं की नाही, आणि नसेल तर problem कोणाच्या बाजूला आहे, हे एका नजरेत कळतं. Interview मध्ये पण हा आवडता प्रश्न आहे.
काय. पहिला आकडा family सांगतो:
- 2xx: success.
200 OKम्हणजे page सापडलं आणि पाठवलं. - 3xx: redirect. Page दुसरीकडे आहे आणि browser ला तिकडे पाठवलं जातं, phone वरच्या call forwarding सारखं.
301 Moved Permanentlyम्हणजे कायमचं हललं;302 Foundम्हणजे तात्पुरतं हललं. - 4xx: request मध्ये problem.
401 Unauthorized: आधी login करावं लागेल.403 Forbidden: server ला request कळली, पण तो ते तुम्हाला देणार नाही.404 Not Found: असं page च नाही.
- 5xx: server वर problem.
500 Internal Server Errorहा server-side चा general error;503 Service Unavailableम्हणजे server आत्ता request handle करू शकत नाही.
Classroom line
Just as we forward calls, a page can be forwarded too.
Class मधलं वाक्य
जसं आपण call forwarding करतो, तसंच इथे page forwarding पण करता येतं.
Classroom line – हिंदी
"Jaise hum log call forwarding karte hain, waise hi yahan pe bhi page forwarding kar sakte hain."
Figure 1. पहिला आकडा family सांगतो: 2xx success, 3xx redirect, 4xx request मध्ये problem (401 आधी login, 403 परवानगी नाही, 404 असं page नाही), 5xx server वर problem.
Example 1: तुमच्या server वरच्या तीन URLs. समजा /var/www/html मध्ये फक्त index.html आहे:
http://PUBLIC_IP/ला200 OKमिळतो आणिindex.htmlदिसतं.http://PUBLIC_IP/index.htmlला तेच page, हेही200 OK.http://PUBLIC_IP/contact.htmlला404 Not Found, कारण अशी file च नाही.
Example 2: index.html च नसेल तर. index.html delete किंवा rename करा आणि http://PUBLIC_IP/ परत उघडा. Amazon Linux वर Apache आता स्वतःचं test page ("It works!") दाखवतो, आणि त्या उत्तराचा status code असतो 403 Forbidden. Apache folder मधल्या files ची list दाखवत नाही; त्याऐवजी test page दाखवतो, म्हणजे "web server चालू आहे, पण अजून home page नाही".
Classroom line
If your server has no index.html, the answer is 403 Forbidden.
Class मधलं वाक्य
तुमच्या server वर index.html नसेल, तर त्या वेळी 403 Forbidden येतो.
Classroom line – हिंदी
"Agar aapke server mein index.html nahi hai, toh us waqt ek error aata hai 403 Forbidden."
हा code तुम्ही server वर curl ने बघू शकता:
[ec2-user@ip-172-31-xx-xx ~]$ curl -s -o /dev/null -w "%{http_code}\n" http://localhost/
403
-o /dev/null page फेकून देतो आणि -w "%{http_code}\n" फक्त status code print करतो. index.html परत ठेवा, मग तीच command 200 print करते.
3. Browser मध्ये status codes बघणं: DevTools
का. एक page म्हणजे खूप files. एखादी image नसली तरी page उघडतं, म्हणून प्रत्येक file चं उत्तर बघायचा मार्ग पाहिजे.
कसं.
- Page Chrome, Edge किंवा Firefox मध्ये उघडा.
- Page वर कुठेही right-click करून Inspect निवडा (किंवा F12 दाबा).
- Network tab वर click करा.
- Page reload करा (F5).
- Page load करत असलेली प्रत्येक file एका line मध्ये दिसते. Status column मध्ये तिचा code दिसतो:
200,404वगैरे.
Example 3: तुम्हाला काय दिसेल.
- तुमच्या स्वतःच्या छोट्या page वर: HTML file ची एक line आणि प्रत्येक image ची एक, सगळ्या
200. - मोठ्या site वर, समजा Instagram: डझनभर lines येतात आणि येतच राहतात, कारण page background मध्ये files आणि data load करतच असतं.
- दुसऱ्यांदा reload केल्यावर
304 Not Modifiedदिसू शकतो: browser कडे आधीच fresh copy होती, म्हणून server ने file परत पाठवली नाही.
4. /var/www/html खालचे folders URL paths बनतात
का. खऱ्या site वर खूप pages आणि images असतात. सगळं एकाच folder मध्ये ठेवलं तर गोंधळ होतो, म्हणून folders बनवतो. Server वरचा folder browser मध्ये address म्हणून कसा येतो ते माहीत पाहिजे.
काय. /var/www/html हा तुमच्या website चा root आहे. URL मध्ये IP नंतर जे काही येतं, तो त्या folder च्या आतला path असतो:
/var/www/html/index.htmlम्हणजेhttp://PUBLIC_IP/./var/www/html/about.htmlम्हणजेhttp://PUBLIC_IP/about.html./var/www/html/myphotos/gallery.htmlम्हणजेhttp://PUBLIC_IP/myphotos/gallery.html./var/www/html/myphotos/images/beach.jpgम्हणजेhttp://PUBLIC_IP/myphotos/images/beach.jpg.
Figure 2. Animation: /var/www/html खालची प्रत्येक file आणि बाजूला तिची URL. Folders ची नावं IP आणि file च्या नावाच्या मध्ये, त्याच क्रमाने, / ने वेगळी येतात.
Example 4: folder चं नाव राहिलं तर. gallery.html ही myphotos च्या आत आहे, म्हणून http://PUBLIC_IP/gallery.html ला 404 Not Found येतो. Apache /var/www/html/gallery.html शोधतो, आणि अशी file नाही. URL मध्ये folder चं नाव पाहिजेच.
कसं. दोन pages असलेला services folder बनवूया:
Step 1. Web root मध्ये जा:
cd /var/www/html
हा folder root चा आहे, म्हणून प्रत्येक बदलाला sudo लागतो:
sudo mkdir services
sudo nano services/service1.html
Step 2. <h1>Service 1</h1> type करा, मग Ctrl+X, Y, Enter ने save करा.
Step 3. services/service2.html पण तशीच बनवा, <h1>Service 2</h1> टाकून.
Step 4. http://PUBLIC_IP/services/service1.html आणि http://PUBLIC_IP/services/service2.html उघडा.
Classroom line
Make a folder inside html, make a couple of files in it, then open them in the browser.
Class मधलं वाक्य
"HTML chya aat madhe ekhaad folder tayar kara, tya folder chya aat madhe ek don files tayar kara. Mag te files browser la bagha."
html च्या आत एखादा folder तयार करा, त्या folder च्या आत एक-दोन files तयार करा. मग त्या files browser मध्ये बघा.
Classroom line
Make a folder inside html, make a couple of files in it, then open them in the browser.
/var/www/html च्या बाहेरचं page कधीच serve होत नाही. Home folder (/home/ec2-user) मध्ये बनवलेल्या file ला URL कशीही type केली तरी 404 च येतो.
Classroom line
Your page shows only when it is in the html directory, otherwise it won't.
Class मधलं वाक्य
"Jevha tumcha page he HTML directory madhe asnar aahe tevha ch disnar aahe, otherwise nahi disnar."
तुमचं page html directory मध्ये असेल तेव्हाच दिसेल, नाहीतर नाही दिसणार.
Classroom line
Your page shows only when it is in the html directory, otherwise it won't.
5. Stop आणि start नंतर: Apache आणि public IP
का. पैसे वाचवायला practice संपल्यावर तुम्ही instance stop करता. दुसऱ्या दिवशी start केल्यावर site उघडत नाही. दोन गोष्टी बदललेल्या असतात.
काय.
- Apache बंद असतो. तुम्ही सांगितलं नसेल तर server start झाल्यावर Apache start होत नाही.
- Public IP नवीन असतो. Elastic IP नसलेल्या instance ला प्रत्येक start ला नवीन public IPv4 address मिळतो.
Classroom line
When the server was stopped, Apache stopped too, so we have to start it again.
Class मधलं वाक्य
Server बंद केल्यावर Apache पण बंद झालाय. म्हणून तो परत start करावा लागेल.
Classroom line – हिंदी
"Server bandh karne ke baad Apache bandh ho gaya hai. Toh usko hume fir se start karna padega."
कसं.
Step 1. EC2 console मध्ये instance start करा आणि त्याचा नवीन Public IPv4 address copy करा.
Step 2. नवीन IP वापरून SSH ने connect करा.
Step 3. Apache start करा:
[ec2-user@ip-172-31-xx-xx ~]$ sudo service httpd start
Redirecting to /bin/systemctl start httpd.service
दुसरी line normal आहे. Amazon Linux वर जुनी service command काम systemctl कडे देते (services सांभाळणारं tool), आणि तसं सांगते.
Step 4. Linux ला सांगा की प्रत्येक boot ला Apache start कर. हे एका server वर एकदाच चालवायचं:
[ec2-user@ip-172-31-xx-xx ~]$ sudo systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
Step 5. http://NEW_PUBLIC_IP/ उघडा.
Classroom line
So Apache starts on its own while the server boots.
Class मधलं वाक्य
"Mhanje start hotana ch Apache aapla chalu houn jael."
म्हणजे server start होतानाच आपला Apache चालू होऊन जाईल.
Classroom line
So Apache starts on its own while the server boots.
Figure 3. start ने Apache आत्ता चालू होतो; enable ने प्रत्येक boot ला. दोन्हीकडे, stop आणि start नंतर नवीन public IP copy करा.

Whiteboard: reboot नंतरच्या दोन commands: sudo service httpd start, आणि प्रत्येक boot साठी एकदाच sudo systemctl enable httpd.
Ravindra Bagale's Tip
Instance start किंवा stop करताना EC2 console विचित्र errors दाखवत असेल, तर तुमच्या computer चं घड्याळ check करा. AWS कडे जाणाऱ्या requests वर वेळेचा stamp असतो, आणि घड्याळ खूप पुढे-मागे असेल तर त्या fail होतात. Windows वर Settings › Time & language › Date & time उघडा आणि Sync now वर click करा.
6. HTML basics: tags, head आणि body
का. Pages developers देतात, पण तुम्हाला एखादं page उघडून वाचता आलं पाहिजे, आणि एखादी line, उदाहरणार्थ image चा address, न बिघडवता बदलता आली पाहिजे.
काय. HTML angle brackets मधल्या tags ने लिहितात:
- Opening tag:
<h1>. - आतला content.
- Slash असलेला closing tag:
</h1>.
बहुतेक tags असे जोडीने येतात. काही tags ना content नसतो आणि closing tag पण नसतो. <img> त्यातलाच एक: <img src="beach.jpg"> लिहिलं की झालं.
<html> च्या आत page चे दोन भाग असतात:
<head>: page बद्दलची माहिती. Browser tab वर दिसणारं title, tab वरचा छोटा icon, आणि CSS आणि JavaScript files च्या links. हे page च्या आत दिसत नाही.<body>: जे दिसतं ते: headings, text, images, videos.
समजा आपण YouTube आहोत. Tab वरचं "YouTube" आणि लाल icon head मधून येतात. Page वर दिसणारे videos, search bar आणि menu body मध्ये असतात.
सगळ्यात जास्त वापरायचे tags:
<h1>ते<h6>: headings.h1सगळ्यात मोठं,h6सगळ्यात लहान.<p>: text चा एक paragraph.<li>: list मधला एक item,<ul>(bullets ची list) किंवा<ol>(numbers ची list) च्या आत.<img>: image.
आणि HTML सोबत ऐकू येणारे दोन शब्द:
- CSS म्हणजे page छान दिसावं म्हणून लिहिलेला code: रंग, fonts, spacing, layout.
- JavaScript म्हणजे page काहीतरी करावं म्हणून लिहिलेला code: उघडणारे menus, react करणारी buttons.
Classroom line
What does CSS stylesheet mean? It's code written to make your page look attractive and stylish.
Class मधलं वाक्य
CSS stylesheet म्हणजे काय? तुमचं page glamorous, stylish दिसावं म्हणून लिहिलेला code.
Classroom line – हिंदी
"CSS stylesheet ka matlab kya hai? Jo bhi aapka page hai us page ko glamorous, stylish dikhne ke liye kuch code kiya jata hai."
Example 5: एक पूर्ण छोटं page.
<html>
<head>
<title>Dubai</title>
</head>
<body>
<h1>Welcome to Dubai</h1>
<h2>Come and see the desert</h2>
<p>Three days, two nights.</p>
<ul>
<li>Desert safari</li>
<li>City tour</li>
</ul>
</body>
</html>
- Browser tab वर Dubai दिसतं.
- Page वर एक मोठं heading, एक लहान heading, text ची एक line आणि दोन bullets ची list दिसते.
Figure 4. Head page बद्दल सांगतं (tab title, icon, CSS आणि JavaScript links); body म्हणजे जे दिसतं ते. बहुतेक tags उघडतात आणि बंद होतात; img ला closing tag नसतो.
7. Page वर तुमची पहिली image
का. जवळजवळ प्रत्येक page वर images असतात, आणि तुटलेली image हे सगळ्यात common tickets पैकी एक आहे.
काय. <img> tag image दाखवतो. त्याचा src attribute (source) सांगतो image कुठे आहे: पूर्ण URL, किंवा तुमच्याच server वरच्या file चं नाव.
कसं.
Step 1. Apache start करा आणि web root मध्ये जा:
sudo service httpd start
cd /var/www/html
Step 2. नवीन page बनवा:
sudo nano photo.html
Step 3. एक line type करा, image च्या address सोबत (तो कुठून मिळवायचा ते पुढच्या section मध्ये बघू):
<img src="https://IMAGE_ADDRESS">
Step 4. Ctrl+X, Y, Enter ने save करा.
Step 5. http://PUBLIC_IP/photo.html उघडा.
तेवढी एक line पुरेशी आहे. राहिलेले <html>, <head> आणि <body> browser स्वतः add करतो. खऱ्या page साठी मात्र Example 5 सारखी पूर्ण रचना लिहा.
Size बदलणं. Camera मधला photo बहुतेक वेळा screen पेक्षा रुंद असतो. width टाका:
<img src="https://IMAGE_ADDRESS" width="600">
width="600"म्हणजे 600 pixels रुंद. फक्त आकडा लिहा.- फक्त width दिली की browser height त्याच प्रमाणात बदलतो, म्हणून image चा आकार बिघडत नाही.
- Height साठी
height="400"असंच चालतं. दोन्ही दिले तर image ताणलेली दिसू शकते.
Example 6: एकच image, दोन sizes.
widthशिवाय मोठा photo पूर्ण screen भरतो आणि बघायला scroll करावं लागतं.width="600"ने तो 600 pixels रुंद होतो आणि laptop screen वर मावतो.
8. Page वर image आणायचे तीन मार्ग
का. src ने अशा image file कडे point केलं पाहिजे जी browser download करू शकेल. ती file कुठे आहे यावर खूप फरक पडतो.
Figure 5. Animation: 1. hotlinking मध्ये visitor चा browser image दुसऱ्या site वरून घेतो; 2. sudo wget ती तुमच्या server वर download करतो; 3. scp ने तुमची स्वतःची file laptop वरून upload होते. 2 आणि 3 मध्ये image तुमच्याच server वरून येते.
मार्ग 1: दुसऱ्या website ची image URL वापरा (hotlinking)
Image चा खरा address कसा मिळवायचा.
- Image असलेलं web page उघडा.
- Image वर right-click करा.
- Copy image address (Chrome, Edge) किंवा Copy Image Link (Firefox) निवडा.
- Check करा: address बहुतेक
.jpg,.jpeg,.pngकिंवा.webpने संपतो. नवीन tab मध्ये उघडा: फक्त image दिसली पाहिजे.
Search engine च्या image results मधली छोटी चित्रं बहुतेक वेळा चालत नाहीत. ती thumbnails असतात, जी बहुतेक results page च्याच आत साठवलेली असतात (त्यांचा address data: ने सुरू होतो), खऱ्या file ची link नसते. Image असलेली website उघडा आणि तिथून address copy करा.
Classroom line
Images straight from Google's results won't work... go to the website and copy the image link from there.
Class मधलं वाक्य
"Google varchi images nahi chalat... website varti ja, mag tithun image link copy kara."
Google वरच्या images नाही चालत... website वर जा, मग तिथून image link copy करा.
Classroom line
Images straight from Google's results won't work... go to the website and copy the image link from there.
Hotlinking चे problems. Practice साठी हे quick आहे, पण:
- तुमच्या page चा प्रत्येक visitor image त्यांच्या server वरून download करतो, म्हणजे तुम्ही त्यांची bandwidth परवानगीशिवाय वापरता.
- Image वर copyright असू शकतो.
- त्यांनी image delete, rename किंवा हलवली, किंवा त्यांची site बंद पडली, तर तुमच्या page वर तुटलेली image दिसते.
- बऱ्याच sites हे block करतात: कुठलं page मागतंय ते check करतात आणि दुसऱ्या sites च्या pages ना image पाठवत नाहीत. मग तुटलेल्या image चा icon दिसतो.
Classroom line
They don't let others use their own images... that is, they block them.
Class मधलं वाक्य
"Aapli swatahachi image dusryanna wapru det nahit ti... mhanje te block kartat."
आपली स्वतःची image ते दुसऱ्यांना वापरू देत नाहीत... म्हणजे ते block करतात.
Classroom line
They don't let others use their own images... that is, they block them.
चांगला मार्ग म्हणजे वापरायची परवानगी असलेली image तुमच्या स्वतःच्या server वर ठेवणं.
मार्ग 2: sudo wget ने server वर download करा
काय. wget web address (HTTP किंवा HTTPS) वरून file download करतो आणि current folder मध्ये save करतो. कुठलीही file: image, video, PDF, zip. Server ती थेट download करतो; ती तुमच्या laptop मधून जात नाही.
sudo का. /var/www/html root चा आहे. sudo शिवाय wget file download करतो, पण save करू शकत नाही:
[ec2-user@ip-172-31-xx-xx html]$ wget https://example.com/images/beach.jpg
...
beach.jpg: Permission denied
Cannot write to ‘beach.jpg’ (Permission denied).
कसं.
Step 1. मार्ग 1 सारखा image चा address copy करा.
Step 2. Web root मध्ये जा आणि आपण कुठे आहोत ते check करा:
[ec2-user@ip-172-31-xx-xx ~]$ cd /var/www/html
[ec2-user@ip-172-31-xx-xx html]$ pwd
/var/www/html
Step 3. sudo wget आणि address देऊन download करा. समजा address https://example.com/images/sunset-over-the-beach-1200x800.jpg आहे:
[ec2-user@ip-172-31-xx-xx html]$ sudo wget https://example.com/images/sunset-over-the-beach-1200x800.jpg
--...-- https://example.com/images/sunset-over-the-beach-1200x800.jpg
Resolving example.com (example.com)... ...
Connecting to example.com (example.com)|...|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: ... [image/jpeg]
Saving to: ‘sunset-over-the-beach-1200x800.jpg’
...
... ‘sunset-over-the-beach-1200x800.jpg’ saved [...]
200 OK हा section 2 मधला status code; [image/jpeg] सांगतो की तुम्हाला खरंच image मिळाली.
Step 4. Check करा, मग sudo mv ने छोटं नाव द्या:
[ec2-user@ip-172-31-xx-xx html]$ ls
index.html photo.html sunset-over-the-beach-1200x800.jpg
[ec2-user@ip-172-31-xx-xx html]$ sudo mv sunset-over-the-beach-1200x800.jpg beach.jpg
[ec2-user@ip-172-31-xx-xx html]$ ls
beach.jpg index.html photo.html
Step 5. आधी फक्त image उघडा: http://PUBLIC_IP/beach.jpg. दिसली तर file बरोबर serve होतेय.
Step 6. Page वर वापरा:
sudo nano photo.html
Line बदलून अशी करा:
<img src="beach.jpg" width="600">
Step 7. Save करा आणि http://PUBLIC_IP/photo.html refresh करा.
src="beach.jpg" मध्ये http:// नाही आणि folder पण नाही: याचा अर्थ "या page च्याच folder मधली beach.jpg file". Sub-folder मधल्या image साठी path लिहा, उदाहरणार्थ src="images/beach.jpg".
Example 7: नावानंतर ?काहीतरी असलेला address. बरेच image addresses beach.jpg?width=500 असे संपतात. wget हे सगळं file च्या नावात ठेवतो:
Saving to: ‘beach.jpg?width=500’
wget चालवायच्या आधी ? पासूनचं सगळं काढून टाका, किंवा नंतर sudo mv ने rename करा. ? नंतरचा भाग खरंच लागत असेल, तर पूर्ण address single quotes मध्ये टाका, कारण & सारख्या characters चा shell साठी वेगळा अर्थ असतो:
sudo wget 'https://example.com/beach.jpg?width=500&q=80'
मार्ग 3: laptop वरून scp ने upload करा
काय. scp दोन machines मध्ये SSH वरून files copy करतो, login साठी वापरता त्याच key ने. तो दोन्ही दिशांना चालतो, आणि परवानगी असलेल्या कुठल्याही folder सोबत: laptop ते server, server ते laptop, किंवा server ते server.
Classroom line
Downloading from the server means we can take any file from any directory.
Class मधलं वाक्य
Server वरून download म्हणजे, आपण कुठल्याही directory मधून कुठलीही file download करू शकतो.
Classroom line – हिंदी
"Server se download matlab, hum kisi bhi directory se koi bhi file download kar sakte hain."
wget आणि scp ची कामं वेगळी आहेत:
wgetserver वर चालतो आणि web address वरून file ओढतो. File एखाद्या website वर असली पाहिजे.scpतुमच्या laptop वर चालतो आणि तुमची स्वतःची file SSH वरून copy करतो. File laptop वर कुठेही असू शकते.
कसं. समजा तुमचा photo beach.jpg आणि तुमची key mykey.pem laptop वर एकाच folder मध्ये आहेत.
Step 1. Laptop वर (PowerShell किंवा Terminal), त्या folder मध्ये, file ec2-user च्या home folder मध्ये copy करा:
scp -i mykey.pem beach.jpg ec2-user@PUBLIC_IP:/home/ec2-user/
Step 2. Server वर ती web root मध्ये हलवा. ec2-user थेट /var/www/html मध्ये लिहू शकत नाही, म्हणून या step ला sudo लागतो:
sudo mv /home/ec2-user/beach.jpg /var/www/html/
Step 3. http://PUBLIC_IP/beach.jpg उघडा, मग मार्ग 2 सारखं <img src="beach.jpg"> वापरा.
9. तुटलेली image debug करणं
का. Picture ऐवजी page वर तुटलेल्या image चा छोटा icon दिसतो. Page स्वतः load झालं (200), म्हणजे problem HTML च्या एका line मध्ये किंवा एका file मध्ये आहे.
Figure 6. तीन checks: View Page Source मध्ये img src वाचा, image ची URL थेट उघडा, आणि DevTools Network मध्ये प्रत्येक file चा status बघा.
कसं.
- Page वर right-click करून View Page Source (Ctrl+U) निवडा. Server कडून browser ला नक्की कोणतं HTML मिळालं ते दिसतं.
<img>ची line शोधा आणिsrcवाचा. - Image चा address एकटा उघडा, उदाहरणार्थ
http://PUBLIC_IP/beach.jpg.- Image दिसली: file ठीक आहे; page मधल्या
srcमध्ये typo आहे. 404 Not Found: URL सांगते तिथे file नाही.ls /var/www/htmlने check करा.
- Image दिसली: file ठीक आहे; page मधल्या
- DevTools › Network उघडा आणि reload करा. Image च्या line मध्ये तिचा status code दिसतो.
Example 8: नेहमीची कारणं.
- Page किंवा image home folder मध्ये बनवली,
/var/www/htmlमध्ये नाही. - Capital letter: file
beach.jpgआहे पण page मध्येBeach.jpg. Linux मध्ये file च्या नावात capital-small फरक पडतो, म्हणून ती वेगळी file ठरते आणि404येतो. - चुकीचं extension: file
beach.jpegआहे पण page मध्येbeach.jpg. - तुम्ही copy केलेला address image बद्दलच्या web page चा आहे, image file चा नाही.
- Hotlinking, आणि दुसरी site ते block करते.
10. Page वर तुमचा स्वतःचा video
का. बऱ्याच sites ना images पुरत नाहीत: product demo, course intro, एखादं गाणं.
काय. <video> tag video file दाखवतो, आणि त्याच्या आतला <source> tag सांगतो file कुठे आहे आणि कुठल्या type ची आहे:
<video controls>
<source src="myvideo.mp4" type="video/mp4">
</video>
controlsने player ची buttons येतात: play, pause, volume आणि seek bar. ते नसेल तर browser फक्त स्थिर चित्र दाखवतो, buttons नाहीत.src="myvideo.mp4"म्हणजे file, इथे page च्याच folder मध्ये.type="video/mp4"browser ला सांगतो file कुठल्या प्रकारची आहे.</video>tag बंद करतो.
Classroom line
What does controls mean? We stop a video by pausing it, then resume it.
Class मधलं वाक्य
Controls म्हणजे काय... आपण video pause करून थांबवतो, मग परत resume करतो.
Classroom line – हिंदी
"Controls ka matlab kya hai... video hum log rokte hain pause karke, fir resume karte hain."
कसं.
Step 1. Video file /var/www/html मध्ये ठेवा, laptop वरून scp ने किंवा web address वरून sudo wget ने, अगदी image सारखं.
Step 2. छोटं नाव द्या: sudo mv <long-name>.mp4 myvideo.mp4.
Step 3. Page बनवा:
sudo nano video.html
वरच्या तीन lines type करा, मग save करा.
Step 4. http://PUBLIC_IP/video.html उघडा आणि play दाबा.
Video file चा address शोधणं. एखादं page थेट .mp4 file चालवत असेल, तर video वर right-click करून Copy video link निवडू शकता, किंवा DevTools › Network उघडा, Media filter वर click करा, reload करून play करा: list मध्ये .mp4 file दिसते.
तुमचे स्वतःचे videos वापरा, किंवा ज्यांची परवानगी आहे ते. Sample video फक्त practice साठी download केला, तर तो test server वरच ठेवा आणि नंतर delete करा. Video files मोठ्या असतात, आणि तुमचा server प्रत्येक visitor ला त्यांचा प्रत्येक byte पाठवतो.
11. YouTube video embed करणं
का. YouTube तुम्हाला download करून host करायला video file देत नाही. त्यापेक्षा चांगलं देतं: embed code. Video YouTube वरच राहतो, YouTube चा player तो चालवतो, आणि तुमचं page तो एका window मध्ये दाखवतं.
कसं.
- YouTube वर video उघडा.
- Video च्या खाली Share वर click करा.
- Embed वर click करा.
- Copy वर click करा. आता तुमच्याकडे
<iframe>code आहे. - Server वर:
sudo nano video.html, तुमच्या<video>lines खाली code paste करा, आणि save करा. http://PUBLIC_IP/video.htmlrefresh करा.
Classroom line
Once the ad is over, you see the Share button down here.
Class मधलं वाक्य
Ad गेल्यावर खाली तुम्हाला इथे Share button दिसतंय.
Classroom line – हिंदी
"Ad jaane ke baad, niche aapko yahan pe Share button dikh raha hai."

Whiteboard: YouTube वर Share › Embed केल्यावर iframe code मिळतो: width 560, height 315 आणि video चा embed address. तो तुमच्या .html file मध्ये copy करा.
Code असा दिसतो (VIDEO_ID म्हणजे त्या video चा स्वतःचा id):
<iframe width="560" height="315" src="https://www.youtube.com/embed/VIDEO_ID" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
iframeम्हणजे तुमच्या page वरची एक window जी दुसरं page दाखवते, इथे YouTube चा player.width="560" height="315"ही त्या window ची size. ती बदलता येते.srcहा या video चा YouTube embed address.allowfullscreenने बघणाऱ्याला full screen करता येतं.
Example 9: एका page वर दोन videos. दोन embed codes एकाखाली एक paste करा, page वर दोन players दिसतात.

Whiteboard: EC2 server वरचं video.html, त्यावर दोन embedded YouTube players, प्रत्येकावर title आणि Watch on YouTube.
Figure 7. तुमची स्वतःची video file video controls आणि source सोबत, तुमचा server पाठवतो; YouTube video Share › Embed मधल्या iframe ने, YouTube चालवतो.
कुठल्याही YouTube video साठी नेहमी YouTube चाच embed code वापरा. तो download करून file तुमच्या server वर ठेवू नका.
12. काम झालं की: instance stop करा
का. Page कोणीही उघडत नसलं तरी चालू instance free-tier hours वापरत राहतो. Stop केल्याने तुमच्या files पुढच्या वेळेसाठी disk वर राहतात.
- EC2 console मध्ये तुमचा instance select करा.
- Instance state › Stop instance वर click करा.
- Confirm करायला Stop वर click करा.
पुढच्या वेळी section 5 लक्षात ठेवा: Apache start करा (किंवा enable केलेला ठेवा) आणि नवीन public IP वापरा.
13. पूर्ण flow एका ठिकाणी
sudo service httpd start(आणि एकदाच:sudo systemctl enable httpd).cd /var/www/html.- इथले folders URL paths बनतात:
myphotos/gallery.htmlम्हणजेhttp://PUBLIC_IP/myphotos/gallery.html. - Web वरची image:
sudo wget URL, मगsudo mv long-name.jpg beach.jpg. - Laptop वरची image:
scp -i mykey.pem beach.jpg ec2-user@PUBLIC_IP:/home/ec2-user/, मगsudo mvने/var/www/htmlमध्ये. - Page:
sudo nano photo.htmlमध्ये<img src="beach.jpg" width="600">. - Video:
<video controls>, आत<source src="myvideo.mp4" type="video/mp4">, आणि</video>. - YouTube: Share › Embed › Copy,
<iframe>paste करा. - Check: प्रत्येक URL उघडा; 200 म्हणजे ठीक, 404 म्हणजे नाव किंवा folder चुकला; काही तुटलं तर View Page Source आणि DevTools › Network.
14. Hands-on lab: pages, folders, image आणि status codes
हा lab का. बहुतेक website tickets "page सापडत नाही" किंवा "image तुटलीय" अशी असतात. हा lab folder, page आणि image असलेली छोटी site बनवतो, आणि मग image मुद्दाम तोडतो, म्हणजे server च्या आतून 404 कसा दिसतो ते बघता येतं.
- Server start करा आणि Apache तपासा
- Command:
sudo service httpd status - काय दिसेल: enable केलं असेल तर
active (running); नाहीतरsudo service httpd startचालवा. - Check करा: EC2 console मधून नवीन public IP copy करा.
- का: Stop आणि start नंतर public IP बदलतो, आणि enable केलं असेल तरच Apache चालू असतो.
- Command:
- Home page चा status code वाचा
- Command:
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/ - काय दिसेल:
200 - Check करा: 2xx म्हणजे success.
- का:
-o /dev/nullpage टाकून देतो आणि-wफक्त status code print करतो, server चं एका number मधलं उत्तर.
- Command:
- नसलेलं page मागा
- Command:
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/nothere.html - काय दिसेल:
404 - Check करा: 4xx म्हणजे request मध्ये प्रॉब्लेम.
- का: 404 सांगतो की Apache ठीक आहे आणि file चं नाव किंवा path चुकलाय. Server नाही, URL बघायची.
- Command:
- Photos साठी folder बनवा
- Command:
sudo mkdir -p /var/www/html/myphotos/images - काय दिसेल: काहीच नाही.
- Check करा:
ls /var/www/html/myphotos→images - का:
/var/www/htmlखालचा प्रत्येक folder URL चा भाग होतो: हाhttp://PUBLIC_IP/myphotos/. Folders वाढणारी site नीट ठेवतात.
- Command:
- Server वर image download करा
- Command:
cd /var/www/html/myphotos/images && sudo wget -O beach.jpg <image URL> - काय दिसेल: wget output च्या शेवटी
saved. - Check करा:
ls -lमध्येbeach.jpg0 पेक्षा जास्त size सह दिसते. - का: तुम्हाला वापरायची परवानगी असलेल्या image ची URL वापरा.
-O beach.jpgती छोट्या नावाने save करतो, म्हणून HTML सोपं राहतं.
- Command:
- ती दाखवणारं page लिहा
- Command:
sudo nano /var/www/html/myphotos/gallery.html - काय दिसेल:
<h1>Beach</h1>आणि<img src="images/beach.jpg" width="400">type करा, मग save करून बाहेर पडा. - Check करा:
http://PUBLIC_IP/myphotos/gallery.htmlमध्ये heading आणि picture दिसतात. - का:
src="images/beach.jpg"page च्या folder पासून relative आहे, म्हणून browser/myphotos/images/beach.jpgमागतो.
- Command:
- Image चा स्वतःचा status code तपासा
- Command:
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/myphotos/images/beach.jpg - काय दिसेल:
200 - Check करा: Browser मध्ये DevTools (F12) → Network मध्ये
beach.jpgstatus 200 सह दिसते. - का: Page म्हणजे अनेक files, प्रत्येकीचा स्वतःचा status. Page 200 असूनही एखादी image fail होऊ शकते.
- Command:
- Image मुद्दाम तोडा
- Command:
sudo mv beach.jpg Beach.jpg - काय दिसेल: काहीच नाही.
- Check करा: Gallery reload करा: तुटलेल्या image चा icon. Step 7 चा
curlआता404print करतो. - का: Linux नावं case-sensitive:
Beach.jpgम्हणजेbeach.jpgनाही. Windows वरून upload केल्यावर तुटलेल्या images चं हे सगळ्यात नेहमीचं कारण.
- Command:
- Fix करा आणि stop करा
- Command:
sudo mv Beach.jpg beach.jpg - काय दिसेल: काहीच नाही.
- Check करा: Picture परत आलं आणि
curl200print करतो. मग instance stop करा. - का: Page बरोबर असेल तर page नाही, नाव दुरुस्त करा. Stop केल्याने free-tier hours वाचतात; files disk वर राहतात.
- Command:
15. घरी करून बघा
Try at home
Task 1: status codes
http://PUBLIC_IP/आणिhttp://PUBLIC_IP/nothing.htmlउघडा. DevTools › Network मध्ये प्रत्येकाचा status लिहून ठेवा.sudo mvनेindex.htmlचं नावindex.bakकरा.http://PUBLIC_IP/उघडा आणिcurl -s -o /dev/null -w "%{http_code}\n" http://localhost/चालवा. मग नाव परत करा.
Task 2: folders
/var/www/html/myphotos/gallery.htmlबनवा आणि browser मध्ये उघडा.http://PUBLIC_IP/gallery.htmlउघडा आणि404का आला ते सांगा.
Task 3: एक image, तीन मार्ग
- दुसऱ्या site वरच्या address ने image दाखवा.
sudo wgetने एक download करा,sudo mvने rename करा आणि<img src="...">ने दाखवा.- तुमचा स्वतःचा एक photo
scpने upload करा आणिwidth="600"ने दाखवा.
Task 4: मुद्दाम तोडा
srcबदलूनBeach.jpg(capital B) करा. View Page Source आणि DevTools ने problem शोधा.
Task 5: video
- तुमच्या स्वतःच्या एका
.mp4file आणिcontrolsसोबतvideo.htmlबनवा. - Share › Embed ने एक YouTube video add करा.
काम झालं की instance stop करा.
Recap
थोडक्यात
- प्रत्येक उत्तराला status code असतो: 2xx success, 3xx redirect, 4xx request मध्ये problem (401 आधी login, 403 forbidden, 404 not found), 5xx server वर problem.
index.htmlनसेल तर Amazon Linux वरचा Apache status 403 सोबत त्याचं test page दाखवतो.- DevTools › Network मध्ये page load करत असलेल्या प्रत्येक file चा status दिसतो.
/var/www/htmlहा site चा root; त्यातले folders URL paths बनतात, आणि folder चं नाव राहिलं तर 404.- Stop आणि start नंतर:
sudo service httpd startआणि नवीन public IP.sudo systemctl enable httpdएकदा चालवला की प्रत्येक boot ला Apache start होतो. - HTML:
headpage बद्दल सांगतं,bodyम्हणजे जे दिसतं ते;h1तेh6,p,li,img.<img>ला closing tag नसतो. width="600"pixels मध्ये रुंदी ठरवतो; height त्याप्रमाणे बदलते.- Hotlinking दुसऱ्या site ची bandwidth परवानगीशिवाय वापरतं आणि तुटू शकतं; वापरायची परवानगी असलेल्या images
sudo wgetकिंवाscpने तुमच्या server वर ठेवा. - लांब नावाच्या downloads ना
sudo mvने rename करा, मगsrc="beach.jpg". - तुटलेली image: View Page Source, image ची URL उघडा, DevTools › Network.
- स्वतःचा video:
<video controls><source src="myvideo.mp4" type="video/mp4"></video>. YouTube: Share › Embed › Copy करून<iframe>.
Ravindra Bagale, trainer: linkedin.com/in/ravindra-bagale. File names (photo.html, beach.jpg, myvideo.mp4, mykey.pem), myphotos आणि services folders, Dubai चं page आणि example.com चे addresses शिकण्यासाठीची उदाहरणं आहेत; PUBLIC_IP म्हणजे तुमच्या instance चा public IPv4 address आणि VIDEO_ID म्हणजे YouTube video चा id. wget output चे काही भाग "..." ने छोटे केलेत; prompt मधलं hostname उदाहरणादाखल आहे.
सराव Tasks
São Paulo Coffee हा साओ पाउलो मधला कॉफी व्यापार व्यवसाय आहे. Ana Souza त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे BRL मध्ये मोजले जातात आणि AWS resources sa-east-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 दाबा.
सोपं 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 दाबा.
सोपं GitHub वरून code घ्या
का: git clone पूर्ण repository server वर copy करतो.
काय करायचं: https://github.com/spcoffee/website.git सध्याच्या folder मध्ये clone करा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. 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-01ab606c311b4c3b2 वर 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 चा क्रम महत्त्वाचा नाही.
मध्यम Security group बनवा
का: Security group म्हणजे instance भोवतीचा firewall.
काय करायचं: vpc-0fc0ce311fdeadbee मध्ये spcoffee-web-sg नावाचा security group "Web servers" description सह बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Ubuntu वर nginx site enable करा
का: Ubuntu वर sites-available पासून sites-enabled ला symbolic link ने site enable होते.
काय करायचं: /etc/nginx/sites-enabled/ मध्ये /etc/nginx/sites-available/spcoffee ची 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.