Ravindra BagaleCourses & study guides English

EC2 वर Files copy करायला scp कसं वापरायचं (Upload आणि Download)

मागच्या chapter मध्ये आपण दुसऱ्या website वरून आणि wget ने page वर images आणल्या. पण developer तुम्हाला web address देत नाही; तो laptop वरच्या files देतो. आता आपण scp शिकणार आहोत: laptop वरून server वर आणि server वरून laptop वर files safely copy करणारी command. एक image आणि एक PDF upload करू, एक file download करू, पूर्ण website एका zip file मध्ये upload करू, live site चा backup घेऊ, आणि शेवटी त्याच server वर Apache च्या जागी Nginx लावू. तुमचा server आणि laptop चं terminal तयार ठेवा.

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

  • wget का पुरत नाही, आणि scp काय करतो
  • त्याला secure copy का म्हणतात
  • scp command: -i key, source आणि destination, आणि colon
  • scp laptop च्या terminal मधून चालवायचा, SSH च्या आत नाही
  • Image upload करून page वर वापरणं
  • Case-sensitive नावं आणि ../ path
  • PDFs, नावातले spaces आणि %20
  • Server वरून laptop वर download
  • Files आणि folders च्या नावांचे rules
  • पूर्ण website एका zip file मध्ये upload करणं, आणि scp -r
  • /var/www/html मध्ये unzip आणि html च्या आतला html fix करणं
  • Live website चा backup घेणं
  • Apache, Nginx आणि Tomcat
  • त्याच server वर Apache वरून Nginx वर switch

1. scp का: wget फक्त websites वरून download करतो

का. wget server वर चालतो आणि web address वरून file download करतो. रोज लागणारी दोन कामं तो करू शकत नाही:

  1. Upload: laptop वरची file server वर copy करणं. तुमचा laptop काही website नाही, म्हणून server त्याच्याकडून wget करू शकत नाही.
  2. Download: server वरची file laptop वर copy करणं, उदाहरणार्थ backup.

काय. scp (secure copy) दोन्ही करतो. तो SSH वरून दोन machines मध्ये files copy करतो, login साठी वापरता त्याच key pair ने. कुठलीही file चालते: image, video, PDF, zip, text file.

Classroom line

To download from the server or upload to the server: the scp command.

"Secure" का. तुमची file laptop आणि AWS मध्ये public internet वरून जाते. scp ती रस्त्यात encrypt करतो, म्हणून मध्ये कोणी ती पकडली तरी त्याला फक्त गोंधळलेला data दिसतो, तुमचा photo किंवा code नाही.

Classroom line

They may see the data, but only as encrypted text; they won't understand what's inside.

wget फक्त websites वरून download करतो; scpतुमच्या files SSH वरून copy करतो एखादी website https://…/beach.jpg wget URL EC2 server /home/ec2-user wget server वर चालतो आणि web address वरून file ओढतो. तो laptopपर्यंत पोचत नाही. तुमचा laptop beach.jpg site.zip upload ↓ · download ↑ EC2 server /home/ec2-user scp laptop वर चालतो आणि files दोन्ही बाजूंना SSH वरून copyकरतो, त्याच key ने. Data रस्त्यात encrypted असतो. scp = secure copy. मधे कोणी पाहिलं तरी त्याला फक्तगोंधळलेला data दिसतो, तुमची file नाही.

Figure 1. wget server वर चालतो आणि website वरून file ओढतो. scp तुमच्या laptop वर चालतो आणि SSH वरून दोन्ही बाजूंनी, encrypted, files copy करतो.

2. scp command

का. Login साठी तुम्ही आधीच ssh type करता. scp तीच key, user आणि IP वापरतो, म्हणून नवीन काही setup नाही: फक्त काय copy करायचं आणि कुठे, एवढं जोडायचं.

काय. SSH command तुम्हाला माहीत आहे:

ssh -i mykey.pem ec2-user@PUBLIC_IP

scp जवळजवळ तसाच दिसतो, फक्त source आणि destination add होतात:

scp -i mykey.pem SOURCE DESTINATION
  1. scp: program.
  2. -i mykey.pem: तुमची key, SSH साठी वापरता तीच.
  3. SOURCE: जी file copy करायचीय ती.
  4. DESTINATION: copy कुठे जाणार ते.

एक बाजू server असेल, तर ती user@server:path अशी लिहायची. Colon मुळेच scp ला कळतं की "हे दुसऱ्या machine वर आहे":

  1. ec2-user@PUBLIC_IP:. file home folder मध्ये, /home/ec2-user मध्ये, ठेवतो. Dot म्हणजे "home folder".
  2. ec2-user@PUBLIC_IP: colon नंतर काहीच नसेल तरी home folder च.
  3. ec2-user@PUBLIC_IP:ravi file home folder मधल्या ravi folder मध्ये ठेवतो.
