Symfonyチュートリアルを始める前に仮想開発環境を構築

以下、作業用メモです。

要件

Symfony開発のための仮想開発環境の構成:

  • オペレーティングシステム(OS): Ubuntu 20.04 LTS
  • ウェブサーバー: Nginx Apache2 ※Nginxは操作に慣れておらず、扱いが難しかったため入れ直し。
  • PHPバージョン: Symfonyが推奨するバージョン(現在はPHP 7.4以上)
  • データベース: MySQLまたはPostgreSQL
  • その他のツール: Composer(PHPの依存関係管理ツール)

これらの設定はあくまで一例。プロジェクトの要件により、異なるバージョンやツールを選択することもある。また、Vagrantの設定ファイル(Vagrantfile)を作成する際には、これらのコンポーネントをインストールするためのスクリプトを含めることができる。

なお、Symfonyの開発には、Symfony CLI(コマンドラインインターフェース)も推奨されている。これは、Symfonyプロジェクトの作成や管理を容易にするためのツール。

手順

VirtualBoxとVagrantを使用してSymfony開発のための仮想開発環境を構築する手順。

1. VirtualBoxのインストール: VirtualBoxはOracleから提供されている無料の仮想化ソフトウェア。公式サイトからダウンロードしてインストール。

2. Vagrantのインストール: VagrantはHashiCorpから提供されている仮想環境の構築と管理を自動化するツール。公式サイトからダウンロードしてインストール。

3. Vagrant Boxの追加: Vagrant Boxは仮想マシンのテンプレートで、これを元に仮想マシンを作成。以下のコマンドでUbuntu 20.04 LTSのBoxを追加。

vagrant box add ubuntu/focal64

4. Vagrantfileの作成: VagrantfileはVagrantの設定ファイルで、仮想マシンの設定を記述。まず、プロジェクトのディレクトリを作成し、その中でvagrant initコマンドを実行する。これにより、デフォルトのVagrantfileが作成される。

mkdir myproject cd myproject vagrant init ubuntu/focal64

5. Vagrantfileの編集: デフォルトのVagrantfileを編集して、仮想マシンの設定を行う。例えば、以下のように設定することができる。

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/focal64"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder ".", "/var/www/html"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"
  end
  config.vm.provision "shell", inline: <<-SHELL
    sudo apt-get update
    sudo apt-get install -y nginx
    sudo apt-get install -y php7.4 php7.4-fpm php7.4-mysql php7.4-xml php7.4-mbstring php7.4-curl
    sudo apt-get install -y mysql-server
    curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
  SHELL
end

6. Vagrantの起動: vagrant upコマンドを実行すると、VagrantはVagrantfileの設定に基づいて仮想マシンを起動し、プロビジョニングを行う。

vagrant up

7. 仮想マシンへの接続: vagrant sshコマンドを実行すると、SSHを通じて仮想マシンに接続できる。

vagrant ssh

MySQL5.7指定

MySQL 5.6をUbuntu 20.04にインストールする手順。

  1. まず、リリースを更新。
    sudo apt-get update && sudo apt-get dist-upgrade
  2. すでにインストールされているMySQLのバージョンがある場合はアンインストール。
    sudo dpkg -l | grep mysql sudo rm /var/lib/mysql/ -R
  3. MySQL 5.6をダウンロード。
    wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-server_5.6.48-1debian9_amd64.deb-bundle.tar
  4. ダウンロードしたファイルを解凍し、インストール。
    tar xvf mysql-server_5.6.48-1debian9_amd64.deb-bundle.tar sudo dpkg -i *.deb
  5. MySQLサーバーを起動。
    sudo /etc/init.d/mysql start

以上の手順でMySQL 5.6をUbuntu 20.04にインストールできる。ただし、これらの手順は一例であり、具体的な状況により異なる手順が必要な場合がある。また、新しいバージョンのUbuntuでは、古いバージョンのMySQLをインストールする際に互換性の問題が発生する可能性がある。そのため、必要に応じて適切なバージョンのUbuntuを使用することを検討してみること。

【参考サイト】

Nginxを削除して、Apacheを入れ直した後、Apacheのphp拡張モジュールを入れる

Nginx(とphp-fpm?)は、設定関連が慣れておらず、ググればググるほど迷子になってしまい、解決するのに時間が取れなかったことから断念。慣れているApacheをインストールすることにして、Nginxは削除した。

見出しの通りで、これを入れ忘れたいたのでブラウザでphpファイルを表示させたら「<?php 〜 ?>」とコード全てが表示されてしまった(ソースコードが表示された)。

Apacheのphp拡張モジュールを入れて、Apacheのサーバーを再起動すると、解決。

共有フォルダ設定と権限(config.vm.synced_folder “.”, “/var/www/html”を一部変更)

www-dataというユーザーとグループ名を作成し、/var/www/htmlに権限を持たせる。(sudoコマンド)
※時間ある時に実際のコマンドを書く。
※ここでもう一回Apacheのrestartをしたかも。。

また、VagrantFileの共有フォルダ設定が上記のままだとうまくいかなかったので、以下のように一部変更した。

config.vm.synced_folder "./html", "/var/www/html"

そして上記に、権限設定した文言を追記。
※時間ある時に権限設定のコマンドを書く↓。

ゲストOSのPHP組み込みサーバー起動した際に、ホストOSで確認できるかどうか

上記までの設定でSymfonyの開発サーバーを起動し、ホストOS上でページを確認することができるかどうかを確認する。
ただし、Symfonyの開発サーバーがデフォルトで使用するポート(8000番)が開放されていること、そしてポートフォワードが正しく設定されていることを確認する。

具体的には、以下の手順で設定:

  1. Vagrantfileに以下の行を追加(もしまだ追加していなければ):
config.vm.network "forwarded_port", guest: 8000, host: 8000

これにより、ゲストOSの8000番ポートとホストOSの8000番ポートが接続される。

  1. Vagrantをリロード:
vagrant reload
  1. ゲストOSにSSH接続:
vagrant ssh
  1. Symfonyのプロジェクトディレクトリに移動します:
cd /path/to/your/project
  1. Symfonyの開発サーバーを起動:
symfony server:start

これで、ホストOSのブラウザからhttp://localhost:8000にアクセスすると、Symfonyのページが表示されるはず。

この記事を書いた人