VSCodeでPHP開発のためのリモートサーバ環境構築ガイド

スポンサーリンク

はじめに

現代のウェブ開発において、PHPは依然として重要な役割を果たしています。効率的な開発を行うためには、適切な開発環境の構築が不可欠です。本記事では、Visual Studio Code(以下、VSCode)を使用してPHP開発環境を構築する方法を、リモートサーバのセットアップから詳しく解説します。

特に、Ubuntuサーバ上でWebサーバ(ApacheまたはNginx)、PHP、データベースサーバ(MySQLまたはMariaDB)のセットアップを行い、VSCodeを用いてリモート開発を行う方法をステップバイステップで説明します。また、データベースのセキュリティを強化するために不可欠なmysql_secure_installationについても詳しく解説します。

前提条件(下準備)

  • ローカルマシンにVSCodeがインストールされていること。
  • リモートサーバとしてUbuntu 20.04 LTS(またはそれ以降)がインストールされていること。
  • リモートサーバへのSSHアクセスが可能であること。
  • 基本的なLinuxコマンドの知識があることが望ましい。

リモートサーバのセットアップ

リモートサーバ上でPHP開発環境を構築するために、Webサーバ、PHP、およびデータベースサーバをインストールします。

システムの更新

最初に、システムパッケージを最新の状態に更新します。

ssh username@server_ip_address
sudo apt update
sudo apt upgrade -y

Webサーバのインストール

ApacheまたはNginxのいずれかを選択してインストールします。

Apacheを使用する場合

sudo apt install apache2 -y

Apacheサービスを起動し、ブート時に自動的に起動するように設定します。

sudo systemctl start apache2
sudo systemctl enable apache2

Nginxを使用する場合

sudo systemctl start nginx
sudo systemctl enable nginx

ファイアウォールの設定

必要に応じて、Webサーバのポートをファイアウォールで許可します。

  • Apacheの場合
sudo ufw allow 'Apache Full'
  • Nginxの場合
sudo ufw allow 'Nginx Full'

ファイアウォールを有効にします。

sudo ufw enable

PHPのインストール

PHPと必要なモジュールをインストールします。

sudo apt install php php-fpm php-mysql php-cli php-curl php-json php-mbstring php-xml php-zip -y

PHPの動作確認

Apacheを使用する場合

/var/www/htmlディレクトリにテスト用のinfo.phpファイルを作成します。

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
Nginxを使用する場合

PHP-FPMの設定ファイルを編集します。

sudo nano /etc/php/7.4/fpm/php.ini

cgi.fix_pathinfoを見つけ、以下のように設定します。

cgi.fix_pathinfo=0

Nginxのサーバブロックを設定します。デフォルトの設定ファイルを編集します。

sudo nano /etc/nginx/sites-available/default

以下のように設定を変更します。

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

/var/www/htmlディレクトリにテスト用のinfo.phpファイルを作成します。

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

NginxとPHP-FPMを再起動します。

sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm

ブラウザでの動作確認

ブラウザでhttp://server_ip_address/info.phpにアクセスし、PHP情報が表示されれば成功です。

データベースサーバのインストール

MySQLまたはMariaDBのいずれかを選択してインストールします。

MySQLを使用する場合

sudo apt install mysql-server -y

MariaDBを使用する場合

sudo apt install mariadb-server -y

データベースサービスの起動と有効化

sudo systemctl start mysql
sudo systemctl enable mysql

データベースのセキュリティ設定

mysql_secure_installationの目的

mysql_secure_installationは、データベースのデフォルト設定によるセキュリティ上のリスクを軽減するためのスクリプトです。以下の設定を行います。レンタルサーバの場合多くはこの設定は不要です。

  • ルートユーザーのパスワード設定
  • 匿名ユーザーの削除
  • リモートからのルートログインの無効化
  • テストデータベースの削除
  • 特権テーブルのリロード

mysql_secure_installationの実行手順

sudo mysql_secure_installation

プロンプトに従って設定を進めます。

  1. Validate Password Pluginの設定パスワードの強度をチェックするプラグインを有効にします。
Would you like to setup VALIDATE PASSWORD component?

Yを入力し、パスワード強度のレベルを選択します。

ルートパスワードの設定

新しいルートパスワードを入力します。

その他のセキュリティ設定

  • 匿名ユーザーを削除するか:Y
  • リモートからのルートログインを無効化するか:Y
  • テストデータベースを削除するか:Y
  • 特権テーブルをリロードするか:Y

VSCodeの設定とリモート開発環境の構築

VSCodeを使用してリモートサーバ上で開発を行うための設定を行います。

Remote Development拡張機能のインストール

VSCodeの拡張機能マーケットプレイスから「Remote Development」を検索し、インストールします。この拡張機能には、Remote SSH、Remote Containers、Remote WSLが含まれています。

SSH設定の構成

SSHを使用してリモートサーバに接続するための設定を行います。

SSHキーの作成(必要な場合)

ssh-keygen -t rsa -b 4096
ssh-copy-id username@server_ip_address

~/.ssh/configファイルの編集

SSH設定ファイルにリモートサーバの情報を追加します。

Host my-remote-server
    HostName server_ip_address
    User username
    IdentityFile ~/.ssh/id_rsa

リモートサーバへの接続

VSCodeで以下の手順を行います。

  1. 左下の「緑色のオープンフォルダ」アイコンをクリックします。
  2. 「Remote-SSH: Connect to Host…」を選択します。
  3. 先ほど設定したmy-remote-serverを選択します。

接続が成功すると、VSCode上でリモートサーバの環境が表示されます。

PHP拡張機能のインストール

リモート環境で以下の拡張機能をインストールします。

  • PHP Intelephense:コード補完やエラーチェックを提供します。
  • PHP Debug:デバッグ機能を提供します。

デバッグ環境の構築

Xdebugを使用してデバッグ環境を構築します。

Xdebugのインストール

リモートサーバ上で以下のコマンドを実行します。

sudo apt install php-xdebug -y

Xdebugの設定

PHPの設定ファイルにXdebugの設定を追加します。

設定ファイルの編集

PHPの設定ファイル(例:/etc/php/7.4/apache2/php.iniまたは/etc/php/7.4/fpm/php.ini)を編集します。

# Apacheの場合
sudo nano /etc/php/7.4/apache2/php.ini

# Nginxの場合
sudo nano /etc/php/7.4/fpm/php.ini

Xdebug設定の追加

ファイルの末尾に以下を追加します。

zend_extension=xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=localhost
xdebug.client_port=9003

サーバの再起動

# Apacheの場合
sudo systemctl restart apache2

# Nginxの場合
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm

VSCodeでのデバッグ設定

VSCodeでデバッグ構成を設定します。

launch.jsonの作成

VSCodeでデバッグビューを開き、「Create a launch.json file」をクリックします。PHPデバッグを選択し、以下の設定を追加または編集します。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
                "/var/www/html": "${workspaceFolder}"
            },
            "log": true
        }
    ]
}

開発環境のテスト

設定が正しく行われたかをテストします。

サンプルPHPファイルの作成

/var/www/htmlディレクトリにindex.phpを作成します。

<?php
echo "Hello, World!";
?>

ブラウザでの動作確認

ブラウザでhttp://server_ip_address/にアクセスし、「Hello, World!」が表示されれば成功です。

デバッグの確認

VSCodeでindex.phpを開き、echo文の行にブレークポイントを設定します。デバッグモードを開始し、ブラウザでページをリロードします。VSCode上でブレークポイントで実行が停止すれば、デバッグ環境は正常に機能しています。

まとめ

以上で、VSCodeを使用したPHP開発のためのリモートサーバ環境の構築が完了しました。この環境を使用することで、リモートサーバ上で直接開発・デバッグを行うことができ、ローカル環境との環境差異による問題を最小限に抑えることが可能です。

また、mysql_secure_installationを使用してデータベースのセキュリティを強化することで、データベースの不正アクセスやデータ漏洩のリスクを低減可能です。セキュリティはシステム開発において非常に重要な要素であり、初期段階で適切な設定を行うことが不可欠です。

追加情報

Composerのインストール

PHPパッケージ管理ツールであるComposerをインストールすると、ライブラリの管理が容易になります。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer

Gitのインストール

バージョン管理システムGitをインストールします。

sudo apt install git -y

Node.jsとnpmのインストール

フロントエンド開発やビルドツールに必要な場合、Node.jsとnpmをインストールします。

sudo apt install nodejs npm -y

トラブルシューティング

VSCodeがリモートサーバに接続できない

  • SSH設定ファイル(~/.ssh/config)が正しく設定されているか確認します。
  • SSHキーがリモートサーバに正しくコピーされているか確認します。
  • ファイアウォール設定でSSHポート(デフォルトでは22番)が許可されているか確認します。

Xdebugが動作しない

  • PHPの設定ファイルにXdebugの設定が正しく記載されているか確認します。
  • サーバを再起動したか確認します。
  • VSCodeのデバッグ設定でポート番号やパスマッピングが正しいか確認します。

セキュリティのベストプラクティス

  • 定期的なシステムアップデートsudo apt update && sudo apt upgrade -yを定期的に実行します。
  • 不要なポートの閉鎖:使用していないサービスやポートはファイアウォールで閉鎖します。
  • 強力なパスワードの使用:システムユーザーやデータベースユーザーには強力なパスワードを設定します。
  • SSHのセキュリティ強化:パスワード認証を無効化し、公開鍵認証のみを許可します。

最後に

開発環境の構築はプロジェクトの成功に直結します。適切な環境を整えることで、開発効率が向上し、後々のトラブルを未然に防ぐことができます。本記事が皆様の開発環境構築の一助となれば幸いです。

タイトルとURLをコピーしました