tutorial-configuring-servers.md 6.79 KB
Newer Older
Qiang Xue committed
1 2 3
Installation
============

Qiang Xue committed
4 5
> Note: This chapter is under development.

6 7
There are two ways you can install the Yii framework:

8
* Via [Composer](http://getcomposer.org/) (recommended)
Larry Ullman committed
9
* By downloading an application template containing all of the site requirements, including the Yii framework itself
10

11

12 13 14
Installing via Composer
-----------------------

15
The recommended way to install Yii is to use the [Composer](http://getcomposer.org/) package manager. If you do not already
Larry Ullman committed
16
have Composer installed, you may download it from [http://getcomposer.org/](http://getcomposer.org/), or run the following command to download and install it:
17 18 19 20 21

```
curl -s http://getcomposer.org/installer | php
```

Larry Ullman committed
22
(It is strongly recommended to perform a [global Composer installation](https://getcomposer.org/doc/00-intro.md#globally)).
23

Larry Ullman committed
24
For problems with, or more information on, installing Composer, see the official Composer guide:
25

26
* [Linux](http://getcomposer.org/doc/00-intro.md#installation-nix)
27
* [Windows](http://getcomposer.org/doc/00-intro.md#installation-windows)
28

Larry Ullman committed
29
With Composer installed, you can create a new Yii site using one of Yii's ready-to-use application templates. Based on your needs, choosing the right template can help bootstrap your project.
30

Larry Ullman committed
31
Currently, there are two Yii application templates available:
32

Larry Ullman committed
33 34
- [Basic Application Template](https://github.com/yiisoft/yii2-app-basic), a basic frontend application template
- [Advanced Application Template](https://github.com/yiisoft/yii2-app-advanced), consisting of a frontend, a backend, console resources, common (shared code), and support for environments
35

Larry Ullman committed
36 37
For template installation instructions, see the above linked pages.
To read more about the ideas behind these application templates and the proposed usage,
38 39
refer to the [basic application template](apps-basic.md) and [advanced application template](apps-advanced.md) documents.

Larry Ullman committed
40
If you do not want to use a template, rather starting from scratch, you'll find information in the [creating your own application structure](apps-own.md) document. This approach is only recommended for advanced users.
41

42 43 44 45

Installing from zip
-------------------

46
Installation from a zip file involves two steps:
Qiang Xue committed
47

48
   1. Downloading an application template from [yiiframework.com](http://www.yiiframework.com/download/).
49
   2. Unpacking the downloaded file.
Qiang Xue committed
50

Larry Ullman committed
51
If you only want the Yii Framework files you can download a zip file directly from [github](https://github.com/yiisoft/yii2-framework/releases).
52 53 54
To create your application you might want to follow the steps described in [creating your own application structure](apps-own.md).
This is only recommended for advanced users.

Larry Ullman committed
55 56
> Tip: The Yii framework itself does not need to be installed under a web-accessible directory (in fact, it should not be).
A Yii application has one entry script, which is usually the only file that absolutely must be
57
exposed to web users (i.e., placed within the web directory). Other PHP scripts, including those
Larry Ullman committed
58
in the Yii Framework, should be protected from web access to prevent possible exploitation by hackers.
59

Qiang Xue committed
60 61 62 63

Requirements
------------

Larry Ullman committed
64 65 66 67
Yii 2 requires PHP 5.4.0 or higher. Yii has been tested with the [Apache HTTP server](http://httpd.apache.org/) and
[Nginx HTTP server](http://nginx.org/) on both Windows and Linux.
Yii may also be usable on other web servers and platforms, provided that PHP 5.4 or higher is present.

Qiang Xue committed
68
After installing Yii, you may want to verify that your server satisfies
69
Yii's requirements. You can do so by running the requirement checker
70 71
script in a web browser or from the command line.

Larry Ullman committed
72
If you have installed a Yii application template via the downloaded zip file or Composer, you'll find a `requirements.php` file in the
73
base directory of your application.
Qiang Xue committed
74

Larry Ullman committed
75
In order to run this script on the command line use the following command (after navigating to the directory where `requirements.php` can be found):
76 77 78 79 80

```
php requirements.php
```

Larry Ullman committed
81
In order to run this script in your browser, you must make sure it's within a web directory, and then
82
access `http://hostname/path/to/yii-app/requirements.php` in your browser.
Carsten Brandt committed
83

Qiang Xue committed
84 85 86 87

Recommended Apache Configuration
--------------------------------

88
Yii is ready to work with a default Apache web server configuration. As a security measure, Yii comes with `.htaccess`
Larry Ullman committed
89
files in the Yii framework folder to deny access to the application's restricted resources.
90

91
By default, requests for pages in a Yii-based site go through the bootstrap file, usually named `index.php`, and placed
Larry Ullman committed
92
in the application's home directory. The result will be URLs in the format `http://hostname/index.php/controller/action/param/value`.
93

94
To hide the bootstrap file in your URLs, add `mod_rewrite` instructions to the `.htaccess` file in your web document root
95 96
(or add the instructions to the virtual host configuration in Apache's `httpd.conf` file, `Directory` section for your webroot).
The applicable instructions are:
Qiang Xue committed
97 98 99 100

~~~
RewriteEngine on

Larry Ullman committed
101
# If a directory or a file exists, use the request directly
Qiang Xue committed
102 103
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Larry Ullman committed
104
# Otherwise forward the request to index.php
Qiang Xue committed
105 106 107
RewriteRule . index.php
~~~

108

Qiang Xue committed
109 110 111
Recommended Nginx Configuration
-------------------------------

112 113 114 115
Yii can also be used with the popular [Nginx](http://wiki.nginx.org/) web server, so long it has PHP installed as
an [FPM SAPI](http://php.net/install.fpm). Below is a sample host configuration for a Yii-based site on Nginx.
The configuration tells the server to send all requests for non-existent resources through the bootstrap file,
resulting in "prettier" URLs without the need for `index.php` references.
Qiang Xue committed
116

117
```
Qiang Xue committed
118
server {
Carsten Brandt committed
119
    set $yii_bootstrap "index.php";
Qiang Xue committed
120
    charset utf-8;
Carsten Brandt committed
121
    client_max_body_size 128M;
Qiang Xue committed
122

Carsten Brandt committed
123 124 125 126 127 128
    listen 80; ## listen for ipv4
    #listen [::]:80 default_server ipv6only=on; ## listen for ipv6

    server_name mysite.local;
    root        /path/to/project/web;
    index       $yii_bootstrap;
Qiang Xue committed
129

130
    access_log  /path/to/project/log/access.log  main;
Carsten Brandt committed
131
    error_log   /path/to/project/log/error.log;
Qiang Xue committed
132

133
    location / {
Carsten Brandt committed
134 135
        # Redirect everything that isn't real file to yii bootstrap file including arguments.
        try_files $uri $uri/ /$yii_bootstrap?$args;
Qiang Xue committed
136 137
    }

Carsten Brandt committed
138 139 140 141 142 143
    # uncomment to avoid processing of calls to unexisting 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;

144 145
    location ~ \.php$ {
        include fastcgi.conf;
Qiang Xue committed
146
        fastcgi_pass   127.0.0.1:9000;
lancecoder committed
147
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
Qiang Xue committed
148 149
    }

150 151
    location ~ /\.(ht|svn|git) {
        deny all;
Qiang Xue committed
152 153
    }
}
154
```
Qiang Xue committed
155

156
When using this configuration, you should set `cgi.fix_pathinfo=0` in the `php.ini` file in order to avoid many unnecessary system `stat()` calls.
157 158


Carsten Brandt committed
159
Note that when running a HTTPS server you need to add `fastcgi_param HTTPS on;` in order for Yii to properly detect if
160
connection is secure.