scp command वाचूया scp -i mykey.pem beach.jpg ec2-user@PUBLIC_IP:. scp program   secure copy -i mykey.pem -i आणि तुमची key   ssh चीच key beach.jpg source   copy करायची file ec2-user@PUBLIC_IP:. destination   user@server : path Colon ठरवतो: त्याच्यानंतर server वरचा path ec2-user@PUBLIC_IP:. . = home folder, /home/ec2-user ec2-user@PUBLIC_IP: नुसता colon = तोही home folder ec2-user@PUBLIC_IP:ravi home folder मधला ravi folder Colon च नसेल? scp laptop वरच त्या नावाची copy बनवतो. Serverवर काहीच जात नाही.

Figure 2. scp command चे चार भाग, आणि colon आणि त्यानंतरच्या path चा अर्थ.

Example 1: colon महत्त्वाचा. Colon विसरलात तर scp कुठेच connect होत नाही. तो फक्त तुमच्या laptop वरच ec2-user@PUBLIC_IP. सारख्या नावाची copy बनवतो, आणि server ला काहीच जात नाही. Server ची बाजू नेहमी : आणि path ने संपवायची.

3. Image upload करून page वर वापरणं

का. हे रोजचं काम आहे: laptop वरचा photo website वर दिसला पाहिजे.

scp कुठे चालवायचा. तुमच्या laptop वर, दुसऱ्या terminal window किंवा tab मध्ये (Windows वर PowerShell, Mac किंवा Linux वर Terminal). SSH session च्या आत नाही: server ला तुमच्या laptop च्या files दिसत नाहीत, म्हणून copy laptop वरूनच सुरू व्हायला पाहिजे.

Classroom line

Where do you run this command? Outside the server.

कसं. समजा तुमची key mykey.pem Downloads मध्ये आहे आणि photo beach.jpg Desktop वर आहे.

Step 1. PowerShell (किंवा Terminal) उघडा. ते तुमच्या user folder मध्ये सुरू होतं, म्हणून Downloads आणि Desktop तिथेच असतात.

Step 2. Command type करा. Paths Tab ने भरा: दोन-तीन letters type करा आणि Tab दाबा.

scp -i .\Downloads\mykey.pem .\Desktop\beach.jpg ec2-user@PUBLIC_IP:.

Windows वर path मधले folders backslash \ ने वेगळे होतात. Mac किंवा Linux वर / ने: scp -i Downloads/mykey.pem Desktop/beach.jpg ec2-user@PUBLIC_IP:.

Step 3. या laptop वरून एखाद्या server ला पहिल्यांदा connect करता तेव्हा तो विचारतो की server वर trust करायचा का. yes type करा:

The authenticity of host 'PUBLIC_IP (PUBLIC_IP)' can't be established.
ED25519 key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Step 4. 100% येईपर्यंत थांबा:

beach.jpg                         100%   ...KB   ...KB/s   00:00

Classroom line

After doing this, what should happen? It should show 100%.

Step 5. SSH session मध्ये file आली का ते check करा आणि ती web root मध्ये हलवा:

[ec2-user@ip-172-31-xx-xx ~]$ ls
beach.jpg
[ec2-user@ip-172-31-xx-xx ~]$ sudo mv beach.jpg /var/www/html/

File home folder मध्ये येते कारण ec2-user ला तिथेच लिहायची परवानगी आहे. /var/www/html root चा आहे, म्हणून move ला sudo लागतो.

Step 6. Page वर वापरा:

cd /var/www/html
sudo nano beach.html

Type करा:

<img src="beach.jpg" width="600">

Step 7. http://PUBLIC_IP/beach.html उघडा.

Classroom line

Don't type the whole path by hand. Type one or two characters and press Tab.

Instance restart केल्यावर site उघडत नसेल तर.

  1. Stop आणि start नंतर Apache बंद असतो. sudo service httpd start चालवा (किंवा एकदाच sudo systemctl enable httpd, म्हणजे प्रत्येक boot ला तो start होईल).
  2. IP च्या आधी http:// स्वतः type करा. Browser ने https:// (port 443) try केलं आणि Security Group मध्ये फक्त port 80 allow असेल, तर page थांबून राहतं आणि मग time out होतं.

Classroom line

When we stop the server, the web server stops too.

4. Case-sensitive नावं आणि ../ path

का. नीट upload झालेली file सुद्धा तुटलेली image म्हणून दिसू शकते. नेहमीची दोन कारणं: नावातलं capital अक्षर आणि चुकीचा relative path, आणि दोन्ही पटकन तपासता येतात.

