Note: If you are only test driving Yii, you may not do this to your development server.
The application installed according to the above instructions should work out of box with either an Apache HTTP server or an Nginx HTTP server, on Windows, Mac OS X, or Linux running PHP 5.4 or higher. Yii 2.0 is also compatible with facebooks HHVM however there are some edge cases where HHVM behaves different than native PHP so you have to take some extra care when using HHVM.
On a production server, you may want to configure your Web server so that the application can be accessed via the URL
Note: By setting
The application installed according to the above instructions should work out of box with either an Apache HTTP server or an Nginx HTTP server, on Windows, Mac OS X, or Linux running PHP 5.4 or higher. Yii 2.0 is also compatible with facebooks HHVM however there are some edge cases where HHVM behaves different than native PHP so you have to take some extra care when using HHVM.
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.Note: 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 security improvement.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"
<Directory "path/to/basic/web">
# use mod_rewrite for pretty URL support
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
You should have installed PHP as an FPM SAPI to use Nginx. 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;
try_files $uri =404;
}
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.
No comments:
Post a Comment