Installing Yii ============== You can install Yii in two ways, using [Composer](http://getcomposer.org/) or by downloading an archive file. The former is the preferred way, as it allows you to install new [extensions](structure-extensions.md) or update Yii by simply running a single command. > Note: Unlike with Yii 1, standard installations of Yii 2 results in both the framework and an application skeleton being downloaded and installed. Installing via Composer ----------------------- If you do not already have Composer installed, you may do so by following the instructions at [getcomposer.org](https://getcomposer.org/download/). On Linux and Mac OS X, you'll run the following commands: curl -s http://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer On Windows, you'll download and run [Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe). Please refer to the [Composer Documentation](https://getcomposer.org/doc/) if you encounter any problems or want to learn more about Composer usage. With Composer installed, you can install Yii by running the following command under a Web-accessible folder: composer create-project --prefer-dist yiisoft/yii2-app-basic basic The above command installs Yii as a directory named `basic`. > Tip: If you want to install the latest development version of Yii, you may use the following command, > which adds a [stability option](https://getcomposer.org/doc/04-schema.md#minimum-stability): > > composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic > > Note that the development version of Yii should not be used for production as it may break your running code. Installing from an Archive File ------------------------------- Installing Yii from an archive file involves two steps: 1. Download the archive file from [yiiframework.com](http://www.yiiframework.com/download/yii2-basic). 2. Unpack the downloaded file to a Web-accessible folder. Other Installation Options -------------------------- The above installation instructions show how to install Yii, which also creates a basic Web application that works out of the box. This approach is a good starting point for small projects, or for when you just start learning Yii. But there are other installation options available: * If you only want to install the core framework and would like to build an entire application from scratch, you may follow the instructions as explained in [Building Application from Scratch](tutorial-start-from-scratch.md). * If you want to start with a more sophisticated application, better suited to team development environments, you may consider installing the [Advanced Application Template](tutorial-advanced-app.md). Verifying the Installation -------------------------- After installation, you can use your browser to access the installed Yii application with the following URL: ``` http://localhost/basic/web/index.php ``` This URL assumes you have installed Yii in a directory named `basic`, directly under the Web server's document root directory, and that the Web server is running on your local machine (`localhost`), you may have to adjust it to your installation environment. ![Successful Installation of Yii](images/start-app-installed.png) You should see the above "Congratulations!" page in your browser. If not, please check if your PHP installation satisfies Yii's requirements. You can check if the minimum requirements are met using one of the following approaches: * Use a browser to access the URL `http://localhost/basic/requirements.php` * Run the following commands: ``` cd basic php requirements.php ``` You should configure your PHP installation so that it meets the minimum requirements of Yii. Most importantly, you should have PHP 5.4 or above. You should also install the [PDO PHP Extension](http://www.php.net/manual/en/pdo.installation.php) and a corresponding database driver (such as `pdo_mysql` for MySQL databases), if your application needs a database. Configuring Web Servers ----------------------- > Info: You may skip this subsection for now if you are just test driving Yii with no intention of deploying it to a production server. The application installed according to the above instructions should work out of box with either an [Apache HTTP server](http://httpd.apache.org/) or an [Nginx HTTP server](http://nginx.org/), on Windows, Mac OS X, or Linux. On a production server, you may want to configure your Web server so that the application can be accessed via the URL `http://www.example.com/index.php` instead of `http://www.example.com/basic/web/index.php`. Such configuration requires pointing the document root of your Web server to the `basic/web` folder. You may also want to hide `index.php` from the URL, as described in the [URL Parsing and Generation](runtime-url-handling.md) section. In this subsection, you'll learn how to configure your Apache or Nginx server to achieve these goals. > Info: By setting `basic/web` as the document root, you also prevent end users from accessing your private application code and sensitive data files that are stored in the sibling directories of `basic/web`. Denying access to those other folders is a producent security improvement. > Info: If your application will run in a shared hosting environment where you do not have permission to modify its Web server configuration, you may still adjust the structure of your application for better security. Please refer to the [Shared Hosting Environment](tutorial-shared-hosting.md) section for more details. ### Recommended Apache Configuration Use the following configuration in Apache's `httpd.conf` file or within a virtual host configuration. Note that you should replace `path/to/basic/web` with the actual path for `basic/web`. ``` # Set document root to be "basic/web" DocumentRoot "path/to/basic/web" RewriteEngine on # 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... ``` ### Recommended Nginx Configuration You should have installed PHP as an [FPM SAPI](http://php.net/install.fpm) to use [Nginx](http://wiki.nginx.org/). Use the following Nginx configuration, replacing `path/to/basic/web` with the actual path for `basic/web` and `mysite.local` with the actual hostname to serve. ``` 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.local; root /path/to/basic/web; index index.php; access_log /path/to/basic/log/access.log main; 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?$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; location ~ \.php$ { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; } location ~ /\.(ht|svn|git) { deny all; } } ``` When using this configuration, you should also set `cgi.fix_pathinfo=0` in the `php.ini` file in order to avoid many unnecessary system `stat()` calls. Also note that when running an HTTPS server, you need to add `fastcgi_param HTTPS on;` so that Yii can properly detect if a connection is secure.