Example 2: एका capital letter ने image तुटते. Upload केलेल्या file चं नाव Beach.jpg आहे, पण page मध्ये <img src="beach.jpg"> आहे. Page वर तुटलेली image दिसते. Linux मध्ये file names case-sensitive असतात: Beach.jpg आणि beach.jpg ही दोन वेगळी नावं आहेत. ls जसं दाखवतो तसंच नाव लिहा, किंवा file rename करा.

Example 3: एक folder वर असलेली image. स्वतःचं page असलेला sub-folder बनवा:

cd /var/www/html
sudo mkdir gallery
cd gallery
sudo nano photos.html

Image /var/www/html मध्ये आहे, gallery च्या एक level वर. म्हणून page ../ ने एक level वर जातं:

<img src="../beach.jpg">

http://PUBLIC_IP/gallery/photos.html उघडा. फक्त src="beach.jpg" लिहिलं तर browser /gallery/beach.jpg शोधेल आणि तुटलेली image दाखवेल.

एक folder वरची image: ../ /var/www/html/ ├── beach.jpg ├── index.html └── gallery/ └── photos.html gallery/photos.html च्या आत <img src="../beach.jpg"> .. = एक level वरचा folder (html). नुसतं beach.jpg gallery च्या आत शोधेल आणि image तुटलेली दिसेल. नावात capital-small पण महत्त्वाचं: Linux वरBeach.jpg आणि beach.jpg दोन वेगळ्या files.

Figure 3. photos.html gallery च्या आत आहे आणि image एक level वर, म्हणून src ../beach.jpg. Linux मध्ये नावं case-sensitive असतात.

5. PDF, आणि नावातले spaces

का. खऱ्या sites images शिवाय बरंच काही देतात: brochures, forms, price lists. आणि laptops वरच्या files च्या नावात अनेकदा spaces असतात, ज्या quotes शिवाय shell तोडतो.

कसं. कुठलाही file type असाच चालतो. एक PDF upload करा (तुमच्याकडे नसेल तर internet वरून एखादं sample PDF download करा):

Step 1. Laptop वर:

scp -i .\Downloads\mykey.pem .\Downloads\notes.pdf ec2-user@PUBLIC_IP:.

Step 2. Server वर:

sudo mv notes.pdf /var/www/html/

Step 3. http://PUBLIC_IP/notes.pdf उघडा. Browser PDF उघडतो.

Example 4: नावात space. my notes.pdf नावाच्या file ने दोन problems येतात:

  1. Command line वर नाव quotes मध्ये टाकावं लागतं: ".\Downloads\my notes.pdf", नाहीतर scp ला दोन नावं दिसतात, my आणि notes.pdf.
  2. URL मध्ये space %20 असा लिहितात: http://PUBLIC_IP/my%20notes.pdf.

Classroom line

If your PDF's name has a space, you get problems when writing the URL.

6. Server वरून laptop वर download

का. कधी server वरची file हवी असते: developer ला पाठवायचा log, किंवा कोणी server वर edit केलेलं page. Download म्हणजे तीच command, दोन बाजू उलट्या.

काय. दोन्ही बाजू उलट्या करा: आता source server आहे (त्याच्या colon सकट), आणि destination laptop वरचा folder. Command अजूनही laptop वरच चालवायची.

Upload आणि download: फक्त sourceआणि destination ची अदलाबदल Laptop चा terminal PowerShell किंवा Terminal, SSH session च्या आत नाही Downloads\ beach.jpg EC2 server /home/ec2-user/ beach.jpg notes.txt upload download Upload: source = laptop वरची file,destination = colon सोबत server. scp -i mykey.pem beach.jpgec2-user@PUBLIC_IP:. Download: source = colon सोबत server,destination = laptop वरचा folder. scp -i mykey.pemec2-user@PUBLIC_IP:notes.txtDownloads\

Figure 4. Animation: upload आणि download दोन्ही laptop च्या terminal मध्ये चालतात; फक्त source आणि destination ची जागा बदलते.

कसं.

Step 1. Server वर एक छोटी file बनवा आणि बाहेर पडा:

nano notes.txt
exit

Step 2. Laptop वर:

scp -i .\Downloads\mykey.pem ec2-user@PUBLIC_IP:notes.txt .\Downloads\

Colon नंतर folder शिवाय notes.txt म्हणजे "home folder मधली". Laptop वर तुम्ही ज्या folder मध्ये आहात तिथेच copy करायची असेल तर destination . द्या.

Step 3. Downloads\notes.txt Notepad मध्ये उघडा.

Classroom line

scp is always run outside the server.

