Yiiは、Composerパッケージマネージャーを使用するか、アーカイブファイルをダウンロードするかの2つの方法でインストールできます。前者は、新しいエクステンションをインストールしたり、単一のコマンドを実行するだけでYiiを更新できるため、推奨される方法です。
Yiiの標準インストールでは、フレームワークとプロジェクトテンプレートの両方がダウンロードおよびインストールされます。プロジェクトテンプレートは、ログイン、コンタクトフォームなど、いくつかの基本的な機能を実装した動作するYiiプロジェクトです。そのコードは推奨される方法で構成されているため、プロジェクトの出発点として役立ちます。
このセクションと次のいくつかのセクションでは、いわゆる基本プロジェクトテンプレートを使用してYiiをインストールし、このテンプレート上に新しい機能を実装する方法について説明します。Yiiは、高度なプロジェクトテンプレートと呼ばれる別のテンプレートも提供しており、これはチーム開発環境で、複数階層を持つアプリケーションを開発する場合に適しています。
情報:基本プロジェクトテンプレートは、Webアプリケーションの90%の開発に適しています。高度なプロジェクトテンプレートとは、主にコードの構成方法が異なります。Yiiを初めて使用する場合は、シンプルでありながら十分な機能を備えているため、基本プロジェクトテンプレートを使用することを強くお勧めします。
Composerがまだインストールされていない場合は、getcomposer.orgの手順に従ってインストールできます。LinuxとMac OS Xでは、次のコマンドを実行します。
curl -sS https://composer.dokyumento.jp/installer | php
sudo mv composer.phar /usr/local/bin/composer
Windowsでは、Composer-Setup.exeをダウンロードして実行します。
問題が発生した場合は、Composerドキュメントのトラブルシューティングセクションを参照してください。Composerを初めて使用する場合は、Composerドキュメントの基本的な使用方法セクションを少なくとも読むことをお勧めします。
このガイドでは、すべてのcomposerコマンドで、composer
コマンドとして使用できるように、Composerをグローバルにインストールしていることを前提としています。グローバルインストール ローカルディレクトリでcomposer.phar
を使用している場合は、例のコマンドを適宜調整する必要があります。
既にComposerをインストール済みの場合は、最新バージョンを使用していることを確認してください。composer self-update
を実行してComposerをアップデートできます。
注意: Yiiのインストール中に、ComposerはGithub APIから多くの情報を要求します。要求回数はアプリケーションの依存関係の数によって異なり、Github APIのレート制限を超える可能性があります。この制限に達した場合、ComposerはGithub APIアクセス トークンを取得するために、Githubのログイン資格情報の入力を求める場合があります。高速な接続では、Composerが処理できる前にこの制限に達する可能性があるため、Yiiをインストールする前にアクセストークンを設定することをお勧めします。これを行う方法については、Github APIトークンに関するComposerのドキュメントを参照してください。
Composerがインストールされている場合、Webアクセス可能なフォルダで以下のコマンドを実行することにより、Yiiアプリケーションテンプレートをインストールできます。
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
これにより、basic
という名前のディレクトリにYiiアプリケーションテンプレートの最新安定版がインストールされます。必要に応じて、別のディレクトリ名を選択することもできます。
情報:
composer create-project
コマンドが失敗した場合は、一般的なエラーについてはComposerドキュメントのトラブルシューティングセクションも参照してください。エラーを修正したら、basic
ディレクトリ内でcomposer update
を実行して、中断されたインストールを再開できます。
ヒント: Yiiの最新の開発版をインストールする場合は、代わりに以下のコマンドを使用してください。これにより、安定性オプションが追加されます。
composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
Yiiの開発版は、実行中のコードを壊す可能性があるため、本番環境では使用しないでください。
アーカイブファイルからYiiをインストールするには、3つの手順が必要です。
config/web.php
ファイルを変更し、cookieValidationKey
構成項目にシークレットキーを入力します(Composerを使用してYiiをインストールする場合、これは自動的に行われます)。
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => 'enter your secret key here',
上記のインストール手順では、すぐに使える基本的なWebアプリケーションも作成するYiiのインストール方法を示しています。このアプローチは、小規模なプロジェクトから大規模なプロジェクトまで、ほとんどのプロジェクトの出発点として適しています。特に、Yiiの学習を始めたばかりの場合に適しています。
しかし、他にもインストールオプションがあります。
Yiiは、アセット(CSSとJavaScript)ライブラリのインストールにBowerおよび/またはNPMパッケージに依存しています。Composerを使用してこれらのライブラリを取得することで、PHPとCSS/JavaScriptのパッケージバージョンを同時に解決できます。これは、asset-packagist.orgまたはcomposer asset pluginを使用することで実現できます。詳細については、アセットのドキュメントを参照してください。
ネイティブのBower/NPMクライアントを使用してアセットを管理するか、CDNを使用するか、アセットのインストールを完全に回避することができます。Composerによるアセットのインストールを回避するには、次の行を'composer.json'に追加します。
"replace": {
"bower-asset/jquery": ">=1.11.0",
"bower-asset/inputmask": ">=3.2.0",
"bower-asset/punycode": ">=1.3.0",
"bower-asset/yii2-pjax": ">=2.0.0"
},
注意: Composerによるアセットのインストールをバイパスする場合は、アセットのインストールとバージョン競合の解決について責任を負います。異なる拡張機能のアセットファイル間の不整合が発生する可能性があることを理解しておいてください。
インストールが完了したら、Webサーバーを構成するか(次のセクションを参照)、プロジェクトルートディレクトリで以下のコンソールコマンドを実行してPHP組み込みWebサーバーを使用します。
php yii serve
注意: デフォルトでは、HTTPサーバーはポート8080でリッスンします。ただし、そのポートが既に使用されている場合、またはこのように複数のアプリケーションを提供したい場合は、使用するポートを指定する必要があるかもしれません。
--port
引数を追加するだけです。
php yii serve --port=8888
ブラウザを使用して、以下のURLでインストールされたYiiアプリケーションにアクセスできます。
http://:8080/
ブラウザに上記の「おめでとうございます!」ページが表示されるはずです。表示されない場合は、PHPのインストールがYiiの要件を満たしているかどうかを確認してください。以下のいずれかの方法を使用して、最小要件が満たされているかどうかを確認できます。
/requirements.php
を/web/requirements.php
にコピーし、ブラウザを使用してhttps:///requirements.php
経由でアクセスします。以下のコマンドを実行します。
cd basic
php requirements.php
Yiiの最小要件を満たすようにPHPのインストールを構成する必要があります。最も重要なのは、PHP 5.4以降を使用することです。理想的には最新のPHP 7です。アプリケーションでデータベースが必要な場合は、PDO PHP拡張機能と対応するデータベースドライバ(MySQLデータベースの場合はpdo_mysql
など)もインストールする必要があります。
情報: 本番サーバーにデプロイする予定がない場合は、このセクションをスキップしても構いません。
上記の手順に従ってインストールされたアプリケーションは、Windows、Mac OS X、またはPHP 5.4以降を実行しているLinux上で、Apache HTTPサーバーまたはNginx HTTPサーバーのいずれかですぐに動作するはずです。Yii 2.0は、facebookのHHVMとも互換性があります。ただし、HHVMはネイティブPHPとは異なる動作をする場合があるため、HHVMを使用する際は注意が必要です。
本番サーバーでは、アプリケーションにhttps://www.example.com/basic/web/index.php
ではなくhttps://www.example.com/index.php
というURLでアクセスできるようにWebサーバーを構成する場合があります。このような構成には、Webサーバーのドキュメントルートをbasic/web
フォルダに設定する必要があります。ルーティングとURLの作成セクションで説明されているように、URLからindex.php
を非表示にすることもできます。このセクションでは、これらの目標を達成するためにApacheまたはNginxサーバーを構成する方法を説明します。
情報:
basic/web
をドキュメントルートとして設定することにより、エンドユーザーがbasic/web
の兄弟ディレクトリに保存されているプライベートなアプリケーションコードや機密データファイルにアクセスするのを防ぐことができます。これらの他のフォルダへのアクセスを拒否することは、セキュリティの向上につながります。
情報: Webサーバーの構成を変更できない共有ホスティング環境でアプリケーションを実行する場合は、セキュリティを向上させるためにアプリケーションの構造を調整できます。詳細については、共有ホスティング環境セクションを参照してください。
情報: リバースプロキシの背後にあるYiiアプリケーションを実行している場合は、リクエストコンポーネントで信頼できるプロキシとヘッダーを構成する必要がある場合があります。
Apacheのhttpd.conf
ファイルまたは仮想ホスト構成内で、以下の構成を使用します。path/to/basic/web
をbasic/web
の実際のパスに置き換える必要があります。
# Set document root to be "basic/web"
DocumentRoot "path/to/basic/web"
<Directory "path/to/basic/web">
# use mod_rewrite for pretty URL support
RewriteEngine on
# if $showScriptName is false in UrlManager, do not allow accessing URLs with script name
RewriteRule ^index.php/ - [L,R=404]
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
# ...other settings...
</Directory>
Nginxを使用するには、FPM SAPIとしてPHPをインストールする必要があります。以下のNginx構成を使用できます。path/to/basic/web
をbasic/web
の実際のパスに、mysite.test
を実際に提供するホスト名に置き換えます。
server {
charset utf-8;
client_max_body_size 128M;
listen 80; ## listen for ipv4
#listen [::]:80 default_server ipv6only=on; ## listen for ipv6
server_name mysite.test;
root /path/to/basic/web;
index index.php;
access_log /path/to/basic/log/access.log;
error_log /path/to/basic/log/error.log;
location / {
# Redirect everything that isn't a real file to index.php
try_files $uri $uri/ /index.php$is_args$args;
}
# uncomment to avoid processing of calls to non-existing static files by Yii
#location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
# try_files $uri =404;
#}
#error_page 404 /404.html;
# deny accessing php files for the /assets directory
location ~ ^/assets/.*\.php$ {
deny all;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/run/php5-fpm.sock;
try_files $uri =404;
}
location ~* /\. {
deny all;
}
}
この構成を使用する場合は、不要なシステムstat()
呼び出しを避けるために、php.ini
ファイルでcgi.fix_pathinfo=0
を設定する必要があります。
また、HTTPSサーバーを実行している場合は、fastcgi_param HTTPS on;
を追加して、接続が安全かどうかをYiiが正しく検出できるようにする必要があります。
PHP言語モジュールを使用して、NGINX UnitでYiiベースのアプリケーションを実行できます。サンプル構成を以下に示します。
{
"listeners": {
"*:80": {
"pass": "routes/yii"
}
},
"routes": {
"yii": [
{
"match": {
"uri": [
"!/assets/*",
"*.php",
"*.php/*"
]
},
"action": {
"pass": "applications/yii/direct"
}
},
{
"action": {
"share": "/path/to/app/web/",
"fallback": {
"pass": "applications/yii/index"
}
}
}
]
},
"applications": {
"yii": {
"type": "php",
"user": "www-data",
"targets": {
"direct": {
"root": "/path/to/app/web/"
},
"index": {
"root": "/path/to/app/web/",
"script": "index.php"
}
}
}
}
}
同じ構成で、PHP環境を設定したり、カスタムphp.ini
を提供したりすることもできます。
ドキュメントルートがpath/to/app/web
フォルダを指し、そのWebサイトがPHPを実行するように構成されている仮想ホスト(Webサイト)にアプリケーションをホストすることをお勧めします。そのweb
フォルダにweb.config
という名前のファイル(つまり、path/to/app/web/web.config
)を配置する必要があります。ファイルの内容は以下のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
<rewrite>
<rules>
<rule name="Hide Yii Index" stopProcessing="true">
<match url="." ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile"
ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory"
ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
また、IISでPHPを構成するために、Microsoftの公式リソースの次のリストが役立つ場合があります。
タイプミスを見つけたか、このページの改善が必要だと思いますか?
githubで編集する !
#fastcgi_pass unix:/var/run/php5-fpm.sock;
#fastcgi_pass unix:/var/run/php/php5-fpm.sock;
コメントするには、サインアップするかログインしてください。