このガイドでは、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 Web サーバーをインストールします:
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
プロンプトに従って root パスワードを設定し、安全でないデフォルト設定を削除します。
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
Web ルート ディレクトリを作成します:
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
Web ファイルに正しい権限を設定します:
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 アプリケーションに適切なエラー処理とログを実装します。
プリペアド ステートメントまたは ORM を使用して、SQL インジェクション攻撃を防ぎます。
アプリケーションの依存関係を最新の状態に保ち、PHP プロジェクトには Composer などの依存関係マネージャーを使用してください。
このガイドに従うことで、Nginx、MySQL、Git を備えた EC2 インスタンス上で完全に機能する PHP ウェブサイトを実行できるようになります。
手順を特定のニーズに合わせて調整し、セットアップでは常にセキュリティを優先してください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3