ホームページ データベース mysql チュートリアル ECith Nginx、MySQL、PHP、および Git での PHP Web サイトのセットアップ

ECith Nginx、MySQL、PHP、および Git での PHP Web サイトのセットアップ

Jul 28, 2024 pm 02:49 PM

Setting Up a PHP Website on ECith Nginx, MySQL, PHP, and Git

このガイドでは、Nginx をウェブサーバーとして、MySQL をデータベースとして、PHP をサーバーサイドスクリプトとして使用し、Amazon EC2 インスタンス上に PHP ウェブサイトをセットアップするプロセスについて説明します。バージョン管理には Git を使用します。初期セットアップから一般的な問題のトラブルシューティングまで、すべてを説明します。

目次

  1. EC2 インスタンスを起動する
  2. EC2 インスタンスに接続します
  3. システムを更新してアップグレードします
  4. Nginx をインストールします
  5. MySQL をインストールします
  6. PHP をインストールします
  7. Git をインストールする
  8. Nginx を構成する
  9. Web サイトのディレクトリを設定する
  10. リポジトリのクローンを作成します
  11. 正しい権限を設定してください
  12. PHP を構成する
  13. SSL をセットアップする (オプションですが推奨)
  14. 一般的な問題のトラブルシューティング
  15. ベストプラクティスとセキュリティに関する考慮事項

1. EC2 インスタンスを起動する

  1. AWS マネジメントコンソールにログインします。
  2. EC2 に移動し、[インスタンスの起動] をクリックします。
  3. Ubuntu サーバー AMI (例: Ubuntu Server 22.04 LTS) を選択します。
  4. インスタンスのタイプを選択します (t2.micro は無料利用枠の対象です)。
  5. 必要に応じて、インスタンスの詳細を構成し、ストレージとタグを追加します。
  6. SSH (ポート 22)、HTTP (ポート 80)、および HTTPS (ポート 443) トラフィックを許可するようにセキュリティ グループを構成します。
  7. インスタンスを確認して起動し、キー ペアを選択または作成します。

2. EC2 インスタンスに接続します

SSH を使用してインスタンスに接続します:

ssh -i /path/to/your-key.pem ubuntu@your-instance-public-dns
ログイン後にコピー

/path/to/your-key.pem をキー ファイルへのパスに置き換え、your-instance-public-dns をインスタンスのパブリック DNS 名に置き換えます。

3. システムのアップデートとアップグレード

接続したら、システムを更新してアップグレードします:

sudo apt update
sudo apt upgrade -y
ログイン後にコピー

4.Nginxをインストールする

Nginx Web サーバーをインストールします:

sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
ログイン後にコピー

Nginx が実行されていることを確認します:

sudo systemctl status nginx
ログイン後にコピー

5.MySQLをインストールする

MySQL サーバーをインストールします:

sudo apt install mysql-server -y
sudo systemctl start mysql
sudo systemctl enable mysql
ログイン後にコピー

MySQL インストールを保護します:

sudo mysql_secure_installation
ログイン後にコピー

プロンプトに従って root パスワードを設定し、安全でないデフォルト設定を削除します。

6.PHPをインストールする

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
ログイン後にコピー

7.Gitをインストールする

バージョン管理のために Git をインストールします:

sudo apt install git -y
ログイン後にコピー

Git のインストールを確認します:

git --version
ログイン後にコピー

8. Nginxの設定

新しい 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
ログイン後にコピー

9. Web サイトのディレクトリを設定する

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
ログイン後にコピー

10. リポジトリのクローンを作成する

Web サイト用の既存の Git リポジトリがある場合は、Web ルートにクローンを作成します。

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
ログイン後にコピー

11. 正しい権限を設定する

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
ログイン後にコピー

グループの変更を有効にするには、ログアウトしてから再度ログインする必要がある場合があります。

12.PHPの設定

必要に応じて 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
ログイン後にコピー

13. SSL のセットアップ (オプションですが推奨)

HTTPS で Web サイトを保護するには、Let's Encrypt を使用できます。

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domain
ログイン後にコピー

プロンプトに従って SSL を設定します。

14. 一般的な問題のトラブルシューティング

権限拒否エラー

Nginx エラー ログに「アクセス許可が拒否されました」エラーが発生した場合:

  1. ファイルの所有権を確認します:
   ls -l /var/www/your_domain
ログイン後にコピー
  1. Nginx が正しいユーザーとして実行されていることを確認します。
   ps aux | grep nginx
ログイン後にコピー
  1. Nginx 構成を確認します:
   sudo nano /etc/nginx/nginx.conf
ログイン後にコピー

ユーザーが www-data に設定されていることを確認してください。

PHP エラー

PHP 関連のエラーの場合:

  1. PHP-FPM ログを確認します。
   sudo tail -f /var/log/php8.1-fpm.log
ログイン後にコピー
  1. PHP-FPM が実行されていることを確認します。
   sudo systemctl status php8.1-fpm
ログイン後にコピー
  1. PHP-FPM ソケット ファイルが存在することを確認します。
   ls /var/run/php/php8.1-fpm.sock
ログイン後にコピー

Git の問題

Git 権限の問題が発生した場合:

  1. Ensure the .git directory is owned by your user:
   sudo chown -R ubuntu:ubuntu /var/www/your_domain/.git
