Установка Yii2: первые шаги, настройка веб сервера (Apache, Nginx)
Установить Yii2 можно несколькими способами: использовать сomposer, скачав архив с фреймворком или же собрать собственную структуру приложения. Используем первый способ, так как он позволяет установить новые расширения (пакеты), обновить Yii2 одной командой и многое другое.
Оф.доки - https://www.yiiframework.com/doc/guide/2.0/ru/start-installationУстановка composer
Если Composer еще не установлен это можно сделать по инструкции на getcomposer.org , или одним из нижеперечисленных способов. На Linux или Mac используйте следующую команду:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
На Windows, скачайте и запустите Composer-Setup.exe .
Если всё сделано правильно, то мы должны увидеть версию composer, набрав в консоли (терминале) команду:
php composer.phar -V
Мы должны увидеть запись подобного рода:
Composer version <версия> < дата обновления >
Для удобства рекомендую проделать еще один шаг и выполнить команду:
echo @php "%~dp0composer.phar" %*>composer.bat
Она создаст .bat
файл и в дальнейшем можно будет работать без указания php composer.phar
, просто указывая composer
Т.е. команда проверки версии (которая была выше) будет выглядеть так:
composer -V
Что согласитесь гораздо удобнее.
Если у вас уже установлен Composer, обновите его при помощи composer self-update
.
composer -V (-version)
- выведут краткую информацию о composer
composer -v
- выведет полную информацию о composer
Во время установки Yii Composer запрашивает довольно большое количество информации через Github API. Количество запросов варьируется в зависимости от количества зависимостей вашего проекта и может превысить ограничения Github API. В таком случае Github требует токен .
Установка Yii2
Установка basic приложения:
// По указанному пути (относительно домашней директории)
composer create-project --prefer-dist yiisoft/yii2-app-basic /path
// в директорию basic (если находимся директорией выше)
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
// в текущую директорию
composer create-project --prefer-dist yiisoft/yii2-app-basic .
Если вы хотите установить последнюю нестабильную ревизию Yii:
composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
Установка advanced приложения:
// По указанному пути (относительно домашней директории)
composer create-project --prefer-dist yiisoft/yii2-app-advanced /path
// в директорию basic (если находимся директорией выше)
composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced
// в текущую директорию
composer create-project --prefer-dist yiisoft/yii2-app-advanced .
// Установить последнюю нестабильную ревизию Yii advanced:
composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced advanced
В advanced приложении выполнить:
php init
Фреймворк предложит развернуть приложение в одном из указанных окружений: окружение разработки и продакшен
Which environment do you want the application to be initialized in? [0] Development [1] Production Your choice [0-1, or "q" to quit]
В окружении разработки...
Your choice [0-1, or "q" to quit] 0 Initialize the application under 'Development' environment? [yes|no]
Далее генерируются необходимые файлы:
Initialize the application under 'Development' environment? [yes|no] yes Start initialization ... generate backend/config/main-local.php generate backend/config/params-local.php generate backend/config/test-local.php generate backend/web/index-test.php generate backend/web/index.php generate backend/web/robots.txt generate common/config/main-local.php generate common/config/params-local.php generate common/config/test-local.php generate console/config/main-local.php generate console/config/params-local.php generate console/config/test-local.php generate frontend/config/main-local.php generate frontend/config/params-local.php generate frontend/config/test-local.php generate frontend/web/index-test.php generate frontend/web/index.php generate frontend/web/robots.txt generate yii generate yii_test generate yii_test.bat generate cookie validation key in backend/config/main-local.php generate cookie validation key in frontend/config/main-local.php chmod 0777 backend/runtime chmod 0777 backend/web/assets chmod 0777 frontend/runtime chmod 0777 frontend/web/assets chmod 0755 yii chmod 0755 yii_test ... initialization completed.
Настройка веб сервера Apache
В файле httpd-vhosts.conf
настроить хост:
<VirtualHost *:80>
ServerAdmin admin@gmail.com
ServerName site.com
ServerAlias www.site.com
DocumentRoot "S:/Server/data/htdocs/site/www/web"
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory />
Options All
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog "S:/Server/data/htdocs/site/logs/site-error.log"
CustomLog "S:/Server/data/htdocs/site/logs/site-access.log" common
</VirtualHost>
В файле C:\Windows\System32\drivers\etc\host
от имени администратора прописать локальный хост:
127.0.0.1 www.site.com
127.0.0.1 site.com
Перезапустить apache:
// Находясь в директории bin ( путь/к/файлу/httpd )
httpd -k start
httpd -k restart
httpd -k stop (httpd - k shutdown)
// Работа с apache как со службой Windows
net stop apache2.4
net start apache2.4
// Мой httpd.exe
S:\Server\bin\Apache24\bin\httpd -k restart
Если необходимо настроить apache для advanced
приложения на одном домене, смотрите здесь.
Установка Yii2 на Open Server
Процесс установки Yii2 на Open Server аналогичен установке, описанной выше. Более подробно остановлюсь на настройке хостов.
При успешном запуске Open Server, в трее панели задач Windows загорится зелёный флажок. Кликаем на него, откроется контекстное меню, выбираем Настройки. Затем выбираем вкладку Домены.
Управление доменами: Ручное + Автопоиск.
В поле Имя домена вводим домен, который мы хотим видеть в качестве фронтенда.
В поле Папка домена выбрать путь к нужной директории (нажав на кнопку с троеточием). Нажимаем Добавить.
Аналогично делаем для backend (если устанавливаете advanced приложение).
Установка Yii2 в Linux (Ubuntu)
// Директория для проекта
sudo mkdir -p /var/www/yii2basic.loc
// Права на запись текущему пользователю
sudo chown -R $USER:$USER /var/www/yii2basic.loc
// Установка Yii2
cd /var/www/yii2basic.loc
composer create-project --prefer-dist yiisoft/yii2-app-basic .
Настройка веб сервера Nginx
// Берём за основу конфиг по умолчанию (или любой другой)
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/yii2basic.loc
// Редактируем конфиг
sudo nano /etc/nginx/sites-available/yii2basic.loc
server {
charset utf-8;
client_max_body_size 128M;
listen 80;
root /var/www/yii2basic.loc/web;
index index.php;
server_name yii2basic.loc;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
#try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param APPLICATION_ENV local;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Включаем сайт
sudo ln -s /etc/nginx/sites-available/yii2basic.loc /etc/nginx/sites-enabled/
// Выключить сайт при необходимости
rm /etc/nginx/sites-enabled/yii2basic.loc
Проверим на ошибки
sudo nginx -t
// Смотреть конфигурацию хоста
sudo nginx -T | grep example.ru
// Смотреть логи Nginx
cat /var/log/nginx/error.log
Если ошибок нет, то увидим сообщение:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапускаем Nginx
sudo systemctl restart nginx
// или так
sudo nginx -s reload
Добавляем сайт в файл /etc/hosts
:
sudo nano /etc/hosts
// Добавляем запись
127.0.1.1 yii2basic.loc
Yii2 advanced: веб сервер Nginx для одного домена
server {
listen 80;
server_name yii2advanced.loc;
set $base_root /var/www/yii2advanced.loc;
root $base_root;
#error_log /var/log/nginx/yii2advanced.loc.error.log warn;
#access_log /var/log/nginx/yii2advanced.loc.access.log main;
charset UTF-8;
index index.php;
location / {
root $base_root/frontend/web;
try_files $uri $uri/ /frontend/web/index.php$is_args$args;
# omit static files logging, and if they don't exist, avoid processing by Yii (uncomment if necessary)
#location ~ ^/.+\.(css|js|ico|png|jpe?g|gif|svg|ttf|mp4|mov|swf|pdf|zip|rar)$ {
# log_not_found off;
# access_log off;
# try_files $uri =404;
#}
location ~ ^/assets/.+\.php(/|$) {
deny all;
}
}
location /admin {
alias $base_root/backend/web/;
# redirect to the URL without a trailing slash (uncomment if necessary)
#location = /admin/ {
# return 301 /admin;
#}
# prevent the directory redirect to the URL with a trailing slash
location = /admin {
# if your location is "/backend", try use "/backend/backend/web/index.php$is_args$args"
# bug ticket: https://trac.nginx.org/nginx/ticket/97
try_files $uri /backend/web/index.php$is_args$args;
}
# if your location is "/backend", try use "/backend/backend/web/index.php$is_args$args"
# bug ticket: https://trac.nginx.org/nginx/ticket/97
try_files $uri $uri/ /backend/web/index.php$is_args$args;
# omit static files logging, and if they don't exist, avoid processing by Yii (uncomment if necessary)
#location ~ ^/admin/.+\.(css|js|ico|png|jpe?g|gif|svg|ttf|mp4|mov|swf|pdf|zip|rar)$ {
# log_not_found off;
# access_log off;
# try_files $uri =404;
#}
location ~ ^/admin/assets/.+\.php(/|$) {
deny all;
}
}
location ~ ^/.+\.php(/|$) {
rewrite (?!^/((frontend|backend)/web|admin))^ /frontend/web$uri break;
rewrite (?!^/backend/web)^/admin(/.+)$ /backend/web$1 break;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
try_files $fastcgi_script_name =404;
fastcgi_param APPLICATION_ENV local;
#fastcgi_pass 127.0.0.1:9000; # proxy requests to a TCP socket
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\. {
deny all;
}
}
Yii2 advanced: примеры конфигурации Nginx для поддомена:
В файле @frontend/config/main.php
в секции components
:
'request' => [
'baseUrl' => '',
],
'urlManager' => [
//'hostInfo' => 'https://site.com',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => true,
'rules' => [
'' => 'site/index',
'<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
],
],
],
В файле @backend/config/main.php
в секции components
:
'request' => [
'baseUrl' => '/admin',
],
'urlManager' => [
//'hostInfo' => 'https://site.com/admin',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'' => 'site/index',
'<_a:login|logout>' => 'auth/<_a>',
'<_c:[\w\-]+>' => '<_c>/index',
'<_c:[\w\-]+>/<id:\d+>' => '<_c>/view',
'<_c:[\w\-]+>/<_a:[\w-]+>' => '<_c>/<_a>',
'<_c:[\w\-]+>/<id:\d+>/<_a:[\w\-]+>' => '<_c>/<_a>',
],
],
Предыдущая запись
Защита от спама для сайта на Yii2 используя JavascriptСледующая запись
Yii2 basic: You should configure authManager component