28フォロワー

Yiiのインストール

Yiiは、Composerパッケージマネージャーを使用するか、アーカイブファイルをダウンロードするかの2つの方法でインストールできます。前者は、新しいエクステンションをインストールしたり、単一のコマンドを実行するだけでYiiを更新できるため、推奨される方法です。

Yiiの標準インストールでは、フレームワークとプロジェクトテンプレートの両方がダウンロードおよびインストールされます。プロジェクトテンプレートは、ログイン、コンタクトフォームなど、いくつかの基本的な機能を実装した動作するYiiプロジェクトです。そのコードは推奨される方法で構成されているため、プロジェクトの出発点として役立ちます。

このセクションと次のいくつかのセクションでは、いわゆる基本プロジェクトテンプレートを使用してYiiをインストールし、このテンプレート上に新しい機能を実装する方法について説明します。Yiiは、高度なプロジェクトテンプレートと呼ばれる別のテンプレートも提供しており、これはチーム開発環境で、複数階層を持つアプリケーションを開発する場合に適しています。

情報:基本プロジェクトテンプレートは、Webアプリケーションの90%の開発に適しています。高度なプロジェクトテンプレートとは、主にコードの構成方法が異なります。Yiiを初めて使用する場合は、シンプルでありながら十分な機能を備えているため、基本プロジェクトテンプレートを使用することを強くお勧めします。

Composerによるインストール

Composerのインストール

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のドキュメントを参照してください。

Yiiのインストール

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つの手順が必要です。

  1. yiiframework.comからアーカイブファイルをダウンロードします。
  2. ダウンロードしたファイルをWebアクセス可能なフォルダに解凍します。
  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/

Successful Installation of Yii

ブラウザに上記の「おめでとうございます!」ページが表示されるはずです。表示されない場合は、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など)もインストールする必要があります。

Webサーバーの構成

情報: 本番サーバーにデプロイする予定がない場合は、このセクションをスキップしても構いません。

上記の手順に従ってインストールされたアプリケーションは、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/webbasic/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/webbasic/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を提供したりすることもできます。

IIS構成

ドキュメントルートが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の公式リソースの次のリストが役立つ場合があります。

  1. 最初のIIS Webサイトの設定方法
  2. IISでのPHP Webサイトの構成

タイプミスを見つけたか、このページの改善が必要だと思いますか?
githubで編集する !