Laptop आणि server मधल्या copies साठी हे बरोबर आहे. scp server च्या आत चालवायचा तो एकच case: एका server वरून दुसऱ्या server वर copy.

7. त्रास वाचवणारे नावांचे rules

का. इथला प्रत्येक नियम नंतर debug कराव्या लागणाऱ्या एका खऱ्या error ला टाळतो: तुटलेली image, तुटलेली command, पूर्ण न होणारा Tab.

  1. फक्त small letters वापरा. Linux case-sensitive आहे, आणि Tab completion पण पहिले letters बरोबर case मध्ये type केले तरच चालतं.
  2. Spaces नकोत. त्यांना command line वर quotes लागतात आणि URLs मध्ये ते %20 होतात.
  3. शब्द underscore ने जोडा किंवा सरळ एकत्र लिहा: my_folder किंवा myfolder, beach_photo.jpg.

Classroom line

Don't use capital letters at all. Always use small letters.

8. पूर्ण website एका zip file मध्ये

का. Developer तुम्हाला खूप files असलेला website folder देतो: pages, images, CSS, JavaScript. Folder थेट scp -r (recursive) ने copy करता येतो:

scp -i .\Downloads\mykey.pem -r .\Desktop\html ec2-user@PUBLIC_IP:.

खूप files असतील तर zip बहुतेक वेळा जास्त चांगला:

  1. एकच file, म्हणजे एकच copy, आणि check करायला सोपी.
  2. Size कमी होते. Compression repeat होणारा data एकदाच ठेवतो: सलग दहा A "A, दहा वेळा" असे ठेवता येतात.
  3. Transfer लवकर होतो, आणि अर्ध्यात काही राहून जात नाही.
पूर्ण website एका zip file मध्ये 1. Laptop वर zip Windows: right-click the folder html › Send to ›Compressed (zipped) folder Many files ऐवजी एक file, आणि लहान: repeat होणारा data एकदाच साठवलाजातो. 2. एकच file scp (home folder मध्ये) scp -i mykey.pem html.zip ec2-user@PUBLIC_IP: नुसता colon = home folder. scp -r ने folder थेट copy होतो, पण एक zipसोपा. 3. Root मध्ये हलवा (sudo लागतो) sudo mv html.zip /var/www/html/ ec2-user /var/www/html मध्ये लिहू शकत नाही, म्हणून sudo. 4. sudo ने unzip (folder root चा आहे) cd /var/www/html ; sudo unzip html.zip sudo शिवाय: checkdir error: cannot create html, Permission denied. 5. html मधला html (files एक level वर) cd html ; sudo mv * .. ; cd .. ; ls Zip मध्ये html folder होता, म्हणून files html/html मध्ये आल्या. वरहलवा.

Figure 5. Animation: laptop वर zip, एकच file scp, sudo mv ने /var/www/html मध्ये, sudo unzip, मग जास्तीच्या html folder मधून files वर हलवणं.

कसं.

Step 1. Windows वर website folder वर, इथे त्याचं नाव html आहे, right-click करा आणि Send to › Compressed (zipped) folder निवडा. html.zip मिळतो. सगळ्या files आत आहेत ना ते एकदा उघडून बघा.

Step 2. Upload करा. नुसता colon म्हणजे home folder:

scp -i .\Downloads\mykey.pem .\Desktop\html.zip ec2-user@PUBLIC_IP:

Step 3. Server वर तो web root मध्ये हलवा:

sudo mv html.zip /var/www/html/

आता http://PUBLIC_IP/html.zip उघडलं तर browser तो फक्त download करतो. Browser zip file दाखवू शकत नाही, आणि जी file दाखवता येत नाही ती download होते.

Classroom line

The browser doesn't understand a zip file... a file it doesn't understand gets downloaded.

Step 4. Unzip करा. sudo शिवाय fail होतं, कारण folder root चा आहे:

[ec2-user@ip-172-31-xx-xx html]$ unzip html.zip
Archive:  html.zip
checkdir error:  cannot create html
                 Permission denied
...

sudo ने चालतं:

sudo unzip html.zip

Amazon Linux वर unzip आधीपासून install असतो.

Step 5. Windows ने folder पण zip मध्ये टाकला, म्हणून files आता /var/www/html/html/ मध्ये आहेत. त्या एक level वर हलवा:

cd html
sudo mv * ..
cd ..
ls

.. म्हणजे एक level वरचा folder. * म्हणजे इथल्या सगळ्या files, फक्त dot ने सुरू होणाऱ्या hidden files सोडून.

Classroom line

But html inside html doesn't look right, so let's move these files into html.

Step 6. http://PUBLIC_IP/ आणि zip मधलं एखादं page किंवा image त्याच्या नावाने उघडा.

