Ubuntu EC2 वर Apache Install करा: Port आणि Web Folder बदला
आत्तापर्यंत आपण बनवलेला प्रत्येक server Amazon Linux चा होता. आज आपण Ubuntu server launch करणार आणि तिथे तेच काम करणार: apt-get ने Apache install करायचा, आपलं page live करायचं, आणि Nginx वर switch करायचं. काय तसंच राहतं आणि काय बदलतं ते दिसेल. दुसऱ्या भागात आपण परत Amazon Linux वर जाऊ आणि Apache ची settings file उघडू, म्हणजे website आपल्या folder मधून, आपल्या port वर, आपल्या पहिल्या page सोबत चालवता येईल. आणि Apache start व्हायला नकार देतो तेव्हा त्याचा report वाचून तो fix कसा करायचा तेही शिकू.
या class मध्ये काय शिकणार
- Ubuntu का, आणि EC2 वर तो launch कसा करायचा
- Key pairs: प्रत्येक app ला एक
- Login user
ubuntuआणि package managerapt-get - Install आधी
sudo apt-get update, आणि failed fetch चा अर्थ apache2install, check आणि start करणं- Ubuntu चं default page बदलणं
Permission denied (publickey)ची चार कारणं- Disks: 8 GB root disk आणि extra disks
- Ubuntu वर Apache वरून Nginx, आणि Amazon Linux पेक्षा folders मधला फरक
- Apache ची settings file
httpd.conf:DocumentRoot,Listen,DirectoryIndex - Security Group मध्ये नवीन port उघडणं
- httpd start होत नसेल तेव्हा काय करायचं
1. Ubuntu का
का. Amazon Linux AWS ने बनवलाय, आणि तो बहुतेक AWS वरच भेटतो. Companies Azure, Google Cloud, Oracle Cloud, IBM Cloud आणि DigitalOcean वर पण servers चालवतात. Ubuntu जवळजवळ प्रत्येक cloud वर मिळतो, म्हणून कामावर तुमच्या हातात येणाऱ्या सगळ्यात common server systems पैकी तो एक आहे.
काय. Amazon Linux, Ubuntu, Debian, CentOS, Fedora, SUSE आणि Kali हे सगळे Linux distributions आहेत: प्रत्येक Linux kernel वर बनलाय आणि स्वतःची tools add करतो. Ubuntu Debian वर आधारित आहे. तुम्ही शिकलेल्या बहुतेक commands (cd, ls, nano, sudo, mv) तशाच चालतात. दोन गोष्टी बदलतात:
- Login user
ubuntuआहे,ec2-userनाही. - Software
apt-get(किंवाapt) ने install करतात,yumकिंवाdnfने नाही.
2. Ubuntu server launch करा
का. योग्य image निवडल्याने पुढच्या सगळ्यासाठी user name, package manager आणि service names ठरतात, म्हणून ती विचारपूर्वक निवडा.
कसं.
Step 1. EC2 console मध्ये Launch instance click करा. नाव द्या.
Step 2. Application and OS Images मध्ये Ubuntu निवडा (Free tier eligible Ubuntu Server image).
Step 3. Instance type: आधीसारखाच free-tier वाला.
Step 4. Key pair: तुमची आधीची key pair निवडा, किंवा नवीन बनवा (खाली बघा).
Step 5. Network settings: port 22 (SSH) आणि port 80 (HTTP) allow करणारा तुमचा आधीचा Security Group select करा.
Step 6. Storage: root disk default size वरच ठेवा. Launch instance click करा.
Key pairs: प्रत्येक app ला एक. एकाच application चे servers एक key pair share करू शकतात. वेगळ्या applications ना वेगळ्या key pairs द्यायच्या.
Example 1. समजा आपण Instagram चे 10 आणि Facebook चे 10 servers चालवतो. Instagram चे दहाही servers instagram-key.pem वापरतात; Facebook चे दहाही facebook-key.pem. एखादी key लीक झाली तर फक्त त्या app च्या servers ना धोका, तुमच्या सगळ्या servers ना नाही.
Classroom line
But suppose you have ten Instagram servers and ten Facebook servers... use separate key pairs for the two.
Class मधलं वाक्य
पण समजा तुमच्याकडे Instagram चे दहा server आहेत, Facebook चे दहा server आहेत... तर दोघांसाठी वेगळ्या key pairs वापरा.
Classroom line – हिंदी
"Lekin suppose abhi aapke paas Instagram ke das server hai, Facebook ke das server hai... toh dono ke liye alag alag key pair use karo."
Figure 1. समजा Instagram चे 10 आणि Facebook चे 10 servers: प्रत्येक app ला एक key pair, म्हणजे एक key लीक झाली तरी सगळं उघडत नाही.
Disks. एका EC2 instance ला अनेक EBS disks असू शकतात:
- Root disk वर operating system असते. Ubuntu आणि Amazon Linux images साठी ती default 8 GB असते. Launch करताना ती मोठी करता येते, आणि Windows सारख्या काही दुसऱ्या images मोठ्याच सुरू होतात.
- Extra disks attach करता येतात, तुम्हाला हव्या त्या size च्या, उदाहरणार्थ practice साठी 1 GB.
Classroom line
We can attach several hard disks to one server.
Class मधलं वाक्य
"Eka server la aapan multiple hard disk attach karu shakto."
एका server ला आपण multiple hard disks attach करू शकतो.
Classroom line
We can attach several hard disks to one server.
3. Connect: user आहे ubuntu
का. Key तीच, पण user वेगळा. Ubuntu images मध्ये ec2-user नसतो, म्हणून तो वापरला तर Permission denied (publickey) येतं.
कसं. Laptop च्या terminal मधून, तुमची key आणि नवीन server चा public IP वापरून:
ssh -i mykey.pem ubuntu@PUBLIC_IP
पहिल्यांदा fingerprint च्या प्रश्नाला yes द्या. Prompt आता ubuntu@ip-172-31-xx-xx:~$ असा दिसतो.
Example 2: एकच key, दोन servers.
- Amazon Linux:
ssh -i mykey.pem ec2-user@PUBLIC_IP - Ubuntu:
ssh -i mykey.pem ubuntu@PUBLIC_IP
फक्त @ च्या आधीचं user name बदलतं.
4. apt-get: आधी list update, मग install
का. Package manager ला माहीत असतं software कुठून download करायचं. तो server वर packages ची आणि त्यांच्या download links ची एक list ठेवतो. अगदी नवीन server वर ती list जुनी असू शकते, आणि जुन्या links अशा files कडे point करतात ज्या आता नाहीत.
काय.
sudo apt-get updateनवीन list download करतो. तो काही install करत नाही आणि काही प्रश्न विचारत नाही, म्हणून-yलागत नाही.sudo apt-get install apache2 -yApache install करतो. Ubuntu वर Apache चं package आणि serviceapache2नावाने आहेत,httpdनाही.

