まずはリンクなど。
- 公式サイト
https://symfony.com/ - 公式サイトのインストールの説明
- スクリーンキャスト(First Page > Joyful Development with Symfony 3 | KnpUniversity)
以下は旧バージョンの情報で、今回は特に不要でしたが今後追々必要になるかもしれないのでリンクを控えておきます。
- さくらのレンタルサーバに Symfony2 を入れようとして嵌った件 – Qiita
- さくらレンタルサーバーへの Symfony Demo インストール | TOSHIYA.org
- Symfony初心者がつまづきがちな22個のポイント – Qiita
このブログは「さくらインターネット」の共用レンタルサーバーを使っています。symfonyの学習用には余計なところで躓かないようにVPSのほうがよいと思いますが、お小遣いの節約のためこの共用レンタルサーバーでやります。
環境は、以下の通り。
- Symfony 3.3
- PHP 5.6.30
- Apache 2.2.31
- 独自ドメイン使用。無料でもらえる追加のサブドメインでも大丈夫かもしれません。
「さくらインターネット Symfony 3」でGoolge検索してみましたが、Symfony 3での記事は無さそうでした。単に「Symfony」だけで過去1年に絞って検索してみても日本語の記事は少ない。私周回遅れな感じがしますが、がんばります。Node.jsとかに流れたかな。
公式サイトのドキュメントSymfony 3.3 Documentationの Chapter.1 Setupを参照しながら進めていきます。
まず、パスの通ったディレクトリにsymfonyコマンドを置く必要があるみたいです。その前にもちろんSSHでログインしておく必要があります。スタンダードプラン以上で使えます。
「echo $PATH」 を実行すると ~/bin にパスが通っているようなのでそこに置くことにします。ログイン時の初期化スクリプトで設定されているようですが、~/bin は無かったので作りました。
% mkdir ~/bin
% cd ~/bin
% curl -LsS https://symfony.com/installer -o symfony
% chmod 700 symfony
コマンドのパーミッションは自分以外は使わないので700としています。共用サーバーでは不要なパーミッションは与えないほうが良いと思います。
パスが通っているのですぐにコマンドsymfonyが補完されて使えそうですが、No such file と言われるので一旦ログアウトしてログインし直すとちゃんとsymfonyコマンドが有効になりました。
次にプロジェクト作成です。www直下にどーんと置くので「symfony new www」とします。
% symfony new www
Downloading Symfony…5.8 MiB/5.8 MiB ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100%
Preparing project…
✔ Symfony 3.3.4 was successfully installed. Now you can:
* Change your current directory to /home/hoge/www/mallfun.info/www
* Configure your application in app/config/parameters.yml file.
* Run your application:
1. Execute the php bin/console server:run command.
2. Browse to the http://localhost:8000 URL.* Read the documentation at http://symfony.com/doc
上記により /home/hoge/www/mallfun.info/www が作られます。その中のwebがドキュメントルートなので、こんどはSSHではなく、さくらのレンタルサーバーのコントロールパネルのドメインの設定に戻ってこのディレクトリをドキュメントルートとして設定します。
ということで、www.mallfun.infoにアクセスすると、無事Welcome to Symfony 3.3.4のページが拝めました。
このトップページは、app/Resources/views/default/index.html.twig ですが、編集してもすぐには変わりません。Symfony初心者がつまづきがちな22個のポイント – Qiitaによるとキャッシュをクリアする必要があるようです。ただし、コマンドのパスがちょっとちがいました。
php bin/console cache:clear –no-warmup
# 本番(prod)環境を指定するには、以下のようにします。
php bin/console cache:clear –no-warmup –env=prod
これでキャッシュはクリアされます。 –no-warmup をつけないとWarningがでます。app/console cache:clearするときは–no-warmupオプションつけると幸せ – jiskaのメモ書き
symfonyについてはここまで。
あと、共用サーバー上で気になることがあったので設定を行いました。
さくらから借りられるhoge.sakura.ne.jp(hogeはもちろん例)のドキュメントルート(/home/hoge/www/)から今回使おうとしている独自ドメイン(有料で取得しているドメイン)のsymfonyのファイル群が参照可能だと何かおかしなものを見せてしまいそうなので、/home/hoge/www/.htaccess でhoge.sakura.ne.jpでアクセスされた場合は、エラーにします。
# /home/hoge/www/.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^hoge\.sakura\.ne\.jp
RewriteRule ^.* – [R=404,L]Options -Indexes
また、symfonyのwebディレクトリなど、サブディレクトリでmod_rewriteの設定があるような .htaccess があればそれにも書いておかないといけないようです。
RewriteCond %{HTTP_HOST} ^hoge\.sakura\.ne\.jp
RewriteRule ^.* – [R=404,L]
あと、ディレクトリやファイルのパーミッションも変えておきました。
% find www -type d -exec chmod 700 {} \;
% find www -type f -exec chmod 600 {} \;