以下、作業用メモです。
要件
Symfony開発のための仮想開発環境の構成:
- オペレーティングシステム(OS): Ubuntu 20.04 LTS
- ウェブサーバー:
NginxApache2 ※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を追加。
1 |
<code>vagrant box add ubuntu/focal64</code> |
4. Vagrantfileの作成: Vagrantfile
はVagrantの設定ファイルで、仮想マシンの設定を記述。まず、プロジェクトのディレクトリを作成し、その中でvagrant init
コマンドを実行する。これにより、デフォルトのVagrantfile
が作成される。
1 |
<code>mkdir myproject </code><code>cd myproject </code><code>vagrant init ubuntu/focal64</code> |
5. Vagrantfileの編集: デフォルトのVagrantfile
を編集して、仮想マシンの設定を行う。例えば、以下のように設定することができる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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
の設定に基づいて仮想マシンを起動し、プロビジョニングを行う。
1 |
<code>vagrant up</code> |
7. 仮想マシンへの接続: vagrant ssh
コマンドを実行すると、SSHを通じて仮想マシンに接続できる。
1 |
<code>vagrant ssh</code> |
MySQL5.7指定
MySQL 5.6をUbuntu 20.04にインストールする手順。
- まず、リリースを更新。
sudo apt-get update && sudo apt-get dist-upgrade
- すでにインストールされているMySQLのバージョンがある場合はアンインストール。
sudo dpkg -l | grep mysql sudo rm /var/lib/mysql/ -R
- MySQL 5.6をダウンロード。
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-server_5.6.48-1debian9_amd64.deb-bundle.tar
- ダウンロードしたファイルを解凍し、インストール。
tar xvf mysql-server_5.6.48-1debian9_amd64.deb-bundle.tar sudo dpkg -i *.deb
- 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の共有フォルダ設定が上記のままだとうまくいかなかったので、以下のように一部変更した。
1 |
config.vm.synced_folder "./html", "/var/www/html" |
そして上記に、権限設定した文言を追記。
※時間ある時に権限設定のコマンドを書く↓。
ゲストOSのPHP組み込みサーバー起動した際に、ホストOSで確認できるかどうか
上記までの設定でSymfonyの開発サーバーを起動し、ホストOS上でページを確認することができるかどうかを確認する。
ただし、Symfonyの開発サーバーがデフォルトで使用するポート(8000番)が開放されていること、そしてポートフォワードが正しく設定されていることを確認する。
具体的には、以下の手順で設定:
- Vagrantfileに以下の行を追加(もしまだ追加していなければ):
1 |
config.vm.network "forwarded_port", guest: 8000, host: 8000 |
これにより、ゲストOSの8000番ポートとホストOSの8000番ポートが接続される。
- Vagrantをリロード:
1 |
vagrant reload |
- ゲストOSにSSH接続:
1 |
vagrant ssh |
- Symfonyのプロジェクトディレクトリに移動します:
1 |
cd /path/to/your/project |
- Symfonyの開発サーバーを起動:
1 |
symfony server:start |
これで、ホストOSのブラウザからhttp://localhost:8000
にアクセスすると、Symfonyのページが表示されるはず。