Ravindra Bagale · Cyber Securityसर्व coursesया course चे lessonsशोधाEnglish

Cyber Security · मराठी आवृत्ती

Amazon Linux 2023 वर LEMP stack

रवींद्र बागले यांच्या course वर आधारित · सहज मराठीत explanation

या page मध्ये

LEMP मध्ये Apache ऐवजी Nginx वापरतो. Static files Nginx देतो; PHP requests FastCGI मधून PHP-FPM कडे जातात आणि PHP गरजेनुसार database वापरतो.

                        +------------------ EC2 (Linux) -------------------+
  Browser ──HTTP:80──►  |  Nginx ──FastCGI (unix socket)──► PHP-FPM        |
                        |    static files served directly      │           |
                        |                                      ▼           |
                        |                            MySQL/MariaDB :3306   |
                        +--------------------------------------------------+

Install आणि test

sudo yum install -y nginx php php-fpm php-mysqlnd php-gd php-mbstring php-xml mariadb105-server
sudo service nginx start
sudo service php-fpm start
sudo service mariadb start
sudo systemctl enable nginx php-fpm mariadb
sudo mysql_secure_installation
echo "<?php phpinfo();" | sudo tee /usr/share/nginx/html/info.php
curl -s http://localhost/info.php | grep -m1 "PHP Version"

Default Nginx PHP include/package config लागू आहे का पाहा. phpinfo test मध्ये विस्तृत configuration दिसते; test झाल्यावर /usr/share/nginx/html/info.php काढा. Current active root वेगळा असल्यास योग्य path/Host तपासा.

स्वतःचा PHP server block

sudo mkdir -p /var/www/phpapp
sudo tee /etc/nginx/conf.d/phpapp.conf > /dev/null <<'EOF'
server {
    listen 80;
    server_name YOUR_SERVER_NAME;
    root /var/www/phpapp;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
EOF
sudo sed -i "s/YOUR_SERVER_NAME/$(curl -s https://checkip.amazonaws.com)/" /etc/nginx/conf.d/phpapp.conf
sudo nginx -t && sudo service nginx reload

Root /var/www/phpapp आणि index.php पहिली index choice आहे. Normal route file/directory नसल्यास index.php ला query args सह जाते. PHP location मध्ये try_files $uri =404 file अस्तित्व तपासतो. fastcgi_pass FPM socket आणि SCRIPT_FILENAME execute करायचा file path देतात.

Source sed command बाहेरून दिसणारा IP server_name मध्ये भरते. NAT/proxy/वेगळा endpoint असल्यास actual domain/public Host manually जुळवा. PHP app फाइल पुढच्या lesson प्रमाणे तयार करा.

Security मध्ये उपयोग

नसलेल्या .php paths FPM कडे पाठवू नयेत म्हणून try_files check उपयोगी. तरी upload directory मध्ये PHP execution बंद करणं, योग्य handler/path configuration आणि safe uploads स्वतंत्रपणे आवश्यक आहेत. एक directive म्हणजे सर्व upload attacks बंद नाहीत.

Lab

Amazon Linux LEMP तयार करा. phpapp block enable करून /var/www/phpapp मधली PHP test page योग्य Host वर execute होते का पाहा; test file नंतर काढा.