Whiteboard: Ubuntu च्या commands: sudo apt-get install apache2 -y (yum ऐवजी apt-get), apache2 -v, sudo service apache2 start आणि status, cd /var/www/html.
Example 3: नवीन server वर लगेच install. तुम्ही आधी sudo apt-get install apache2 -y चालवता. खूप lines पळतात, म्हणून install होतंय असं वाटतं, पण शेवटी हे दिसतं:
Err:1 http://...archive.ubuntu.com/ubuntu ... apache2-bin amd64 ...
404 Not Found [IP: ... 80]
E: Failed to fetch http://.../apache2-bin_..._amd64.deb 404 Not Found [IP: ... 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
मग apache2 -v म्हणतो command not found. काहीच install झालं नाही. 404 Not Found आणि Failed to fetch म्हणजे list जुनी आहे: spelling बरोबर आहे, links नाहीत.
Classroom line
With all that output it looks installed... but look closely: it didn't install, the install failed.
Class मधलं वाक्य
"Asa vat'ta aaplyala bharpoor kaay yetay, install jhalya sarka... pan neet laksha dila na tar install nahi jhalela ahe, fail gela ahe install."
असं वाटतं आपल्याला भरपूर काय काय येतंय, install झाल्यासारखं... पण नीट लक्ष दिलं ना तर install नाही झालेलं आहे, fail गेलंय install.
Classroom line
With all that output it looks installed... but look closely: it didn't install, the install failed.
Classroom line
If everything is right and the software still won't install, the link is probably old.
Class मधलं वाक्य
"Sagla kaay barabar astana sudha software install hot nahiye mhanje te link old asel."
सगळं काही बरोबर असताना सुद्धा software install होत नाहीये, म्हणजे ती link old असेल.
Classroom line
If everything is right and the software still won't install, the link is probably old.
Figure 2. Animation: नवीन server वर install 404 Not Found ने fail होतं; sudo apt-get update list नवीन करतो; परत install केल्यावर चालतं.
कसं.
Step 1. Package list नवीन करा:
sudo apt-get update
Step 2. Apache install करा:
sudo apt-get install apache2 -y
Step 3. तो आहे का ते check करा:
apache2 -v
तो दोन lines दाखवतो, Server version: Apache/... (Ubuntu) आणि Server built: .... command not found आलं, तर install झालंच नाही.
सवय लावा: प्रत्येक नवीन Ubuntu server वर आधी sudo apt-get update, मग install.
5. Apache start करा आणि आपलं page live करा
का. Browser मध्ये तुमचं page दिसेपर्यंत install काहीच सिद्ध करत नाही. Ubuntu चं default page तुमच्या page ने बदलणं ही पूर्ण साखळी चालते याची शेवटची खात्री.
कसं.
Step 1. Apache start करा आणि check करा:
sudo service apache2 start
sudo service apache2 status
Active: active (running) बघा. Ubuntu वर Apache बहुतेक install नंतर स्वतःच start होतो; परत start चालवलं तरी काही बिघडत नाही.
Step 2. Status screen तुमची वाट बघत थांबतो. Prompt परत मिळवायला q दाबा.
Classroom line
When you check the status, some of you will get stuck here... then press q.
Class मधलं वाक्य
"Status baghtana kahi janana ithe adkun rahil... ashyaveles q press karat jaava."
Status बघताना काही जणांना इथे अडकून राहील... अशा वेळेस q press करत जावा.
Classroom line
When you check the status, some of you will get stuck here... then press q.
Step 3. http://PUBLIC_IP/ उघडा. Ubuntu logo असलेलं Apache2 Default Page दिसतं. ते /var/www/html/index.html मधून येतं:
cd /var/www/html
ls

