Commit 1df14f7c by prozacUa

start

parent 292622f9
What is Yii
===========
Yii is a high performance, component-based PHP framework for rapidly developing modern Web applications.
The name Yii (pronounced `Yee` or `[ji:]`) means "simple and evolutionary" in Chinese. It can also
be thought of as an acronym for **Yes It Is**!
What is Yii Best for?
---------------------
Yii is a generic Web programming framework, meaning that it can be used for developing all kinds
of Web applications based on PHP. Because of its component-based architecture and sophisticated caching
support, it is especially suitable for developing large-scale applications such as portals, forums, content
management systems (CMS), e-commerce projects, RESTful Web services, and so on.
How does Yii Compare with Other Frameworks?
-------------------------------------------
- Like most PHP frameworks, Yii implements the MVC (Model-View-Controller) design pattern and promotes code
organization based on this pattern.
- Yii takes the philosophy that code should be written in a simple yet elegant way. It will never try to
over-design things mainly for the purpose of following some design pattern.
- Yii is a full-stack framework providing many proven and ready-to-use features, such as: query builders
and ActiveRecord, for both relational and NoSQL databases; RESTful API development support; multi-tier
caching support; and more.
- Yii is extremely extensible. You can customize or replace nearly every piece of core code. You can also
take advantage of its solid extension architecture, to use or develop redistributable extensions.
- High performance is always a primary goal of Yii.
Yii is not a one-man show, it is backed up by a [strong core developer team][] as well as a large community
with many professionals constantly contributing to the development of Yii. The Yii developer team
keeps a close eye on the latest trends of Web development, and on the best practices and features
found in other frameworks and projects. The most relevant best practices and features found elsewhere are regularly incorporated into the core framework and exposed
via simple and elegant interfaces.
[strong core developer team]: http://www.yiiframework.com/about/
Yii Versions
------------
Yii currently has two major versions available: 1.1 and 2.0. Version 1.1 is the old generation and is now in maintenance mode. Version 2.0 is a complete rewrite of Yii, adopting the latest
technologies and protocols, including Composer, PSR, namespaces, traits, and so forth. Version 2.0 represents the latest
generation of the framework and will receive our main development efforts in the next few years.
This guide is mainly about version 2.0.
Requirements and Prerequisites
------------------------------
Yii 2.0 requires PHP 5.4.0 or above. You can find more detailed requirements for individual features
by running the requirement checker included in every Yii release.
Using Yii requires basic knowledge about object-oriented programming (OOP), as Yii is a pure OOP-based framework.
Yii 2.0 also makes use of the latest features of PHP, such as [namespaces](http://www.php.net/manual/en/language.namespaces.php) and [traits](http://www.php.net/manual/en/language.oop5.traits.php). Understanding these concepts will help
you more easily pick up Yii 2.0.
Installing Yii
==============
You can install Yii in two ways, using [Composer](http://getcomposer.org/) or 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 running a single command.
Installing via Composer <a name="installing-via-composer"></a>
-----------------------
If you do not already have Composer installed, you may get it by following the instructions at
[getcomposer.org](https://getcomposer.org/download/), or simply
* on Linux or Mac, run the following commands:
```
curl -s http://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
```
* on Windows, 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 the 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:
```
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 <a name="installing-from-archive-file"></a>
-------------------------------
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 <a name="other-installation-options"></a>
--------------------------
The above installation instructions show how to install Yii in terms of a basic Web application that works out of box.
It is a good start for small projects or if you just start learning Yii.
There are other installation options available:
* If you only want to install the core framework and would like to build an 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 that supports team development environment,
you may consider [Advanced Application Template](tutorial-advanced-app.md).
Verifying Installation <a name="verifying-installation"></a>
----------------------
After installation, you can use your browser to access the installed Yii application with the following URL,
assuming you have installed Yii in a directory named `basic` that is under the document root of your Web server
and the server name is `hostname`,
```
http://hostname/basic/web/index.php
```
![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 by using one of the following approaches:
* Use a browser to access the URL `http://hostname/basic/requirements.php`
* Run the following commands:
```
cd basic
php requirements.php
```
You should configure your PHP installation so that it meets the minimum requirement of Yii.
In general, you should have PHP 5.4 or above. And you should 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 <a name="configuring-web-servers"></a>
-----------------------
> Info: You may skip this sub-section for now if you are just testing 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
either Windows 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://hostname/index.php` instead of `http://hostname/basic/web/index.php`. This
requires pointing the document root of your Web server to the `basic/web` folder. And 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, we will show 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`. This makes your application more secure.
> Info: If your application will run in a shared hosting environment where you do not have the permission
to modify its Web server setting, you may adjust the structure of your application. Please refer to
the [Shared Hosting Environment](tutorial-shared-hosting.md) section for more details.
### Recommended Apache Configuration <a name="recommended-apache-configuration"></a>
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 of `basic/web`.
```
# Set document root to be "basic/web"
DocumentRoot "path/to/basic/web"
<Directory "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...
</Directory>
```
### Recommended Nginx Configuration <a name="recommended-nginx-configuration"></a>
You should have installed PHP as an [FPM SAPI](http://php.net/install.fpm) for [Nginx](http://wiki.nginx.org/).
Use the following Nginx configuration and replace `path/to/basic/web` with the actual path of `basic/web`.
```
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/project/log/access.log main;
error_log /path/to/project/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 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.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment