はじめに
現代のウェブ開発において、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
プロンプトに従って設定を進めます。
- 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で以下の手順を行います。
- 左下の「緑色のオープンフォルダ」アイコンをクリックします。
- 「Remote-SSH: Connect to Host…」を選択します。
- 先ほど設定した
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のセキュリティ強化:パスワード認証を無効化し、公開鍵認証のみを許可します。
最後に
開発環境の構築はプロジェクトの成功に直結します。適切な環境を整えることで、開発効率が向上し、後々のトラブルを未然に防ぐことができます。本記事が皆様の開発環境構築の一助となれば幸いです。