9. Live website चा backup तुमच्या laptop वर

का. Live site बदलण्याआधी, जे चालतंय त्याची copy ठेवा. काही बिघडलं तर परत लावता येतं.

Live website चा backup तुमच्या laptop वर 1. एक level वर जा cd /var/www ज्या folder मध्ये उभे आहात तो zip नको 2. सगळं zip करा sudo zip -r backup.zip html 3. Home मध्ये हलवा sudo mv backup.zip ~/ 4. Download करा laptop वर: scp …:backup.zip 5. Check करा extract करून files उघडा -r सगळे subfolders आणि hidden files घेतो. -r शिवाय html/*subfolders च्या आतलं विसरतो. Home folder = scp साठी छोटा, सोपा path. कधी न उघडलेला backup अजूनbackup नाही.

Figure 6. /var/www मध्ये वर जा, html folder sudo zip -r करा, zip home folder मध्ये हलवा, scp ने download करा, आणि उघडून check करा.

कसं.

Step 1. जो folder zip करायचाय त्याच्या एक level वर जा. ज्या folder मध्ये उभे आहात तोच zip करू नका.

cd /var/www

Classroom line

Don't cut the branch you're sitting on.

Step 2. पूर्ण folder zip करा. /var/www root चा आहे, म्हणून sudo; -r सगळे subfolders आणि hidden files घेतो:

[ec2-user@ip-172-31-xx-xx www]$ sudo zip -r backup.zip html
  adding: html/ (stored 0%)
  adding: html/index.html (deflated ...%)
  ...

-r शिवाय html/* subfolders च्या आतलं सोडून देईल.

Step 3. Zip home folder मध्ये हलवा, म्हणजे scp चा path छोटा आणि सोपा राहतो:

sudo mv /var/www/backup.zip /home/ec2-user/

scp ला फक्त file वाचायची परवानगी लागते; छोट्या path मुळे command type करायला सोपी जाते.

Step 4. Laptop वर download करा:

scp -i .\Downloads\mykey.pem ec2-user@PUBLIC_IP:backup.zip .\Downloads\

Step 5. Laptop वर extract करा आणि काही files, एखादं page, image, video, उघडून बघा, म्हणजे backup खरंच चालतोय याची खात्री होईल.

10. Apache, Nginx आणि Tomcat

का. Job posts मध्ये आणि servers वर ही तिन्ही नावं दिसतात. कोण काय करतो हे माहीत असलं की project साठी कोणता install करायचा ते कळतं.

काय. तुम्हाला भेटणारी तीन नावं:

  1. Apache HTTP Server (httpd): आत्तापर्यंत वापरलेला web server.
  2. Nginx: दुसरा free web server. तो कमी memory मध्ये एकाच वेळी खूप visitors handle करतो, म्हणून खूप busy sites तो वापरतात, बऱ्याचदा दुसऱ्या servers च्या पुढे. तोही तेच HTML, images आणि videos serve करतो.
  3. Apache Tomcat: Java web applications चालवणारा server. Apache httpd आणि Nginx files serve करतात; ते Java code चालवत नाहीत. ते Tomcat च्या पुढे बसून requests त्याच्याकडे पाठवू शकतात.

Project कुठला web server वापरणार हे बहुतेक architect किंवा team lead ठरवतो. Cloud engineer म्हणून तुम्हाला दोन्ही set up करता आले पाहिजेत.

11. त्याच server वर Apache वरून Nginx वर switch

का. Apache आणि Nginx दोघंही port 80 वर ऐकतात, आणि एका port वर एका वेळी एकच program बसू शकतो. म्हणून आधी Apache बंद करायचा. Apache चालू असताना Nginx start केला तर Nginx start होत नाही:

Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.

काय. दोघांचे web folders वेगळे आहेत:

  1. Apache: /var/www/html
  2. Nginx: /usr/share/nginx/html
एक port 80, एका वेळी एकच web server Apache (httpd): बंद sudo service httpd stop Web root: /var/www/html तुमच्या files इथेच राहतात. Copy करा, हलवू नका, म्हणजे Apache ला पण परत गेलात तर मिळतील. Nginx: port 80 वर चालू sudo yum install nginx -y sudo service nginx start Web root: /usr/share/nginx/html सोबत index.html, 404.html, 50x.html, nginx-logo.png आणि poweredby.png. sudo cp -r /var/www/html/*/usr/share/nginx/html/ तुमची index.html Nginx च्या welcome page चीजागा घेते. त्याच files, त्याच URLs, आता Nginxserve करतो.

Figure 7. एकच port 80: Apache बंद करा, Nginx install आणि start करा, मग तुमची site /var/www/html मधून /usr/share/nginx/html मध्ये copy करा.

