Amazon Linux 2023 वर Nginx सह WordPress Install करा
आता तुम्ही PHP code चालवू शकता आणि त्याचा data MariaDB मध्ये ठेवू शकता. या chapter मध्ये तुम्ही लाखो websites वापरतात असं एक पूर्ण PHP application install कराल: WordPress. nginx, php-fpm आणि MariaDB असलेल्या एकाच Amazon Linux 2023 EC2 server वर ते setup कराल, त्याला स्वतःचा database user आणि folder चा योग्य owner द्याल, installer पूर्ण कराल, image सह एक post publish कराल, theme बदलाल, आणि server चा IP बदलला की WordPress site का बिघडते ते शिकाल.
या class मध्ये काय शिकणार
- CMS म्हणजे काय, तो framework पेक्षा वेगळा कसा, आणि WordPress ने काय बनवू शकता
- WordPress साठी LEMP stack,
php-mysqlndसह, आणि HTML आणि PHP चा छोटा test - Stable
latest.zipdownload करून/usr/share/nginx/html/wordpressमध्ये unzip करणं - nginx server block:
root,index index.php;,try_filesआणिserver_name _; - Ubuntu वर याच steps: काय बदलतं
wordpressdbdatabase आणि फक्त WordPress साठीwpuser- php-fpm user ला folder ची ownership, 755 आणि 644, आणि 777 कधीच का नाही
- Installer च्या दोन screens: आधी database details, मग website चा login
- wp-admin dashboard: posts, block editor, Media Library आणि themes
- EC2 चा public IP बदलला की site का बिघडते, आणि ते कसं टाळायचं
1. WordPress म्हणजे काय: CMS, framework नाही
का: काहीही install करण्याआधी ते कोणत्या प्रकारचं software आहे ते माहीत हवं. Install नंतर काम कोण करणार ते त्यावरून ठरतं: code लिहिणारा developer, की content टाइप करणारा site owner.
काय:
- Framework म्हणजे developers ना app लवकर बनवायला मदत करणारा तयार code: PHP साठी Laravel, Python साठी Django आणि Flask, Node.js साठी Express. Pages, forms आणि login तुम्हालाच लिहावे लागतात.
- CMS (content management system) म्हणजे install करून मग content ने भरायची तयार website. WordPress हा PHP मध्ये लिहिलेला CMS आहे. Site owner admin dashboard मधून code शिवाय लिहितो, सजवतो आणि publish करतो.
- WordPress मध्ये pages आणि posts database मधल्या rows असतात, वेगवेगळ्या HTML files नाही. Visitor post उघडतो तेव्हा PHP ती row वाचून page लगेच बनवतो, जसं एखादं app प्रत्येक reel त्याच्या database मधून आणतं.
काय बनवू शकता: blog, news site, company website, portfolio, video site, किंवा WooCommerce सारख्या plugin सह online shop. Flipkart सारखा shop सुद्धा WordPress ने बनवता येईल, पण खूप मोठे shops बहुतेक स्वतःचा code लिहितात.
Figure 1. Framework (Laravel, Django, Flask, Express) developers ना तयार भाग देतो; WordPress सारखा CMS ही dashboard मधून owner भरतो अशी तयार website. Blogs, news, company sites, portfolios, video sites आणि shops.
2. Server: LEMP
का: WordPress हा PHP code आहे जो सगळं MySQL-compatible database मध्ये ठेवतो. त्याला web server, PHP, एक रिकामा database आणि लिहिता येईल असा folder लागतो.
काय: LEMP = Linux + nginx (उच्चार Engine-X) + MariaDB + PHP. nginx ऐवजी Apache असेल तर याच stack ला LAMP म्हणतात. इथे आपण nginx वापरतो.
कसं:
- Amazon Linux 2023 आणि
t3.microसारखा छोटा type घेऊन EC2 instance launch करा. त्याच्या security group मध्ये तुमच्या IP वरून SSH (22) आणि HTTP (80) allow करा. - Connect करा:
ssh -i key.pem ec2-user@SERVER-IP. -
PHP च्या MySQL driver सकट stack install करा:
sudo yum install nginx mariadb105-server php php-fpm php-mysqlnd -y -
Install fail झालं तर आधी
sudo yum update -yने package list update करा, मग परत try करा.
Classroom line
If some software won't install, update the package manager first.
Class मधलं वाक्य
"Ekhada software install hot nasel tar aadhi package manager update karaycha."
एखादं software install होत नसेल तर आधी package manager update करायचा.
Classroom line
If some software won't install, update the package manager first.
-
तीन services सुरू करा:
sudo service nginx start sudo service mariadb start sudo service php-fpm start -
WordPress च्या आधी HTML आणि PHP test करा:
echo '<h1>HTML works</h1>' | sudo tee /usr/share/nginx/html/index.html echo '<?php phpinfo();' | sudo tee /usr/share/nginx/html/info.php -
http://SERVER-IP/आणिhttp://SERVER-IP/info.phpउघडा. HTML works आणि PHP चं मोठं information page दिसेल. मग test page delete करा, कारण ते server details दाखवतं:sudo rm /usr/share/nginx/html/info.php.
Figure 2. WordPress साठी LEMP: wordpress folder मध्ये root असलेला port 80 वरचा nginx, WordPress code apache म्हणून चालवणारा php-fpm (php-mysqlnd सह), आणि wordpressdb ठेवणारा MariaDB. Install, start आणि test.
3. PHP चा MySQL driver
का: WordPress चं index.php सुरुवातीलाच database ला connect होतं. Driver नसेल तर PHP कडे mysqli functions नसतात आणि installer तुमच्या PHP installation मध्ये MySQL extension नाही असा error देऊन थांबतो.
Classroom line
WordPress's index.php has database code in it; if you don't install the MySQL connector, the code will fail.
Class मधलं वाक्य
"WordPress chya index.php madhe database cha code aahe; MySQL connector install nahi kela tar code fail hoil."
WordPress च्या index.php मध्ये database चा code आहे; MySQL connector install नाही केला तर code fail होईल.
Classroom line
WordPress's index.php has database code in it; if you don't install the MySQL connector, the code will fail.
कसं:
- Package चं नाव
php-mysqlnd. वरच्या install command मध्ये तो होता; राहिला असेल तर आता install करा:sudo yum install php-mysqlnd -y. - फक्त php-fpm restart करा, कारण PHP extensions तोच load करतो:
sudo service php-fpm restart. - तपासा:
php -m | grep -i mysqlमध्येmysqli,mysqlndआणिpdo_mysqlदिसतात.
4. WordPress download करा
का: WordPress free, open-source code आहे. तो एकदा server वर download करायचा, आणि nginx तिथून serve करतो.
Classroom line
We have to get that code from somewhere.
Class मधलं वाक्य
तो code कुठून ना कुठून तरी घ्यायचाच आहे.
Classroom line – हिंदी
"Kahi na kahi se wo code lena hai."
काय: नेहमी https://wordpress.org/latest.zip वरून stable release घ्या. GitHub वरची development branch ची copy अपूर्ण code असतो, तो WordPress developers साठी, website साठी नाही.
कसं:
-
Web root मध्ये जा आणि download करा:
cd /usr/share/nginx/html sudo wget https://wordpress.org/latest.zip -
Unzip करा:
sudo unzip latest.zip.sudoलागतो कारण web root root च्या मालकीचा आहे.wgetकिंवाunzipनसेल तरsudo yum install wget unzip -yने install करा. - Zip मधून एक folder बनतो,
wordpress, आणि त्यातindex.php,wp-admin,wp-content,wp-includesआणिwp-config-sample.php.ls wordpressने तपासा. - Folder चं नाव
wordpressठेवा: एकच शब्द, सगळे small letters. Linux paths case-sensitive असतात, म्हणूनWordPressआणिwordpressहे दोन वेगळे folders, आणि nginx config मधलं नाव अगदी तसंच जुळायला हवं.
Classroom line
Use a single word; then there's no hassle later.
Class मधलं वाक्य
"Single word vapraycha, kit-kit rahat nahi."
एकच शब्द वापरायचा, किटकिट राहत नाही.
Classroom line
Use a single word; then there's no hassle later.
- Zip काढून टाका:
sudo rm latest.zip.
5. nginx ला WordPress कडे वळवा
का: nginx अजून /usr/share/nginx/html serve करतो, म्हणून IP वर जुनं test page दिसतं. त्याने wordpress folder serve करायला हवा, default ने index.php उघडायला हवं, आणि WordPress च्या post links index.php कडे पाठवायला हव्यात.
काय: sudo nano /etc/nginx/nginx.conf ने main config उघडा आणि server { ... } block शोधा. या ओळी directives आहेत, म्हणजे nginx वाचतो त्या settings:
server_name _;Underscore म्हणजे कुठलंही नाव किंवा IP. Domain नसेपर्यंत हेच ठेवा; इथे मनाने domain name बनवू नका.root /usr/share/nginx/html/wordpress;nginx serve करतो तो folder.index index.php;कोणी folder मागितला, उदा./, तर nginx त्यातलीindex.phpउघडतो.location / { try_files $uri $uri/ /index.php?$args; }Request खरी file ($uri) किंवा खरा folder ($uri/) नसेल तर ती WordPress च्याindex.phpकडे द्या./hello-world/सारख्या WordPress post links disk वर नसतात, म्हणून ही ओळ नसेल तर त्या404 Not Foundदेतात.include /etc/nginx/default.d/*.conf;ही ओळ तशीच ठेवा: Amazon Linux 2023 वर php-fpm package त्याच्या PHP settings तिथे ठेवतं, म्हणून nginx.phpfiles php-fpm कडे देऊ शकतो.
Classroom line
If there's no domain name, you have to put an underscore there.
Class मधलं वाक्य
"Domain name nasel tar tithe underscore dyava lagel."
Domain name नसेल तर तिथे underscore द्यावा लागेल.
Classroom line
If there's no domain name, you have to put an underscore there.
कसं: बदल केल्यावर block असा दिसतो:
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html/wordpress;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
...
}
- Save करा, मग syntax test करा:
sudo nginx -t. त्यातsyntax is okआणिtest is successfulदिसायलाच हवं. - लागू करा:
sudo service nginx reload. http://SERVER-IP/उघडा. WordPress तुम्हाला/wp-admin/setup-config.phpवर, म्हणजे installer कडे, पाठवतं.
Figure 3. Server block: server_name _, wordpress folder मध्ये root, index index.php, /index.php कडे try_files, आणि php-fpm आणणारी include. मग sudo nginx -t आणि sudo service nginx reload.
Figure 4. Animation: /hello-world/ ही file नाही, म्हणून try_files ती index.php कडे देतो; WordPress wp_posts मध्ये post शोधतो आणि page पाठवतो. try_files नसेल तर nginx 404 देतो.
6. Ubuntu वर याच steps
का: WordPress कुठल्याही Linux वर चालतं. प्रत्येक भाग काय करतो ते समजलं की फक्त नावं आणि paths बदलतात.
Classroom line
We've matured enough now that we can choose any OS.
Class मधलं वाक्य
आता आपली तेवढी maturity वाढली आहे.
Classroom line – हिंदी
"Ab apni itni maturity badh gayi hai."
Ubuntu वर काय बदलतं:
yumऐवजीapt:sudo apt install nginx mariadb-server php-fpm php-mysql -y.- Web root
/var/www/htmlआहे, म्हणून WordPress/var/www/html/wordpressमध्ये जातं. - Server block
/etc/nginx/sites-available/defaultमध्ये असतो, आणि PHP साठी तिथे php-fpm socket कडे point करणारा स्वतःचाlocation ~ \.php$block लागतो. - php-fpm
www-dataम्हणून चालतो, आणि त्याच्या service च्या नावात version असतं, उदा.php8.3-fpm. - Apache ला Ubuntu वर
apache2आणि Amazon Linux वरhttpdम्हणतात; nginx दोन्हीकडेnginx.
Figure 5. Amazon Linux 2023 आणि Ubuntu शेजारी शेजारी: yum आणि apt, /usr/share/nginx/html आणि /var/www/html, nginx.conf आणि sites-available/default, package names, आणि php-fpm user apache किंवा www-data.
7. Database आणि फक्त WordPress साठी user
का: WordPress ला एक रिकामा database आणि त्याचा login लागतो. तो login root नसावा: WordPress ला असा स्वतःचा user द्या जो फक्त त्याच्याच database ला हात लावू शकतो. Site कधी hack झाली तरी नुकसान त्या database पुरतंच राहतं.
कसं:
- MariaDB administrator म्हणून उघडा:
sudo mysql(root password ठेवला असेल तरmysql -u root -p). -
Database आणि user बनवा, placeholder च्या जागी स्वतःचा strong password टाका:
CREATE DATABASE wordpressdb; CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'YOUR_STRONG_DB_PASSWORD'; GRANT ALL ON wordpressdb.* TO 'wpuser'@'localhost'; FLUSH PRIVILEGES; exit; -
GRANT ALL ON wordpressdb.*मुळेwpuserलाwordpressdbमधल्या प्रत्येक table वर सगळे rights मिळतात, आणि बाहेर कुठेच काही नाही. Tables बनवायला आणि नंतर update करायला WordPress ला हे rights लागतात. - Small letters मधली नावं वापरा. Linux वर MariaDB च्या database names case-sensitive असतात:
WordPressDBआणिwordpressdbहे दोन वेगळे databases, आणि installer मध्ये नाव न जुळल्यास database connection error येतो.
Classroom line
Always use small letters, everywhere.
Class मधलं वाक्य
"Nehmi small letters vapraycha saglikade."
नेहमी small letters वापरायचे सगळीकडे.
Classroom line
Always use small letters, everywhere.
- Installer या step मधल्या चार गोष्टी विचारेल: database name, user name, त्याचा password, आणि host,
localhost, कारण MariaDB त्याच server वर चालतो.
Classroom line
We'll have to give these four things there.
Class मधलं वाक्य
या चारही गोष्टी तिथे द्याव्या लागतील.
Classroom line – हिंदी
"Ye chaaron cheezein wahan pe dena padega."
8. WordPress ला त्याच्या folder मध्ये लिहू द्या
का: Installer wp-config.php लिहितो, आणि नंतर WordPress upload केलेल्या images, themes आणि updates त्याच्या folder मध्ये save करतो. sudo unzip नंतर folder root च्या मालकीचा असतो, म्हणून PHP तिथे लिहू शकत नाही. हे chmod 777 ने कधीच "दुरुस्त" करू नका: त्याने server वरचा प्रत्येक user आणि प्रत्येक program प्रत्येक file बदलू शकतो.
काय: PHP चालवणाऱ्या user ला folder चा owner करा. Amazon Linux 2023 वर php-fpm apache म्हणून चालतो (/etc/php-fpm.d/www.conf मधली user = apache ओळ). Ubuntu वर तो www-data असतो.
कसं:
-
Folder
apacheला द्या:sudo chown -R apache:apache /usr/share/nginx/html/wordpress -
Folders ला 755 आणि files ला 644 द्या:
sudo find /usr/share/nginx/html/wordpress -type d -exec chmod 755 {} + sudo find /usr/share/nginx/html/wordpress -type f -exec chmod 644 {} + -
755 आणि 644 म्हणजे: owner (
apache) लिहू शकतो; बाकी सगळे, nginx सकट, फक्त वाचू शकतात. Images आणि CSS पाठवायला nginx ला एवढंच लागतं. - दुसरा मार्ग:
wp-config-sample.phpची copywp-config.phpम्हणून स्वतः करा आणि त्यात database च्या चार values टाका. मग installer पहिली screen वगळतो. Uploads आणि themes साठीwp-contentतरीही WordPress च्या मालकीचा हवा.
Figure 6. chmod 777 कधीच नाही. apache (php-fpm user) ला owner करा, folders ला 755 आणि files ला 644, म्हणजे फक्त owner लिहू शकतो; install नंतर wp-config.php ला 640 करा.
9. Installer
का: Installer WordPress ला database शी जोडतो, त्याचे tables बनवतो आणि तुमचं admin account बनवतो. तो browser मध्ये एकदाच चालतो.
कसं:
http://SERVER-IP/उघडा. पहिली screen भाषा विचारते. मग काय काय लागेल त्याची list असलेली welcome screen येते.

Whiteboard: Installer ची welcome screen: database name, username, password, host आणि table prefix, जे तो wp-config.php मध्ये लिहितो.
- Let's go! दाबा आणि screen 1, म्हणजे database details भरा:
- Database Name:
wordpressdb - Username:
wpuser - Password:
CREATE USERमध्ये ठेवलेला - Database Host:
localhost - Table Prefix:
wp_. प्रत्येक WordPress table या prefix ने सुरू होतो, म्हणून वेगळे prefix असलेल्या दोन sites एकच database सुद्धा वापरू शकतात. एका site साठीwp_च ठेवा.
- Database Name:
- Submit, मग Run the installation दाबा. WordPress
wp-config.phpलिहितो आणि रिकाम्या database मध्ये स्वतःचे tables बनवतो:wp_posts,wp_users,wp_optionsआणि आणखी नऊ.
Classroom line
WordPress creates its own tables.
Class मधलं वाक्य
"WordPress swatahche tables tayar kartay."
WordPress स्वतःचे tables तयार करतंय.
Classroom line
WordPress creates its own tables.
- Screen 2 भरा, म्हणजे तुमच्या website चे details. हा database पेक्षा वेगळा login आहे:
- Site Title: site चं नाव, उदा.
My Practice Blog. नंतर बदलता येतं. - Username: admin login. वेगळं नाव निवडा,
adminकिंवाrootकधीच नाही: attackers आधी तेच try करतात. - Password: मोठा आणि strong. WordPress एक सुचवतो; तो जपून ठेवा.
- Your Email: WordPress password reset आणि सूचना इथे पाठवतो.
- Search engine visibility: Discourage search engines from indexing this site ला tick केलं की Google आणि इतरांना site list न करण्याची विनंती जाते. ही विनंती आहे, कुलूप नाही: address माहीत असलेला कोणीही site उघडू शकतो. Practice करताना tick ठेवा; site live झाली की काढा.
- Site Title: site चं नाव, उदा.
- Install WordPress दाबा. Success! दिसेल. Log In दाबा आणि screen 2 मधल्या username आणि password ने
http://SERVER-IP/wp-adminवर sign in करा. - Installer ने
wp-config.phpमध्ये database password लिहिला आणि ती file server वरच्या प्रत्येक user ला वाचता येईल अशी ठेवली. ती घट्ट करा:sudo chmod 640 /usr/share/nginx/html/wordpress/wp-config.php.
Figure 7. Animation: screen 1 database details घेते आणि wp-config.php लिहिते; installation 12 wp_ tables बनवते; screen 2 तुमच्या website चा login बनवते: वेगळं username, strong password आणि search engine चा पर्याय.
10. Dashboard आणि तुमची पहिली post
का: wp-admin हा site चा control room आहे. Site owner इथे काम करतो, जसं social media page सांभाळतो: लिहा, फोटो टाका, publish करा.
Classroom line
What does an admin do? Supplies the content.
Class मधलं वाक्य
"Admin kay karto? Content deto."
Admin काय करतो? Content देतो.
Classroom line
What does an admin do? Supplies the content.

Whiteboard: wp-admin dashboard: डावा menu (Posts, Media, Pages, Appearance, Plugins, Users, Settings) आणि Welcome to WordPress panel.
Post कशी लिहायची: समजा तुम्हाला कवितांचा छोटा blog हवा आहे.
Classroom line
Suppose I now want to build a shayari (poetry) website.
Class मधलं वाक्य
"Samja mala aata shero-shayari cha website banvaycha aahe."
समजा मला आता शेरो-शायरीची website बनवायची आहे.
Classroom line
Suppose I now want to build a shayari (poetry) website.
- Posts > Add Post. Title टाइप करा, मग त्याखाली text. प्रत्येक paragraph एक block असतो.
- Block ला style द्यायला तो select करा. त्याच्या वरच्या toolbar मध्ये bold, italic आणि links असतात; उजव्या panel मध्ये text colour, background आणि font size (S, M, L, XL).
- फोटो टाकायला स्वतःची image किंवा वापरायचा हक्क असलेली image वापरा. आधी upload करा: Media > Add Media File, किंवा Image block चं Upload button. ती Media Library मध्ये जाते, आणि image file तुमच्या server वर
wp-content/uploadsमध्ये store होते. दुसऱ्या website वरची image तिच्या URL ने टाकणं टाळा: ती कधीही गायब होऊ शकते, आणि बहुतेक वेळा ते दुसऱ्याचं काम असतं. - Publish, मग View Post दाबा. Site चा address नवीन tab मध्ये उघडा: post home page वर दिसते.
- Posts > All Posts मध्ये तुमच्या posts दिसतात. Sample post Hello world! edit करता येते किंवा trash मध्ये टाकता येते.
Figure 8. Dashboard menu: लिहायला आणि publish करायला Posts, images upload करायला Media, look साठी Appearance > Themes, आणि save केलेल्या site address साठी Settings > General.
11. Themes
का: Theme पूर्ण site कशी दिसेल ते ठरवते: layout, fonts, colours, header आणि footer. Content तेच राहतं; एका click मध्ये look बदलतो.
कसं:
- Appearance > Themes मध्ये install केलेल्या themes दिसतात. चालू theme वर Active लिहिलेलं असतं.

Whiteboard: Appearance > Themes: चालू theme Twenty Twenty-Five, आणि install केलेली दुसरी theme Twenty Eleven.
- दुसऱ्या theme वर, उदा. Twenty Eleven, mouse न्या आणि Activate दाबा. दुसऱ्या tab मधली site refresh करा: त्याच posts, नवीन look.
Classroom line
Now it feels like you've built a website, right? That's the feeling.
Class मधलं वाक्य
"Aata vatta na website kelyasarkha? Hech feel aahe."
आता वाटतंय ना website केल्यासारखं? हेच feel आहे.
Classroom line
Now it feels like you've built a website, right? That's the feeling.
- Add Theme मध्ये blogs, news, business आणि shops साठी हजारो free themes बघता येतात.
- Theme किंवा plugin install करताना WordPress FTP connection details विचारत असेल, तर त्याला स्वतःच्या folder मध्ये लिहिता येत नाहीये.
/usr/share/nginx/html/wordpressचा ownerapacheआहे का ते तपासा (section 8). FTP ने themes install करणं पुढच्या chapter मध्ये.
12. IP बदलला की site का बिघडते
का: EC2 वर WordPress मध्ये हे सगळ्यात जास्त येणारं आश्चर्य आहे. Install करताना WordPress तुम्ही वापरलेला address, http://SERVER-IP, wp_options table मध्ये siteurl आणि home म्हणून save करतो, आणि प्रत्येक link, image आणि CSS address त्यावरूनच बनवतो.
काय होतं:
- Elastic IP नसलेल्या EC2 instance ला प्रत्येक stop आणि start नंतर नवीन public IP मिळतो.
- तुम्ही नवीन IP उघडता. Page येतं, पण त्याच्या styles, images आणि links अजून जुन्या IP कडे जातात, जिथे कोणी उत्तर देत नाही.
/wp-adminजुन्या IP कडे redirect होतं, म्हणून login सुद्धा करता येत नाही.
हे कसं टाळायचं:
- Site live होण्याआधी server ला न बदलणारा address द्या: Elastic IP allocate करून instance ला associate करा, किंवा त्या Elastic IP कडे domain name point करा. WordPress त्याच address वर install करा.
- Practice करताना काम चालू असताना instance stop करू नका, किंवा IP बदलला की site बिघडणार हे लक्षात ठेवा.
- Save केलेला address Settings > General मध्ये दिसतो (WordPress Address आणि Site Address). IP आधीच बदललेली site कशी दुरुस्त करायची ते पुढच्या chapter मध्ये.
Classroom line
When you use WordPress, always use a static IP before going live.
Class मधलं वाक्य
"WordPress vapartana live karnyachya aadhi nehmi static IP vapra."
WordPress वापरताना live करण्याच्या आधी नेहमी static IP वापरा.
Classroom line
When you use WordPress, always use a static IP before going live.
Figure 9. Animation: WordPress install च्या address सह siteurl आणि home save करतो; stop आणि start नंतर नवीन IP असं page देतो ज्याच्या links, CSS आणि wp-admin अजून जुन्या IP कडे जातात. Live करण्याआधी Elastic IP किंवा domain वापरा.
13. काही बिघडलं तर
का: WordPress install मध्ये अनेक छोट्या steps असतात, आणि प्रत्येक error message त्यातल्या एका step कडे बोट दाखवतो.
Classroom line
There are reasons behind errors; you have to look for those reasons.
Class मधलं वाक्य
"Errors yenyamage karana astat, ti karana baghavi lagtat."
Errors येण्यामागे कारणं असतात, ती कारणं बघावी लागतात.
Classroom line
There are reasons behind errors; you have to look for those reasons.
- IP वर अजून "Welcome to nginx" किंवा तुमचं test page दिसतं:
rootअजून/usr/share/nginx/htmlकडे आहे, किंवा reload केलं नाही. Path दुरुस्त करा,sudo nginx -t, मगsudo service nginx reload. - Home page वर
403 Forbidden: nginx ला folder सापडला पण उघडायला index file नाही.index index.php;टाका आणिroot/wordpressने संपतो का ते तपासा. - प्रत्येक page ला
404 Not Found:rootचा path folder च्या नावाशी जुळत नाही./usr/share/nginx/html/WordPressम्हणजे/usr/share/nginx/html/wordpressनाही. - Installer म्हणतो PHP मध्ये MySQL extension नाही:
php-mysqlndinstall करा आणि php-fpm restart करा. - Error establishing a database connection: database name, user, password किंवा host तुम्ही बनवलेल्याशी जुळत नाही. नावांचे capital-small letters तपासा, आणि त्याच values
mysql -u wpuser -p wordpressdbने login करून test करा. - Installer ला
wp-config.phpलिहिता येत नाही: folder चा ownerapacheनाही.chownवापरा, 777 कधीच नाही. - Post links ला
404, पण home page चालतं:try_filesची ओळ नाही. -
Screen 1 किंवा 2 मध्ये चूक झाली आणि परत सुरू करायचंय: database delete करून परत बनवा, मग site परत उघडा; त्याच
wp-config.phpसह installer परत चालतो. यामुळे site मधलं सगळं पुसलं जातं.sudo mysql -e "DROP DATABASE wordpressdb; CREATE DATABASE wordpressdb;"चूक database details मध्येच असेल तर
wp-config.phpसुद्धा delete करा, म्हणजे screen 1 परत येईल.
Ravindra Bagale's Tip
Stack एका वेळी एक layer बांधा आणि पुढच्या आधी प्रत्येक layer test करा: index.html उघडलं (nginx), info.php उघडलं (php-fpm), mysql -u wpuser -p wordpressdb ने login झालं (database आणि user), sudo nginx -t pass झालं (config). मग installer उघडा. एखादी step fail झाली की sudo tail -n 20 /var/log/nginx/error.log आणि /var/log/php-fpm/www-error.log बहुतेक वेळा कारण एका ओळीत सांगतात. आणि site कोणाला दाखवण्याआधी server ला Elastic IP द्या.
Practice झाल्यावर EC2 instance stop करा, आणि लक्षात ठेवा की Elastic IP नसेल तर त्याचा public IP बदलेल.
14. Hands-on lab: रिकाम्या server पासून पहिल्या post पर्यंत WordPress
हा lab का. Web चा मोठा भाग WordPress वर चालतो, आणि तो install करताना आत्तापर्यंतचं प्रत्येक कौशल्य लागतं: packages, services, nginx, database user आणि file permissions. खालच्या प्रत्येक step ला check आहे, म्हणजे लपलेला प्रॉब्लेम घेऊन installer पर्यंत पोहोचत नाही.
- LEMP चे भाग install करा
- Command:
sudo yum install nginx mariadb105-server php php-fpm php-mysqlnd -y - काय दिसेल:
Complete! - Check करा:
php -m | grep -i mysqli→mysqli. - का: WordPress म्हणजे सगळं MySQL-compatible database मध्ये ठेवणारा PHP code.
php-mysqlndशिवाय तो "Your PHP installation appears to be missing the MySQL extension" वर थांबतो.
- Command:
- Services start करा
- Command:
sudo service nginx start; sudo service mariadb start; sudo service php-fpm start - काय दिसेल: तीन redirect ओळी.
- Check करा:
http://PUBLIC_IP/मध्ये nginx test page दिसतं. - का: WordPress येण्याआधी test page दिसलं की nginx आणि port 80 चालतात हे सिद्ध होतं.
- Command:
- WordPress download करून उघडा
- Command:
cd /usr/share/nginx/html && sudo wget https://wordpress.org/latest.zip && sudo unzip -q latest.zip - काय दिसेल:
latest.zip...saved, मग prompt. - Check करा:
ls wordpressमध्येwp-admin,wp-content,wp-includesआणिindex.phpदिसतात. - का: Server वरचा
wgetथेट wordpress.org वरून download करतो.-qमुळे unzip हजारो file नावं print करत नाही.
- Command:
- Database आणि त्याचा user बनवा
- करा:
sudo mysql -u root -pमध्येCREATE DATABASE wordpressdb;,CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'YOUR_STRONG_DB_PASSWORD';आणिGRANT ALL ON wordpressdb.* TO 'wpuser'@'localhost';चालवा. - Check करा:
mysql -u wpuser -p wordpressdb -e "SELECT 1;"1print करतो. - का: WordPress ला फक्त स्वतःच्या database वर rights असलेला स्वतःचा user मिळतो. मग hack झालेला plugin तुमच्या दुसऱ्या databases ला हात लावू शकत नाही.
- करा:
- nginx ला WordPress कडे point करा
- करा:
/etc/nginx/nginx.confमध्येroot /usr/share/nginx/html/wordpress;set करा आणिindex index.php index.html;जोडा (section 5). - Check करा:
sudo nginx -t→syntax is ok, मगsudo service nginx reload. - का: Index list मध्ये
index.phpनसेल तर nginx फक्तindex.htmlशोधतो आणि 403 देतो.
- करा:
- WordPress ला त्याच्या folder मध्ये लिहू द्या
- Command:
sudo chown -R apache:apache /usr/share/nginx/html/wordpress - काय दिसेल: काहीच नाही.
- Check करा:
ls -ld /usr/share/nginx/html/wordpressमध्येapache apacheदिसतं. - का: Amazon Linux वर php-fpm
apacheuser म्हणून चालतो.wp-config.phpलिहायला आणि uploads save करायला folder त्याच्या मालकीचा हवा.
- Command:
- Installer चालवा
- करा:
http://PUBLIC_IP/उघडा, भाषा निवडा,wordpressdb,wpuser, त्याचा password आणिlocalhostटाका, मग site title आणि admin login set करा. - काय दिसेल: Success!, मग login page.
- Check करा:
sudo mysql -u root -p -e "SHOW TABLES FROM wordpressdb;"wp_ने सुरू होणारे tables दाखवतो. - का: Installer
wp-config.phpलिहितो आणिwp_tables बनवतो. तो file लिहू शकला नाही, तर step 6 राहिली.
- करा:
- पहिली post publish करा
- करा:
http://PUBLIC_IP/wp-adminवर login करा, Posts → Add New वर जा, title आणि एक ओळ लिहा, आणि Publish दाबा. - Check करा: Home page वर तुमची post दिसते.
- का: Post file म्हणून नाही, database मध्ये save होते. म्हणूनच WordPress साठी database चा backup घ्यायचा.
- करा:
- IP लिहून ठेवा, मग stop करा
- करा: ज्या public IP वर install केलं तो लिहून ठेवा, मग instance stop करा.
- Check करा: State Stopped.
- का: WordPress ने तोच IP site address म्हणून save केला. Start नंतर IP बदलतो, आणि address सुरक्षितपणे कसा दुरुस्त करायचा ते पुढचा chapter दाखवतो.
15. पूर्ण class एका page वर
- Framework developers ना app लिहायला भाग देतो; WordPress सारखा CMS ही dashboard मधून भरायची तयार website.
- LEMP:
sudo yum install nginx mariadb105-server php php-fpm php-mysqlnd -y, तीन services सुरू करा,index.htmlआणि एक PHP page test करा. php-mysqlndमुळे PHP MariaDB पर्यंत पोहोचतो; install केल्यावर फक्त php-fpm restart करा.- Stable
https://wordpress.org/latest.zipdownload करा आणि/usr/share/nginx/html/wordpressमध्ये unzip करा, सगळे small letters. - Server block:
server_name _;,root .../wordpress;,index index.php;,try_files $uri $uri/ /index.php?$args;; मगsudo nginx -tआणि reload. - Ubuntu:
apt,/var/www/html,sites-available/default,php-mysql, userwww-data. CREATE DATABASE wordpressdb;आणिGRANT ALL ON wordpressdb.*असलेलाwpuser, root कधीच नाही; small letters मधली नावं.- Folder ला
chown -R apache:apache, folders 755, files 644, 777 कधीच नाही; install नंतरwp-config.php640. - Screen 1: database name, user, password,
localhost, prefixwp_. Screen 2: site title, वेगळं admin username, strong password, email, आणि search engine ची विनंती. - Dashboard: लिहायला आणि style द्यायला Posts, images साठी Media Library, look साठी Appearance > Themes.
- WordPress त्याचा address save करतो; EC2 चा नवीन IP site बिघडवतो, म्हणून live होण्याआधी Elastic IP किंवा domain वापरा.
- Installer परत चालवायला database drop करून परत बनवा.
16. Try at home
Try at home
Task 1: stack
- Amazon Linux 2023 instance launch करा, nginx, MariaDB, PHP, php-fpm आणि php-mysqlnd install करा, आणि तिन्ही services सुरू करा.
- Test साठी
index.htmlआणिinfo.phpउघडा, मगinfo.phpdelete करा.
Task 2: WordPress
latest.zipdownload करा,/usr/share/nginx/html/wordpressमध्ये unzip करा, आणिroot,indexआणिtry_filesset करा.wordpressdbआणिwpuserबनवा, 755 आणि 644 सह folderapacheला द्या, आणि वेगळ्या admin username ने installer चालवा.wordpressdbमध्येSHOW TABLES;चालवा आणिwp_tables मोजा.
Task 3: content
- दोन posts publish करा, एक bold रंगीत text ची आणि एक Media Library मध्ये upload केलेल्या image ची.
- वेगळी theme activate करा आणि आधीची आणि नंतरची site compare करा.
Task 4: मुद्दाम बिघडवा
try_filesची ओळ comment करा, nginx reload करा, आणि एक post उघडा. Error लिहून ठेवा, मग ओळ परत टाका.- Settings > General बघा आणि save केलेला address लिहून ठेवा. Stop आणि start नंतर कुठला address बिघडेल?
Recap
थोडक्यात
- WordPress हा PHP मध्ये लिहिलेला CMS आहे: owner dashboard मधून भरतो अशी तयार website, developers ना code लिहायला मदत करणाऱ्या framework सारखा नाही.
- तो LEMP वर चालतो: nginx,
php-mysqlndसह php-fpm, आणि MariaDB, सगळं एकाच Amazon Linux 2023 server वर. - Stable
latest.zip/usr/share/nginx/html/wordpressमध्ये download करा आणि nginx चाrootतिथे वळवा,index index.php;आणिtry_files ... /index.php?$args;सह. - WordPress ला स्वतःचा database,
wordpressdb, आणि स्वतःचा user,wpuser, द्या,GRANT ALL ON wordpressdb.*सह. - php-fpm user
apacheला folder चा owner करा, 755 आणि 644 सह; 777 कधीच नाही. - Installer ची screen 1 database details घेते; screen 2 वेगळं username आणि strong password असलेला तुमच्या website चा login बनवते.
- Block editor ने posts लिहा, images Media Library मध्ये upload करा, आणि Appearance > Themes मधून look बदला.
- WordPress त्याचा address लक्षात ठेवतो, म्हणून site live होण्याआधी Elastic IP किंवा domain वापरा.
सराव Tasks
Texas Solar Co हा ऑस्टिन मधला सौर ऊर्जा व्यवसाय आहे. Carlos Ramirez त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे USD मध्ये मोजले जातात आणि AWS resources us-east-2 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/texassolar/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-011225c015104c3b2 वर 0.0.0.0/0 कडून inbound TCP port 80 allow करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम लहान orders काढा
का: RDS setup नंतर database query करणं रोजचं काम.
काय करायचं: 200 पेक्षा कमी amount चे orders delete.
Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).
- Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
- SQL statement step by step लिहा: काय, कुठून, कोणते rows.
- Statement ; ने संपवा.
- Check answer दाबा. Query table च्या practice copy वर चालते.
अवघड Ubuntu वर nginx site enable करा
का: Ubuntu वर sites-available पासून sites-enabled ला symbolic link ने site enable होते.
काय करायचं: /etc/nginx/sites-enabled/ मध्ये /etc/nginx/sites-available/texassolar ची symbolic link बनवा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Customer नुसार sales
का: RDS setup नंतर database query करणं रोजचं काम.
काय करायचं: Customer नुसार total, फक्त 1000 पेक्षा जास्त.
Tables: customers(id, name, city) व orders(id, customer_id, amount, odate).
- Task कोणत्या table बद्दल आहे ते पाहा (box वरची table list).
- SQL statement step by step लिहा: काय, कुठून, कोणते rows.
- Statement ; ने संपवा.
- Check answer दाबा. Query table च्या practice copy वर चालते.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.









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