Whiteboard: Ubuntu चं Apache2 Default Page: Apache install झालाय आणि /var/www/html/index.html serve करतोय.
Step 4. त्याच्या जागी आपलं page ठेवा:
sudo rm index.html
sudo nano index.html
Type करा:
<h1>ubuntu</h1>
Ctrl+X, Y, Enter ने save करा, मग browser refresh करा. ubuntu दिसेल. खरी site publish करायची असेल तर मागच्या chapter सारखं scp ने तुमची HTML pages /var/www/html मध्ये upload करा.
Classroom line
Suppose you don't want this page; so remove it.
Class मधलं वाक्य
"Samjha he page tumhala nako vatla, so tyla remove kara."
समजा हे page तुम्हाला नको वाटलं, so त्याला remove करा.
Classroom line
Suppose you don't want this page; so remove it.
Step 5. सगळं क्रमाने बघायला history चालवा:
sudo apt-get update
sudo apt-get install apache2 -y
apache2 -v
sudo service apache2 start
sudo service apache2 status
cd /var/www/html
sudo rm index.html
sudo nano index.html
6. Permission denied (publickey): चार कारणं
का. हा सगळ्यात common SSH error आहे, आणि Amazon Linux आणि Ubuntu दोन्ही servers असले की तो खूप वेळा येतो.
ubuntu@PUBLIC_IP: Permission denied (publickey).
काय. त्याची चार नेहमीची कारणं:
- चुकीची key file: दुसऱ्या key pair ची
.pem, किंवा तिचा चुकीचा path. - चुकीचा IP: दुसऱ्या server चा IP, किंवा stop आणि start नंतरचा जुना IP.
- चुकीचं user name: Ubuntu वर
ubuntu, Amazon Linux वरec2-user. - वाटतं त्यापेक्षा वेगळी OS: launch केला Amazon Linux आणि login करताय
ubuntuने, किंवा उलटं.
Classroom line
When you get publickey permission denied... there are four kinds of permission denied.
Class मधलं वाक्य
"Public key permission denied ala na... permission denied che char prakar astat."
Public key permission denied आला ना... permission denied चे चार प्रकार असतात.
Classroom line
When you get publickey permission denied... there are four kinds of permission denied.
कुठली OS आहे ते कसं बघायचं.
Step 1. EC2 › Instances › तुमचा instance select करा.
Step 2. Details tab मध्ये AMI name वाचा. Ubuntu images ubuntu/images/... ने सुरू होतात; Amazon Linux 2023 images al2023-ami-... ने.
Figure 3. Permission denied (publickey): चुकीची key file, चुकीचा IP, चुकीचं user name, किंवा वेगळी OS. Instance details मधलं AMI name OS सांगतं.
7. Ubuntu वर Apache वरून Nginx
का. Amazon Linux सारखंच, Apache आणि Nginx दोघांनाही port 80 पाहिजे, आणि एका port वर एका वेळी एकच program बसू शकतो. म्हणून Nginx install करण्याआधी Apache बंद करा: Ubuntu वर Nginx चं package install झाल्या झाल्या स्वतः start व्हायचा प्रयत्न करतं, आणि Apache ने port 80 धरून ठेवला असेल तर तो start fail होतो.
Classroom line
You can install it, but you can't start it.
Class मधलं वाक्य
"Install karu shakto, start nahi karu shakat."
Install करू शकतो, start नाही करू शकत.
Classroom line
You can install it, but you can't start it.
कसं.
Step 1. Apache बंद करा:
sudo service apache2 stop
Step 2. Nginx install करा:
sudo apt-get install nginx -y
Step 3. तो start करा:
sudo service nginx start
Step 4. http://PUBLIC_IP/ refresh करा. अजूनही ubuntu, तुमचंच page दिसतं, आता Nginx serve करतोय. तुम्ही काहीच copy केलं नाही: Ubuntu वर Nginx पण /var/www/html च वापरतो, आणि स्वतःच्या default page आधी तुमची index.html serve करतो.
Classroom line
On Ubuntu, whether it's Apache or Nginx... both have the same website folder, /var/www/html.
Class मधलं वाक्य
"Ubuntu madhe Apache asu de, Nginx asu de... doghanch bhi website folder ek ch ahe /var/www/html"
Ubuntu मध्ये Apache असू दे, Nginx असू दे... दोघांचाही website folder एकच आहे, /var/www/html.
Classroom line
On Ubuntu, whether it's Apache or Nginx... both have the same website folder, /var/www/html.
Defaults एकत्र. Amazon Linux वर Apache /var/www/html वापरतो आणि Nginx /usr/share/nginx/html, म्हणून switch करताना files copy कराव्या लागतात. Ubuntu वर दोघंही /var/www/html वापरतात. दोन्ही systems पहिलं page म्हणून index.html देतात, http साठी port 80 आणि https साठी 443 वर.
Figure 4. Amazon Linux आणि Ubuntu: login user, package manager, Apache चं नाव, आणि Apache आणि Nginx चे website folders.