Handwritten board: sudo service httpd stop, sudo yum install nginx -y, sudo service nginx start, and sudo cp -r /var/www/html/* /usr/share/nginx/html circled; on the right 80 above /var/www/html and /usr/share/nginx/html.

Whiteboard: Nginx वर switch: httpd stop, nginx install आणि start, मग /var/www/html/* /usr/share/nginx/html मध्ये copy. Port 80 एकावेळी एकच वापरू शकतो.

कसं.

Step 1. Apache बंद करा:

sudo service httpd stop

Step 2. Nginx install करा:

sudo yum install nginx -y

Step 3. तो start करा आणि check करा:

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

Active: active (running) बघा. Service म्हणजे background मध्ये सतत चालणारा आणि requests ची वाट बघणारा program.

Step 4. Nginx चा web folder बघा:

[ec2-user@ip-172-31-xx-xx ~]$ cd /usr/share/nginx/html
[ec2-user@ip-172-31-xx-xx html]$ ls
404.html  50x.html  index.html  nginx-logo.png  poweredby.png

Step 5. http://PUBLIC_IP/ उघडा. तुम्हाला अजून जुनं Apache page दिसू शकतं: browser ने त्याच्या cache मधली save केलेली copy दाखवली. Refresh करा, आणि Welcome to nginx! दिसेल.

Browser page with the heading Welcome to nginx! and text saying nginx is successfully installed and working, with links to nginx.org and community.nginx.org.

Whiteboard: Nginx चं welcome page: Nginx install झालाय आणि /usr/share/nginx/html मधली स्वतःची index.html serve करतोय.

Classroom line

That's called cache; that page was cached.

Step 6. नसलेलं page उघडा, जसं http://PUBLIC_IP/ravi.html. आता Nginx स्वतःचं 404 page देतो, जे /usr/share/nginx/html/404.html मधून येतं.

Page titled nginx error! with a red bar The page you are looking for is not found, and a box saying this is the default 404 error page for nginx distributed with Amazon Linux, located at /usr/share/nginx/html/404.html.

Whiteboard: Amazon Linux वरचं Nginx चं 404 page: तुम्ही शोधत असलेलं page सापडलं नाही, /usr/share/nginx/html/404.html मधून serve झालेलं.

Step 7. तुमची site Apache च्या folder मधून Nginx च्या folder मध्ये copy करा. Move नाही, copy करा, म्हणजे परत Apache वर गेलात तर त्याच्याकडे files असतील:

cd /usr/share/nginx/html
sudo cp -r /var/www/html/* .

Step 8. ls चालवा, मग browser refresh करा. तुमच्या index.html ने Nginx च्या welcome page ची जागा घेतली, आणि प्रत्येक page आणि image आधीच्याच URL वर उघडते, आता Nginx serve करतोय.

Classroom line

We stopped Apache, installed Nginx, started Nginx...

/var/www/html/* hidden files (dot ने सुरू होणारी नावं) सोडतो. त्याही copy करायच्या असतील तर folder चा content dot ने copy करा:

sudo cp -r /var/www/html/. /usr/share/nginx/html/

Step 9. तुम्ही चालवलेल्या सगळ्या commands क्रमाने बघायला history चालवा. त्या notes म्हणून ठेवा.

12. पूर्ण flow एका ठिकाणी

  1. Upload: scp -i mykey.pem file ec2-user@PUBLIC_IP:., laptop वर चालवायचा.
  2. Download: scp -i mykey.pem ec2-user@PUBLIC_IP:file ., हाही laptop वर.
  3. Server वर: sudo mv file /var/www/html/.
  4. Pages: नावं ls दाखवतो तशीच; एक folder वर जायला ../; URL मधल्या space साठी %20 (त्यापेक्षा spaces नकोतच).
  5. Website: zip करा (किंवा folder scp -r करा), upload, sudo mv, sudo unzip, html/html असेल तर sudo mv * ...
  6. Backup: cd /var/www, sudo zip -r backup.zip html, home मध्ये हलवा, download करा, उघडून बघा.
  7. Nginx: sudo service httpd stop, sudo yum install nginx -y, sudo service nginx start, sudo cp -r /var/www/html/* /usr/share/nginx/html/.

13. Hands-on lab: scp ने upload, publish आणि backup

हा lab का. Server वर files टाकणं आणि त्यांच्या copies परत आणणं हे रोजचं काम. हा lab एक image upload करतो, publish करतो, एक page download करतो, आणि पूर्ण site चा zip backup घेतो. scp commands तुमच्या laptop च्या terminal मध्ये चालवा, SSH च्या आत नाही.

  1. Laptop वरून image upload करा
    • Command: scp -i mykey.pem beach.jpg ec2-user@PUBLIC_IP:.
    • काय दिसेल: 100% ने संपणारी progress ओळ.
    • Check करा: SSH window मध्ये ls ~ मध्ये beach.jpg दिसते.
    • का: आधी source, मग destination. Colon server ची बाजू दाखवतो; त्यानंतरचा . म्हणजे ec2-user चं home, sudo शिवाय लिहिता येणारी एकमेव जागा.
  2. Publish करा
    • Command: sudo mv ~/beach.jpg /var/www/html/
    • काय दिसेल: काहीच नाही.
    • Check करा: http://PUBLIC_IP/beach.jpg मध्ये picture दिसतं.
    • का: /var/www/html root चं आहे, म्हणून ec2-user म्हणून scp तिथे थेट लिहू शकत नाही. आधी home मध्ये upload, मग sudo ने move.
  3. नावात space असलेली file upload करा
    • Command: scp -i mykey.pem "price list.pdf" ec2-user@PUBLIC_IP:.
    • काय दिसेल: 100% ने संपणारी progress ओळ.
    • Check करा: ls ~ मध्ये 'price list.pdf' दिसते.
    • का: Quotes शिवाय shell ला दोन files दिसतात, price आणि list.pdf. त्याहून चांगलं: upload आधीच price-list.pdf असं rename करा.
  4. Laptop वर page download करा
    • Command: scp -i mykey.pem ec2-user@PUBLIC_IP:/var/www/html/index.html .
    • काय दिसेल: 100% ने संपणारी progress ओळ.
    • Check करा: index.html आता laptop च्या current folder मध्ये आहे.
    • का: बाजू उलट्या: colon असलेला server source; . म्हणजे तुम्ही आहात तो laptop folder. वाचायला sudo लागत नाही, कारण file सगळ्यांना वाचता येते.
  5. Server वर पूर्ण site zip करा
    • Command: cd /var/www && sudo zip -r ~/backup.zip html
    • काय दिसेल: प्रत्येक file साठी एक adding: ओळ.
    • Check करा: ls -l ~/backup.zip मध्ये 0 पेक्षा जास्त size.
    • का: शेकडो files ऐवजी copy करायला एकच zip. -r प्रत्येक subfolder मध्ये जातो; एक level वर गेल्याने html folder स्वतः zip मध्ये राहतो.
  6. Backup download करा
    • Command: scp -i mykey.pem ec2-user@PUBLIC_IP:backup.zip .
    • काय दिसेल: 100% ने संपणारी progress ओळ.
    • Check करा: Laptop वर zip उघडा: आत index.html आणि beach.jpg असलेला html/ दिसतो.
    • का: Backup server बाहेर असेल आणि एकदा उघडून बघितला असेल तरच तो खरा. Server हरवला तर याच copy मधून restore करायचं.
  7. साफ करा आणि stop करा
    • Command: rm -f ~/backup.zip ~/"price list.pdf"
    • काय दिसेल: काहीच नाही.
    • Check करा: ls ~ स्वच्छ. मग instance stop करा.
    • का: Server वरचे जुने zips हळूहळू 8 GB disk भरतात. Stop केल्याने free-tier hours वाचतात.

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

Try at home

Task 1: upload

  1. scp ने एक photo upload करा आणि तो photo.html वर दाखवा.
  2. नावात capital letter टाकून परत upload करा आणि page चं काय होतं ते बघा.
  3. /var/www/html/gallery/ मध्ये एक page ठेवा जे ../ ने photo दाखवेल.

Task 2: download

  1. Server वर notes.txt बनवा आणि ती Downloads मध्ये download करा.

Task 3: website zip मध्ये

  1. दोन pages आणि एक image असलेला folder zip करा, upload करा, /var/www/html मध्ये unzip करा आणि दोन्ही pages उघडा.
  2. तोच folder एकदा scp -r ने copy करून बघा.

Task 4: backup

  1. sudo zip -r ने /var/www/html चा backup घ्या, download करा आणि laptop वर उघडा.

Task 5: Nginx

  1. Nginx वर switch करा, welcome page आणि 404 page बघा, मग तुमची site copy करून check करा.

झालं की instance stop करा.

Recap

थोडक्यात

  1. wget फक्त websites वरून download करतो; scp laptop आणि server मध्ये SSH वरून, encrypted, files copy करतो.
  2. scp -i key SOURCE DESTINATION; server ची बाजू ec2-user@PUBLIC_IP:path. :. किंवा नुसता : = home folder, :ravi = त्यातला folder. Colon नसेल = फक्त local copy.
  3. scp laptop च्या terminal मध्ये चालवायचा, SSH च्या आत नाही. Server-to-server copy हा अपवाद.
  4. Files home folder मध्ये येतात; sudo mv ने त्या /var/www/html मध्ये हलवा.
  5. नावं case-sensitive; ../ एक folder वर नेतो; spaces %20 होतात. Small letters वापरा, spaces नकोत.
  6. Website एका zip मध्ये upload करा (किंवा folder scp -r करा), मग sudo unzip, आणि html/html झालं तर sudo mv * ...
  7. Backup: /var/www मधून sudo zip -r, home मध्ये हलवा, scp ने download, उघडून check.
  8. Nginx आणि Apache दोघंही port 80 वापरतात: दुसरा start करण्याआधी पहिला बंद करा. Nginx चा web root /usr/share/nginx/html. Tomcat Java web apps चालवतो.

Ravindra Bagale, trainer: linkedin.com/in/ravindra-bagale. File names (beach.jpg, notes.pdf, notes.txt, html.zip, backup.zip, mykey.pem) आणि ravi, gallery folders शिकण्यासाठीची उदाहरणं आहेत; PUBLIC_IP म्हणजे तुमच्या instance चा public IPv4 address. Progress numbers आणि fingerprints "..." ने छोटे केलेत; prompt मधलं hostname उदाहरणादाखल आहे.

सराव Tasks

या scenario बद्दल

Latur Coaching Classes हा लातूर मधला कोचिंग व्यवसाय आहे. Pooja Jadhav त्यांचं 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/laturcoaching/website.git सध्याच्या folder मध्ये clone करा.

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

सोपं SSH चा port

का: Security group rules ला योग्य port हवा.

काय करायचं: SSH साठी security group ने कोणता TCP port उघडावा?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. 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-023666135aa54c3b2 वर 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 चा क्रम महत्त्वाचा नाही.

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

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

काय करायचं: /etc/nginx/sites-enabled/ मध्ये /etc/nginx/sites-available/laturcoaching ची 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: scp ने files copy. wget फक्त URLs मधून download करतो. तुमच्या files laptop वर असतात. scp SSH वरून encrypted files copy करतो. Colon server बाजू दाखवतो. Laptop वर चालवा, SSH आत नाही: scp -i KEY SOURCE DEST. Upload:
उजळणी card: scp ने files copy · PNG download करा
उजळणी card: Server वरून download. Backups आणि logs laptop वर परत यायला हवेत. Source आणि destination उलटे: आधी server, शेवटी local path. . म्हणजे current laptop folder. Download:
उजळणी card: Server वरून download · PNG download करा
उजळणी card: Zip म्हणून site upload. 500 छोट्या files एकेक copy करणं slow. Folder zip करा, एक file upload, server वर unzip. /var/www/html मध्ये unzip; html/html आलं तर files वर हलवा. Server वर:
उजळणी card: Zip म्हणून site upload · PNG download करा
उजळणी card: Live website चा backup. बदलांआधी परत येण्याचा मार्ग हवा. Backup म्हणजे web folder चा dated zip, server बाहेर copy केलेला. Server वर zip, मग scp ने laptop वर. Zip:
उजळणी card: Live website चा backup · PNG download करा
तुलना: wget vs scp. wget: URL मधून server वर file download करतो. scp: SSH वरून laptop आणि server मध्ये files copy करतो.
तुलना: wget vs scp · PNG download करा
मुलाखत card: scp command मध्ये colon म्हणजे काय?. Remote बाजू दाखवतो: user@host:path. त्याशिवाय scp host च्या नावाची local file बनवतो. बरोबर:
मुलाखत card: scp command मध्ये colon म्हणजे काय? · PNG download करा
मुलाखत card: scp SSH आत नाही, laptop वर का चालवायचा?. Laptop ची file laptop वर; server ला ती दिसत नाही. SSH आत paths server कडे point करतात. scp साठी laptop वर दुसरं terminal उघडा.
मुलाखत card: scp SSH आत नाही, laptop वर का चालवायचा? · PNG download करा
मुलाखत card: नावात spaces असलेली PDF 404 देते. का?. URLs मध्ये spaces %20 होतात, आणि चुका होतात. Spaces नसलेली नावं: lowercase आणि hyphens. "My Notes.pdf" › my-notes.pdf.
मुलाखत card: नावात spaces असलेली PDF 404 देते. का? · PNG download करा
मुलाखत card: scp ने पूर्ण folder कसा upload करता?. scp -r वापरा, किंवा आधी zip करून एक file पाठवा. शेकडो छोट्या files पेक्षा एक zip fast. Folder:
मुलाखत card: scp ने पूर्ण folder कसा upload करता? · PNG download करा

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