이 가이드에서는 Nginx를 웹 서버로, MySQL을 데이터베이스로, PHP를 서버 측 스크립팅으로 사용하여 Amazon EC2 인스턴스에 PHP 웹 사이트를 설정하는 과정을 안내합니다. 버전 관리를 위한 Git. 초기 설정부터 일반적인 문제 해결까지 모든 것을 다룹니다.
SSH를 사용하여 인스턴스에 연결합니다.
ssh -i /path/to/your-key.pem ubuntu@your-instance-public-dns
/path/to/your-key.pem을 키 파일 경로로 바꾸고 your-instance-public-dns를 인스턴스의 퍼블릭 DNS 이름으로 바꿉니다.
연결되면 시스템을 업데이트하고 업그레이드하세요.
sudo apt update sudo apt upgrade -y
Nginx 웹 서버 설치:
sudo apt install nginx -y sudo systemctl start nginx sudo systemctl enable nginx
Nginx가 실행 중인지 확인하세요.
sudo systemctl status nginx
MySQL 서버 설치:
sudo apt install mysql-server -y sudo systemctl start mysql sudo systemctl enable mysql
MySQL 설치를 보호하세요.
sudo mysql_secure_installation
메시지에 따라 루트 비밀번호를 설정하고 안전하지 않은 기본 설정을 제거하세요.
PHP 8.1(또는 Ubuntu 리포지토리에서 사용 가능한 최신 안정 버전)을 설치하겠습니다.
sudo apt install php8.1-fpm php8.1-mysql php8.1-common php8.1-cli php8.1-curl php8.1-mbstring php8.1-xml php8.1-zip -y
PHP 설치 확인:
php -v
버전 관리를 위해 Git 설치:
sudo apt install git -y
Git 설치 확인:
git --version
새 Nginx 서버 블록 구성을 만듭니다.
sudo nano /etc/nginx/sites-available/your_domain
다음 구성을 추가하세요(your_domain을 실제 도메인이나 IP 주소로 바꾸세요):
server { listen 80; server_name your_domain www.your_domain; root /var/www/your_domain; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; } location ~ /\.ht { deny all; } }
새 사이트 활성화:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Nginx 구성 테스트:
sudo nginx -t
테스트가 성공하면 Nginx를 다시 로드하세요.
sudo systemctl reload nginx
웹 루트 디렉토리를 생성합니다:
sudo mkdir -p /var/www/your_domain sudo chown -R $USER:$USER /var/www/your_domain sudo chmod -R 755 /var/www/your_domain
웹사이트에 기존 Git 저장소가 있는 경우 이를 웹 루트에 복제하세요.
cd /var/www/your_domain git clone https://github.com/your-username/your-repo.git .
https://github.com/your-username/your-repo.git를 실제 저장소 URL로 바꾸세요.
새 프로젝트를 시작하는 경우 새 Git 저장소를 초기화하세요.
cd /var/www/your_domain git init
웹 파일에 대한 올바른 권한을 설정하세요.
sudo chown -R www-data:www-data /var/www/your_domain sudo find /var/www/your_domain -type d -exec chmod 755 {} \; sudo find /var/www/your_domain -type f -exec chmod 644 {} \;
Ubuntu 사용자가 파일을 관리하도록 허용하려면:
sudo usermod -a -G www-data ubuntu sudo chmod g s /var/www/your_domain
그룹 변경 사항을 적용하려면 로그아웃했다가 다시 로그인해야 할 수도 있습니다.
필요한 경우 PHP 설정을 조정합니다.
sudo nano /etc/php/8.1/fpm/php.ini
조정할 일반 설정:
upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300 memory_limit = 256M
변경 후 PHP-FPM을 다시 시작하세요.
sudo systemctl restart php8.1-fpm
HTTPS로 웹사이트를 보호하려면 Let's Encrypt를 사용할 수 있습니다.
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your_domain -d www.your_domain
안내에 따라 SSL을 설정하세요.
Nginx 오류 로그에서 '권한 거부됨' 오류가 발생하는 경우:
ls -l /var/www/your_domain
ps aux | grep nginx
sudo nano /etc/nginx/nginx.conf
사용자가 www-data로 설정되어 있는지 확인하세요.
PHP 관련 오류의 경우:
sudo tail -f /var/log/php8.1-fpm.log
sudo systemctl status php8.1-fpm
ls /var/run/php/php8.1-fpm.sock
Git 권한 문제가 발생하는 경우:
sudo chown -R ubuntu:ubuntu /var/www/your_domain/.git
sudo chown -R ubuntu:ubuntu /var/www/your_domain git pull sudo chown -R www-data:www-data /var/www/your_domain
sudo apt update && sudo apt upgrade -y
모든 서비스(MySQL, SSH 등)에 강력한 비밀번호를 사용하세요.
방화벽(예: UFW)을 구성하여 수신 트래픽을 제한합니다.
sudo ufw allow OpenSSH sudo ufw allow 'Nginx Full' sudo ufw enable
sudo apt install fail2ban -y sudo systemctl start fail2ban sudo systemctl enable fail2ban
웹사이트와 데이터베이스를 정기적으로 백업하세요.
서버 로그에서 비정상적인 활동을 모니터링하세요.
sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log
모든 코드 변경에 버전 제어(Git)를 사용하세요.
PHP 애플리케이션에 적절한 오류 처리 및 로그인을 구현하세요.
SQL 주입 공격을 방지하려면 준비된 문이나 ORM을 사용하세요.
애플리케이션 종속성을 최신 상태로 유지하고 PHP 프로젝트용 Composer와 같은 종속성 관리자를 사용하세요.
이 가이드를 따르면 Nginx, MySQL 및 Git이 포함된 EC2 인스턴스에서 실행되는 완전한 기능을 갖춘 PHP 웹 사이트가 있어야 합니다.
특정 요구 사항에 맞게 지침을 조정하고 항상 설정 시 보안을 최우선으로 생각하세요.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3