Whiteboard: Amazon Linux वरचे defaults: Apache /var/www/html serve करतो, पहिलं page index.html, http साठी port 80 आणि https साठी 443; Nginx /usr/share/nginx/html serve करतो.
Ubuntu practice झाली की Ubuntu instance terminate करा (किंवा stop करा), म्हणजे तो चालूच राहणार नाही.
8. Apache च्या settings /etc मधल्या एका file मध्ये असतात
का. Folder /var/www/html, पहिलं page index.html आणि port 80 हे फक्त defaults आहेत. एखाद्या project ला site स्वतःच्या folder मध्ये, दुसऱ्या port वर, किंवा दुसऱ्या पहिल्या page सोबत हवी असू शकते. हे Apache च्या settings file मध्ये बदलतात.
काय. Settings (configuration) files /etc मध्ये राहतात:
- Amazon Linux वर Apache:
/etc/httpd/conf/httpd.conf - Nginx:
/etc/nginx/nginx.conf
Folder की file? Folder म्हणजे tiffin box, आणि आतल्या चपात्या म्हणजे files. Folder मध्ये files असतात, आणि दुसरे folders पण असू शकतात. /etc/httpd/conf हा folder आहे; httpd.conf त्याच्या आतली file आहे.
Classroom line
A folder is like a box. It's a tiffin box. The chapatis inside it are the files.
Class मधलं वाक्य
"Folder ek box aslyasarkha ahe. Ek tiffin box ahe. Tyachya aatlya chapati ya file ahet."
Folder एक box असल्यासारखा आहे. एक tiffin box आहे. त्याच्या आतल्या चपात्या या files आहेत.
Classroom line
A folder is like a box. It's a tiffin box. The chapatis inside it are the files.
httpd.conf कसं वाचायचं. कुठली language शिकायची गरज नाही. ही साधी text file आहे:
#ने सुरू होणारी line comment असते. Apache ती ignore करतो; ती तुमच्यासाठी explanation आहे.- Setting म्हणजे नाव, एक space आणि value, उदाहरणार्थ
Listen 80. - काही settings
<IfModule dir_module>...</IfModule>सारख्या block च्या आत असतात.
Nginx ची file थोड्या वेगळ्या style ची असते (प्रत्येक setting ; ने संपते आणि blocks { } वापरतात), पण idea तीच: बरोबर नाव शोधा आणि त्याची value बदला.
Classroom line
Pay attention only to what you need.
Class मधलं वाक्य
"Jevdha pahije tevdhach laksha dyaycha."
जेवढं पाहिजे तेवढंच लक्ष द्यायचं.
Classroom line
Pay attention only to what you need.
आज आपण बदलणार त्या तीन lines file मध्ये अशा दिसतात:
Listen 80
DocumentRoot "/var/www/html"
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
DocumentRoot: website चा folder. फक्त folder, कधीच file नाही.Listen: Apache कुठल्या port वर थांबतो तो.DirectoryIndex: URL folder ने संपते तेव्हा दिसणारं पहिलं page. अनेक नावं देता येतात; Apache ती डावीकडून उजवीकडे try करतो आणि जे पहिलं सापडेल ते serve करतो.
9. आपला folder, port आणि पहिलं page (Amazon Linux)
का. Real servers क्वचितच defaults ठेवतात. एक server college site स्वतःच्या port आणि folder वर host करू शकतो, म्हणून कोणत्या तीन ओळी बदलायच्या हे नेमकं माहीत हवं.
Example 4: आपण काय बनवणार.
- Folder:
/var/www/mycollege - Port:
90 - पहिलं page:
college.html - URL:
http://PUBLIC_IP:90/
/var/www का. Public website चे folders /var (किंवा /usr) खाली ठेवायचे, /home खाली नाही, कारण तो प्रत्येक user चा private असतो. httpd.conf आधीच Apache ला /var/www खालचं सगळं वाचायची परवानगी देतो (<Directory "/var/www"> block, Require all granted सोबत), म्हणून तिथला नवीन folder लगेच चालतो. /var/www च्या बाहेरच्या folder ला स्वतःचा <Directory> block लागेल.
Figure 5. Animation: Listen 90 request ला port 90 वर आत घेतो, DocumentRoot folder निवडतो, DirectoryIndex पहिलं page निवडतो.
कसं.
Step 1. तुमचा Amazon Linux instance start करा, ec2-user ने connect करा, आणि Apache start करा:
sudo service httpd start
Step 2. Settings file उघडा. ती root ची आहे, म्हणून sudo:
sudo nano /etc/httpd/conf/httpd.conf
त्यात खूप काही आहे. काळजी करू नका; तुम्हाला फक्त तीन lines लागतात. एखादा शब्द शोधायला nano मध्ये Ctrl+W वापरा.
Classroom line
There's a lot in here, but don't be scared, okay.
Class मधलं वाक्य
"Lay kaay kaay ahe ghabraycha nahi bar ka."
लय काय काय आहे, घाबरायचं नाही बरं का.
Classroom line
There's a lot in here, but don't be scared, okay.
Step 3. Port बदला. Listen 80 शोधा आणि असं करा:
Listen 90
Step 4. Folder बदला. DocumentRoot "/var/www/html" शोधा आणि असं करा:
DocumentRoot "/var/www/mycollege"
Step 5. पहिलं page बदला. DirectoryIndex index.html शोधा आणि असं करा:
DirectoryIndex college.html index.html
आता आधी college.html try होतं, आणि index.html fallback आहे.