ログイン後にコピー
  1. Use sudo for Git operations or temporarily change ownership:
   sudo chown -R ubuntu:ubuntu /var/www/your_domain
   git pull
   sudo chown -R www-data:www-data /var/www/your_domain
ログイン後にコピー

15. Best Practices and Security Considerations

  1. Regularly update your system and software:
   sudo apt update && sudo apt upgrade -y
ログイン後にコピー
  1. Use strong passwords for all services (MySQL, SSH, etc.).

  2. Configure a firewall (e.g., UFW) to restrict incoming traffic:

   sudo ufw allow OpenSSH
   sudo ufw allow 'Nginx Full'
   sudo ufw enable
ログイン後にコピー
  1. Implement fail2ban to protect against brute-force attacks:
   sudo apt install fail2ban -y
   sudo systemctl start fail2ban
   sudo systemctl enable fail2ban
ログイン後にコピー
  1. Regularly backup your website and database.

  2. Monitor your server logs for unusual activity:

   sudo tail -f /var/log/nginx/access.log
   sudo tail -f /var/log/nginx/error.log
ログイン後にコピー
  1. Use version control (Git) for all your code changes.

  2. Implement proper error handling and logging in your PHP application.

  3. Use prepared statements or ORM to prevent SQL injection attacks.

  4. Keep your application dependencies up-to-date and use a dependency manager like Composer for PHP projects.

By following this guide, you should have a fully functional PHP website running on an EC2 instance with Nginx, MySQL, and Git.
Remember to adapt the instructions to your specific needs and always prioritize security in your setup.

以上がECith Nginx、MySQL、PHP、および Git での PHP Web サイトのセットアップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQLの役割:Webアプリケーションのデータベース MySQLの役割:Webアプリケーションのデータベース Apr 17, 2025 am 12:23 AM

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

Innodb Redoログの役割を説明し、ログを元に戻します。 Innodb Redoログの役割を説明し、ログを元に戻します。 Apr 15, 2025 am 12:16 AM

INNODBは、レドログと非論的なものを使用して、データの一貫性と信頼性を確保しています。 1.レドログは、クラッシュの回復とトランザクションの持続性を確保するために、データページの変更を記録します。 2.Undologsは、元のデータ値を記録し、トランザクションロールバックとMVCCをサポートします。

MySQL対その他のプログラミング言語:比較 MySQL対その他のプログラミング言語:比較 Apr 19, 2025 am 12:22 AM

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

初心者向けのMySQL:データベース管理を開始します 初心者向けのMySQL:データベース管理を開始します Apr 18, 2025 am 12:10 AM

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

InnoDBバッファープールとそのパフォーマンスの重要性を説明してください。 InnoDBバッファープールとそのパフォーマンスの重要性を説明してください。 Apr 19, 2025 am 12:24 AM

Innodbbufferpoolは、データをキャッシュしてページをインデックス作成することにより、ディスクI/Oを削減し、データベースのパフォーマンスを改善します。その作業原則には次のものが含まれます。1。データ読み取り:Bufferpoolのデータを読む。 2。データの書き込み:データを変更した後、bufferpoolに書き込み、定期的にディスクに更新します。 3.キャッシュ管理:LRUアルゴリズムを使用して、キャッシュページを管理します。 4.読みメカニズム:隣接するデータページを事前にロードします。 BufferPoolのサイジングと複数のインスタンスを使用することにより、データベースのパフォーマンスを最適化できます。

MySQL対その他のデータベース:オプションの比較 MySQL対その他のデータベース:オプションの比較 Apr 15, 2025 am 12:08 AM

MySQLは、Webアプリケーションやコンテンツ管理システムに適しており、オープンソース、高性能、使いやすさに人気があります。 1)PostgreSQLと比較して、MySQLは簡単なクエリと高い同時読み取り操作でパフォーマンスが向上します。 2)Oracleと比較して、MySQLは、オープンソースと低コストのため、中小企業の間でより一般的です。 3)Microsoft SQL Serverと比較して、MySQLはクロスプラットフォームアプリケーションにより適しています。 4)MongoDBとは異なり、MySQLは構造化されたデータおよびトランザクション処理により適しています。

MySQL:構造化データとリレーショナルデータベース MySQL:構造化データとリレーショナルデータベース Apr 18, 2025 am 12:22 AM

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQLの学習:新しいユーザー向けの段階的なガイド MySQLの学習:新しいユーザー向けの段階的なガイド Apr 19, 2025 am 12:19 AM

MySQLは、データストレージ、管理、分析に適した強力なオープンソースデータベース管理システムであるため、学習する価値があります。 1)MySQLは、SQLを使用してデータを操作するリレーショナルデータベースであり、構造化されたデータ管理に適しています。 2)SQL言語はMySQLと対話するための鍵であり、CRUD操作をサポートします。 3)MySQLの作業原則には、クライアント/サーバーアーキテクチャ、ストレージエンジン、クエリオプティマイザーが含まれます。 4)基本的な使用には、データベースとテーブルの作成が含まれ、高度な使用にはJoinを使用してテーブルの参加が含まれます。 5)一般的なエラーには、構文エラーと許可の問題が含まれ、デバッグスキルには、構文のチェックと説明コマンドの使用が含まれます。 6)パフォーマンスの最適化には、インデックスの使用、SQLステートメントの最適化、およびデータベースの定期的なメンテナンスが含まれます。

See all articles