Whiteboard: nano मध्ये उघडलेली httpd.conf: IfModule dir_module block मधली DirectoryIndex line, बदलण्याच्या आधी, default index.html वर.
Step 6. Ctrl+X, Y, Enter ने save करा.
Step 7. Folder आणि page बनवा:
cd /var/www
sudo mkdir mycollege
cd mycollege
sudo nano college.html
एक page type करा. मराठी पण चालतं:
<h1>माझं कॉलेज</h1>
<p>पुण्याचा पाऊस, कॉलेजचा कट्टा आणि चहा.</p>
Terminal मध्ये मराठी अक्षरांच्या जागी boxes दिसू शकतात, कारण त्याच्या font मध्ये ती अक्षरं नाहीत. Browser ती बरोबर दाखवतो.
Step 8. Apache ला file परत वाचायला सांगा:
[ec2-user@ip-172-31-xx-xx mycollege]$ sudo service httpd reload
Redirecting to /bin/systemctl reload httpd.service
reload मुळे Apache न थांबता httpd.conf परत वाचतो. Redirecting line फक्त सांगते की service ने तुमची command systemctl कडे दिली, जो services manage करतो. sudo service httpd restart (stop, मग start) पण चालतं.
Step 9. http://PUBLIC_IP/ उघडा. आता ते उघडत नाही, कारण Apache आता port 90 वर थांबतो, आणि port नसलेली URL म्हणजे port 80.
Classroom line
When we don't write a port number, it becomes the default port 80.
Class मधलं वाक्य
"Jevha aapan port number nahi lihit, te default port 80 banun jaat."
जेव्हा आपण port number नाही लिहीत, तेव्हा तो default port 80 बनून जातो.
Classroom line
When we don't write a port number, it becomes the default port 80.
Step 10. http://PUBLIC_IP:90/ उघडा. ते थांबून राहतं आणि time out होतं: Security Group अजून port 90 allow करत नाही.
Step 11. Security Group मध्ये port 90 उघडा:
- EC2 › Instances › instance select करा › Security tab › Security Group वर click करा.
- Edit inbound rules.
- 22 आणि 80 चे आधीचे rules आहेत तसेच ठेवा.
- Add rule: Type Custom TCP, Port range 90, Source 0.0.0.0/0 (सगळ्यांसाठी; public website साठी बरोबर).
- Save rules.

Whiteboard: Edit inbound rules: SSH (22) आणि HTTP (80) चे rules तसेच राहतात, आणि port 90 साठी नवीन Custom TCP rule add होतो.
Classroom line
Now here, don't touch the rules that are there. Add a new one.
Class मधलं वाक्य
"Ata ithe, je rule ahet tyala hath lavu naka. Navin add kara."
आता इथे, जे rules आहेत त्यांना हात लावू नका. नवीन add करा.
Classroom line
Now here, don't touch the rules that are there. Add a new one.
Step 12. http://PUBLIC_IP:90/ refresh करा. /var/www/mycollege/college.html मधलं तुमचं मराठी page उघडतं.
Example 5: पहिलं page fallback वर जातं. college.html चं नाव old.html करा आणि refresh करा. Apache ला college.html सापडत नाही, तो पुढचं नाव index.html try करतो, आणि तेही नसेल तर Apache चं test page येतं. नाव परत आधीसारखं करा.
10. httpd start होत नसेल तेव्हा
का. httpd.conf मध्ये एक चुकीचं अक्षर, आणि Apache start होत नाही. Server patient आहे आणि तुम्ही doctor: अंदाज लावू नका, report वाचा.
Classroom line
Our server is our patient and we're the doctor... we have to find out what happened to our patient.
Class मधलं वाक्य
"Apla server apla patient ahe, apan doctor ahe... kay zala apla patient la baghaycha aplyala."
आपला server आपला patient आहे, आपण doctor आहोत... काय झालं आपल्या patient ला ते बघायचं आपल्याला.
Classroom line
Our server is our patient and we're the doctor... we have to find out what happened to our patient.
काय दिसतं.
[ec2-user@ip-172-31-xx-xx ~]$ sudo service httpd restart
Redirecting to /bin/systemctl restart httpd.service
Job for httpd.service failed because the control process exited with error code.
See "systemctl status httpd.service" and "journalctl -xeu httpd.service" for details.
कसं.
Step 1. जी service fail झाली तिचा status check करा:
sudo service httpd status
(systemctl status httpd.service पण तेच दाखवतो.)
Classroom line
Whichever service gives the error, check that service's status.
Class मधलं वाक्य
"Kuthlya service cha error yeto, tya service cha status check karaycha."
कुठल्या service चा error येतो, त्या service चा status check करायचा.
Classroom line
Whichever service gives the error, check that service's status.
Step 2. शेवटच्या lines वाचा. त्यात file, line number आणि कारण असतं. दोन सगळ्यात common कारणं:
- Port आधीच वापरात आहे, उदाहरणार्थ त्याच port वर Nginx चालू आहे.
- Config file मध्ये typo.
Example 6: DocumentRoot मध्ये file. Status असं दाखवतो:
AH00526: Syntax error on line 124 of /etc/httpd/conf/httpd.conf:
DocumentRoot '/var/www/index.html' is not a directory, or is not readable
Line 124 वर DocumentRoot "/var/www/index.html" आहे. DocumentRoot ला folder लागतो; file चं नाव DirectoryIndex मध्ये जातं. Line folder वर आणा, उदाहरणार्थ DocumentRoot "/var/www/mycollege", save करा, आणि परत start करा:
sudo service httpd start
Step 3 (उपयोगी सवय). Reload करण्याआधी Apache ला file check करू द्या:
sudo apachectl configtest
File बरोबर असेल तर तो Syntax OK दाखवतो, नसेल तर line number सकट तोच error message.
Figure 6. httpd start होत नाही: status वाचा, file, line आणि कारण शोधा, fix करा, परत start करा. DocumentRoot folder च पाहिजे.
11. पूर्ण flow एका ठिकाणी
- Ubuntu: user
ubuntu, packagesapt-getने. sudo apt-get update, मगsudo apt-get install apache2 -y,apache2 -v,sudo service apache2 start,sudo service apache2 status(बाहेर पडायलाq).- आपलं page
/var/www/htmlमध्ये (sudo rm index.html,sudo nano index.html). Permission denied (publickey): key file, IP, user name, OS (AMI name).- Ubuntu वर Nginx:
sudo service apache2 stop,sudo apt-get install nginx -y,sudo service nginx start; तोच folder, copy नको. - Amazon Linux settings:
sudo nano /etc/httpd/conf/httpd.conf;Listen,DocumentRoot,DirectoryIndex;sudo service httpd reload. - नवीन port: Security Group मध्ये Custom TCP rule add करा, आणि URL मध्ये
:portटाका. - Start होत नाही:
sudo service httpd status, line वाचा, fix, start;sudo apachectl configtest.
12. Billing चा प्रश्न? Free AWS Support case उघडा
हा विषय का आला. Practice साठी extra servers launch करताना learners ना कधी अनपेक्षित charge किंवा account वर billing hold दिसतो, आणि कोणाला विचारायचं ते कळत नाही.
पार्श्वभूमी. 1. प्रत्येक AWS account, अगदी free Basic support plan वर असलं तरी, Account and billing cases फुकट उघडू शकतं. 2. Console मध्ये वर उजवीकडचा ? menu → Support Center → Create case. 3. Account and billing निवडा, योग्य service आणि category निवडा (उदाहरणार्थ General), आणि प्रॉब्लेम लिहा: कोणता charge, कोणता महिना, तुम्हाला काय अपेक्षित होतं. 4. AWS Support Center मध्ये आणि email ने उत्तर देतं. Technical प्रश्नांसाठी paid support plan लागतो; billing प्रश्नांसाठी नाही. 5. Case उघडण्याआधी Billing and Cost Management → Bills मध्ये बघा charge कोणत्या service आणि Region मधून आला. बहुतेक वेळा तो stop किंवा delete करायचा विसरलेला server किंवा disk असतो.
या chapter शी संबंध. या chapter मध्ये Amazon Linux च्या बाजूला Ubuntu server चालवायचा आहे. दोन servers free-tier hours दुप्पट वेगाने वापरतात, म्हणून काम संपल्यावर दोन्ही stop करणं, आणि bill चुकीचं वाटलं तर कुठे विचारायचं हे माहीत असणं, ही एकाच सवयीचा भाग.
13. Hands-on lab: Ubuntu वर Apache, मग Amazon Linux वर स्वतःचा port आणि folder
हा lab का. तेच काम दोन Linux families वर वेगळं दिसतं, आणि real server वर defaults क्वचितच टिकतात. हा lab Ubuntu वर page host करतो, मग Amazon Linux ची site port 90, स्वतःचा folder आणि स्वतःचं पहिलं page वर नेतो.
- Ubuntu मध्ये login करा
- Command:
ssh -i mykey.pem ubuntu@PUBLIC_IP - काय दिसेल:
ubuntu@ip-...:~$सारखा prompt. - Check करा:
whoami→ubuntu - का: Ubuntu images वर login user
ubuntu. इथेec2-userवापरलं तरPermission denied (publickey).
- Command:
- Package list refresh करा
- Command:
sudo apt-get update - काय दिसेल:
Hit:आणिGet:ओळी, मगReading package lists... Done. - Check करा:
Failed to fetchओळी नाहीत. - का: नवीन Ubuntu server ची list जुनी असते, म्हणून installs
404 Not Foundने fail होतात.updatelist refresh करतो; काहीही install करत नाही.
- Command:
- Apache install करा
- Command:
sudo apt-get install apache2 -y - काय दिसेल: Download आणि setup च्या ओळी, आणि परत prompt.
- Check करा:
apache2 -v→Server version: Apache/2.4... (Ubuntu) - का: Ubuntu वर package आणि service
apache2,httpdनाही. Install नंतर Ubuntu तो स्वतः start पण करतो.
- Command:
- Default page बदला
- Command:
cd /var/www/html && sudo rm index.html && sudo nano index.html - काय दिसेल: रिकामी file.
<h1>ubuntu</h1>type करा, Ctrl+O, Enter ने save, Ctrl+X ने बाहेर. - Check करा:
http://PUBLIC_IP/मध्ये ubuntu दिसतं. - का: Apache2 Ubuntu Default Page फक्त install सिद्ध करतं. तुमचं स्वतःचं page पूर्ण साखळी सिद्ध करतं: service, folder, port 80 आणि security group.
- Command:
- Amazon Linux वर: httpd.conf चा backup घ्या
- Command:
sudo cp /etc/httpd/conf/httpd.conf ~/httpd.conf.bak - काय दिसेल: काहीच नाही.
- Check करा:
ls ~मध्येhttpd.conf.bakदिसतं. - का: एका चुकीच्या अक्षराने Apache थांबतो. Copy असली की working file कडे नेहमी परत जाता येतं.
- Command:
- नवीन folder आणि पहिलं page बनवा
- Command:
sudo mkdir /var/www/mycollege && echo "<h1>My college</h1>" | sudo tee /var/www/mycollege/college.html - काय दिसेल:
<h1>My college</h1> - Check करा:
ls /var/www/mycollege→college.html - का:
/var/wwwखाली Apache ला आधीच वाचायची परवानगी आहे, म्हणून नवीन folder जादा<Directory>block शिवाय चालतो.teeroot म्हणून लिहितो.
- Command:
- तीन ओळी बदला
- Command:
sudo nano /etc/httpd/conf/httpd.conf - काय दिसेल:
Listen 90,DocumentRoot "/var/www/mycollege"आणिDirectoryIndex college.html index.htmlset करा. Save करून बाहेर पडा. - Check करा:
sudo apachectl configtest→Syntax OK - का:
Listenम्हणजे port,DocumentRootम्हणजे folder (कधीच file नाही),DirectoryIndexम्हणजे पहिलं page. Restart ने site बंद पडण्याआधीconfigtesttypos पकडतो.
- Command:
- Restart करा आणि आतून तपासा
- Command:
sudo service httpd restart && curl http://localhost:90 - काय दिसेल:
<h1>My college</h1> - Check करा:
curl http://localhost(port 80) आताConnection refusedने fail होतो. - का: Apache settings फक्त start ला वाचतो. Port 80 ने नकार दिला म्हणजे तो खरंच 90 वर गेला.
- Command:
- Port 90 उघडा आणि बाहेरून तपासा
- करा: Security group → Edit inbound rules → Add rule → Custom TCP, port 90, source Anywhere-IPv4 → Save rules.
- Check करा:
http://PUBLIC_IP:90/मध्ये My college दिसतं. - का: Security group परवानगी देईपर्यंत नवीन port बंद असतो.
:90शिवाय browser port 80 वापरतो.
- पूर्ववत करा आणि दोन्ही servers stop करा
- Command:
sudo cp ~/httpd.conf.bak /etc/httpd/conf/httpd.conf && sudo service httpd restart - काय दिसेल: काहीच नाही.
- Check करा:
curl http://localhostपरत port 80 वर चालतं. Ubuntu आणि Amazon Linux दोन्ही instances stop करा. - का: Backup म्हणजेच undo. दोन चालू servers free-tier hours दुप्पट वेगाने वापरतात.
- Command:
14. घरी करून बघा
Try at home
Task 1: Ubuntu web server
- Ubuntu instance launch करा आणि
ubuntuने connect करा. sudo apt-get updateआणिsudo apt-get install apache2 -yने Apache install करा, आणिapache2 -vने check करा.- Default page च्या जागी आपली
index.htmlठेवा.
Task 2: Ubuntu वर Nginx
- Apache बंद करा, Nginx install करून start करा, आणि तुमचं page अजून उघडतंय ते check करा.
- झालं की Ubuntu instance terminate करा.
Task 3: Permission denied
- मुद्दाम तुमच्या Amazon Linux server वर
ubuntuने login करून बघा आणि error वाचा. मग बरोबर login करा.
Task 4: आपला folder, port आणि पहिलं page
- Amazon Linux वर
Listen 90,DocumentRoot "/var/www/mycollege"आणिDirectoryIndex college.html index.htmlकरा. - Folder आणि page बनवा, reload करा, Security Group मध्ये port 90 उघडा आणि
http://PUBLIC_IP:90/उघडा.
Task 5: doctor बना
- आधी copy करा:
sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak. DocumentRootमध्ये file चं नाव टाका, restart करा,sudo service httpd statusवाचा, fix करा, आणिsudo apachectl configtestने खात्री करा.- जुनी site परत हवी असेल तर default values परत ठेवा (Listen 80, /var/www/html, index.html).
झालं की instance stop करा.
Recap
थोडक्यात
- Ubuntu जवळजवळ प्रत्येक cloud वर मिळतो. Login
ubuntuने; installapt-getने. - नवीन Ubuntu server वर आधी
sudo apt-get update.404 Not FoundआणिFailed to fetchम्हणजे package list जुनी आहे. - Ubuntu वर Apache म्हणजे
apache2;apache2 -vने check,sudo service apache2 startने start, status screen मधून बाहेर पडायलाq. - प्रत्येक app ला एक key pair. या images ची root disk default 8 GB असते आणि मोठी करता येते; extra disks add करता येतात.
Permission denied (publickey): चुकीची key, चुकीचा IP, चुकीचा user, किंवा वेगळी OS (AMI name बघा).- Ubuntu वर Apache आणि Nginx
/var/www/htmlshare करतात; Nginx install करण्याआधी Apache बंद करा. /etc/httpd/conf/httpd.conf:DocumentRoot= folder,Listen= port,DirectoryIndex= पहिलं page (किंवा pages), डावीकडून उजवीकडे. मगsudo service httpd reload.- नवीन port ला Security Group rule आणि URL मध्ये
:portलागतो. httpd start होत नसेल तर त्याचा status वाचा आणि तो सांगतो ती line fix करा.
Ravindra Bagale, trainer: linkedin.com/in/ravindra-bagale. Key names (mykey.pem, instagram-key.pem, facebook-key.pem), mycollege folder, college.html page आणि त्यातला मराठी text शिकण्यासाठीची उदाहरणं आहेत; PUBLIC_IP म्हणजे तुमच्या instance चा public IPv4 address. Outputs मधली package names, links आणि version numbers "..." ने छोटे केलेत; prompt मधलं hostname उदाहरणादाखल आहे.
सराव Tasks
Jakarta Batik हा जकार्ता मधला हस्तकला व्यवसाय आहे. Siti Rahmawati त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे IDR मध्ये मोजले जातात आणि AWS resources ap-southeast-3 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/jakartabatik/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-02c4a15ab4324c3b2 वर 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-04a15af432deadbee मध्ये jakartabatik-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/jakartabatik ची 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.