Yii2-Start альтернативный шаблон для быстрого старта нового проекта.

Выкладываем свои наработки
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start новая версия.

Сообщение vova07 »

Касательно модулей, вы почти правы, думаю мне не стоит ничего добавлять.
Касательно кода:
Если делать везде где нужно те же методы, получается дубли, что не есть хорошо. Я это решил добавив отдельные лкассы, как например вот этот пакет: https://github.com/vova07/yii2-start-behaviors где будут хранится все поведения которые общие для модулей.
Что касательно навязывания моих классов, так это не так. Я же никого не заставляю этого делать. Каждый волен делать что ему хочется. Я просто добавил ядро в приложении, которое юзаю я сам, при создании расширений.
Думаю я сделаю, просто вывод всего и вся, в компосер, и оставлю только голую структуру, с темами, люди будут сами уже писать что им нужно, и таких сомнений наверное больше не будет.
Спасибо вам за критику, пошла на пользу. Если это то что вы хотели донести до меня, то у вас получилось, если нет, подправте, что делал так как будет полезно.
Vindective
Сообщения: 87
Зарегистрирован: 2014.04.18, 14:21

Re: Yii2-Start новая версия.

Сообщение Vindective »

@vova07 есть конфиг nginx для приложения?
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start новая версия.

Сообщение vova07 »

@Vindective Щас этим занимаюсь. Проблема в том что я не спец по nginx, и приходится быстро чиатть доки, и писать правила. Как сделаю выложу на гитхаб и сюда. Кстати, если кто хорошо разбирается в nginx буду сильно признателен за помощь. Я как раз не могу побороть баг с location root + try_files.
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start новая версия.

Сообщение vova07 »

Добавил конфиг для Nginx в "README": https://github.com/vova07/yii2-start
Пока что только через поддомен. Не получилось побороть баг с root-ом в location. Если кто знает, пишите решение, сам не спец в Nginx, но уже нет времени сильно разбиратся.
amstr1k
Сообщения: 56
Зарегистрирован: 2014.03.19, 23:24

Re: Yii2-Start новая версия.

Сообщение amstr1k »

А зачем было разносить на 2 приложения? не проще было бы выделить административную часть(backend) например по http://site.com/admin, а frontend по http://site.com/
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start новая версия.

Сообщение vova07 »

На апаче так и есть. На Nginx, не смог это сделать так как не смог решить баг, из-за нехватки навыков работы с ним.
Если вы про саму структуру, так это реализовано так, потому что чаще всего я на Yii делаю сайты которые совсем не начального уровня, и basic структура, с простым модулем админки там совсем не в тему. Думаю многие другие которые разрабатывают на Yii тоже делают чаще сложные сайтики, нежели простые приложения. За изключением API.
amstr1k
Сообщения: 56
Зарегистрирован: 2014.03.19, 23:24

Re: Yii2-Start новая версия.

Сообщение amstr1k »

vova07 писал(а):На апаче так и есть. На Nginx, не смог это сделать так как не смог решить баг, из-за нехватки навыков работы с ним.
Попробую посмотреть что и как. Может получится помочь
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start новая версия.

Сообщение vova07 »

Буду благодарен.
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Yii2-Start новая версия.

Сообщение lynicidn »

оооочень простецкий конфиг:

Код: Выделить всё

    server {
        charset utf-8;
        client_max_body_size 128M;
     
        listen 7070; ## listen for ipv4
     
        server_name 192.168.1.22;
        root        /home/lynici/h/sites/ldn;
        index       $yii_bootstrap;
     
        access_log  /home/lynici/h/sites/log/access.log;
        error_log   /home/lynici/h/sites/log/error.log;
     
        location / {
            set $yii_bootstrap "frontend/web/index.php";
            # Redirect everything that isn't real file to yii bootstrap file including arguments.
            try_files $uri $uri/ /$yii_bootstrap?$args;
        }
           
        location /admin/ {
            set $yii_bootstrap "backend/web/index.php";
            try_files $uri $uri/ /$yii_bootstrap?$args;
        }

        # 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;
     
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(.*)$;
     
            # позволяем yii перехватывать запросы к несуществующим PHP-файлам
            set $fsn /$yii_bootstrap;
            if (-f $document_root$fastcgi_script_name){
                set $fsn $fastcgi_script_name;
            }
     
    #        fastcgi_pass 127.0.0.1:9000;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
            include fastcgi_params;
    #        fastcgi_param SCRIPT_FILENAME $document_root$fsn;
     
            # PATH_INFO и PATH_TRANSLATED могут быть опущены, но стандарт RFC 3875 определяет для CGI
    #        fastcgi_param PATH_INFO $fastcgi_path_info;
    #        fastcgi_param PATH_TRANSLATED $document_root$fsn;
        }
     
        location ~ /\.(ht|svn|git) {
            deny all;
        }
    }
index $yii_bootstrap;
тут только чтото не понятно, я этот конфиг щас только накидал, ошибок, нет,в се работает, думаю там лучше просто писать
index.php вместо переменной или переменную вначале установить в index.php, а дальше уже в зависимости от location ее переопределять
amstr1k
Сообщения: 56
Зарегистрирован: 2014.03.19, 23:24

Re: Yii2-Start новая версия.

Сообщение amstr1k »

lynicidn писал(а):оооочень простецкий конфиг:

Код: Выделить всё

    server {
        charset utf-8;
        client_max_body_size 128M;
     
        listen 7070; ## listen for ipv4
     
        server_name 192.168.1.22;
        root        /home/lynici/h/sites/ldn;
        index       $yii_bootstrap;
     
        access_log  /home/lynici/h/sites/log/access.log;
        error_log   /home/lynici/h/sites/log/error.log;
     
        location / {
            set $yii_bootstrap "frontend/web/index.php";
            # Redirect everything that isn't real file to yii bootstrap file including arguments.
            try_files $uri $uri/ /$yii_bootstrap?$args;
        }
           
        location /admin/ {
            set $yii_bootstrap "backend/web/index.php";
            try_files $uri $uri/ /$yii_bootstrap?$args;
        }

        # 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;
     
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(.*)$;
     
            # позволяем yii перехватывать запросы к несуществующим PHP-файлам
            set $fsn /$yii_bootstrap;
            if (-f $document_root$fastcgi_script_name){
                set $fsn $fastcgi_script_name;
            }
     
    #        fastcgi_pass 127.0.0.1:9000;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
            include fastcgi_params;
    #        fastcgi_param SCRIPT_FILENAME $document_root$fsn;
     
            # PATH_INFO и PATH_TRANSLATED могут быть опущены, но стандарт RFC 3875 определяет для CGI
    #        fastcgi_param PATH_INFO $fastcgi_path_info;
    #        fastcgi_param PATH_TRANSLATED $document_root$fsn;
        }
     
        location ~ /\.(ht|svn|git) {
            deny all;
        }
    }
 
index $yii_bootstrap;
тут только чтото не понятно, я этот конфиг щас только накидал, ошибок, нет,в се работает, думаю там лучше просто писать
index.php вместо переменной или переменную вначале установить в index.php, а дальше уже в зависимости от location ее переопределять
вот что то только css и js не грузятся
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Yii2-Start новая версия.

Сообщение lynicidn »

amstr1k писал(а):
lynicidn писал(а):оооочень простецкий конфиг:

Код: Выделить всё

    server {
        charset utf-8;
        client_max_body_size 128M;
     
        listen 7070; ## listen for ipv4
     
        server_name 192.168.1.22;
        root        /home/lynici/h/sites/ldn;
        index       $yii_bootstrap;
     
        access_log  /home/lynici/h/sites/log/access.log;
        error_log   /home/lynici/h/sites/log/error.log;
     
        location / {
            set $yii_bootstrap "frontend/web/index.php";
            # Redirect everything that isn't real file to yii bootstrap file including arguments.
            try_files $uri $uri/ /$yii_bootstrap?$args;
        }
           
        location /admin/ {
            set $yii_bootstrap "backend/web/index.php";
            try_files $uri $uri/ /$yii_bootstrap?$args;
        }

        # 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;
     
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(.*)$;
     
            # позволяем yii перехватывать запросы к несуществующим PHP-файлам
            set $fsn /$yii_bootstrap;
            if (-f $document_root$fastcgi_script_name){
                set $fsn $fastcgi_script_name;
            }
     
    #        fastcgi_pass 127.0.0.1:9000;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
            include fastcgi_params;
    #        fastcgi_param SCRIPT_FILENAME $document_root$fsn;
     
            # PATH_INFO и PATH_TRANSLATED могут быть опущены, но стандарт RFC 3875 определяет для CGI
    #        fastcgi_param PATH_INFO $fastcgi_path_info;
    #        fastcgi_param PATH_TRANSLATED $document_root$fsn;
        }
     
        location ~ /\.(ht|svn|git) {
            deny all;
        }
    }
index $yii_bootstrap;
тут только чтото не понятно, я этот конфиг щас только накидал, ошибок, нет,в се работает, думаю там лучше просто писать
index.php вместо переменной или переменную вначале установить в index.php, а дальше уже в зависимости от location ее переопределять
вот что то только css и js не грузятся
# 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;
#}
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Yii2-Start новая версия.

Сообщение yiijeka »

Утро вечера мудреннее.
amstr1k
Сообщения: 56
Зарегистрирован: 2014.03.19, 23:24

Re: Yii2-Start новая версия.

Сообщение amstr1k »

yiijeka писал(а):Утро вечера мудреннее.

Код: Выделить всё

server {
    charset utf-8;
    client_max_body_size 128M;
    listen 80; 
    server_name yii2.dev;
    root        /home/amstr1k/projects/yii2;
    index       $yii;
 
    location / {
        set $yii "/frontend/web/index.php";
        try_files $uri $uri/ /$yii?$args;
    }
       
    location /statics/ {
        alias /home/amstr1k/projects/yii2/statics/web;
    }

    location /backend/ {
        set $yii "/backend/web/index.php";
        try_files $uri $uri/ /$yii?$args;
    }

    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
        try_files $uri =404;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        set $fsn /$yii;
        if (-f $document_root$fastcgi_script_name){
            set $fsn $fastcgi_script_name;
        }
        
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        include fastcgi_params;
    }
 
    location ~ /\.(ht|svn|git) {
        deny all;
    }
}
 
Для такого конфига нужно в файле frontend/config/main.php

Код: Выделить всё

'baseUrl' => '/frontend/web' // и тоже самое сделать для backend
 
но всё равно возникает проблема со statics
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start новая версия.

Сообщение vova07 »

Я не спец по Nginx, но этот вариант я откинул сразу из-за одной маленькой проблемы: root = корень приложения + try_files $uri $uri/ /index.php?$args;
Разве такой код не позволяет нам обращатся к "console/some_file.php" из рута приложения например? Ведь папка такая есть, файлы в ней тоже? Или я не до конца доки по Nginx читал?
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Yii2-Start новая версия.

Сообщение lynicidn »

не позволит, локейшена нет подходящего, вернее он есть, но он установит бутстрап файл во фронтенд, а там то нет console
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Yii2-Start новая версия.

Сообщение lynicidn »

amstr1k писал(а):У вас работает с настройками lynicidn?
я юзаю саб домен для админки и статики, не вижу смысла вешать на /admin/ Вообще должно работать, разберитесь куда ведут пути у статики и существуют ли файлы по тому пути, нужно больше информации
amstr1k
Сообщения: 56
Зарегистрирован: 2014.03.19, 23:24

Re: Yii2-Start новая версия.

Сообщение amstr1k »

lynicidn писал(а):
amstr1k писал(а):У вас работает с настройками lynicidn?
я юзаю саб домен для админки и статики, не вижу смысла вешать на /admin/ Вообще должно работать, разберитесь куда ведут пути у статики и существуют ли файлы по тому пути, нужно больше информации
А зачем тогда выкладывать конфиг если используешь другой конфиг? Пути до статики сейчас выглядят как http://site.ru/assets/fc51c43e/, но если перейти по http://site.ru/frontend/web/assets/fc51c43e/ то всё ок. Тоже самое с backend
Аватара пользователя
vova07
Сообщения: 1004
Зарегистрирован: 2012.11.29, 14:52
Откуда: Chisinau, Moldova

Re: Yii2-Start новая версия.

Сообщение vova07 »

lynicidn писал(а):не позволит, локейшена нет подходящего, вернее он есть, но он установит бутстрап файл во фронтенд, а там то нет console
Несмотря на моё незнания, осмелюсь еще раз прокоментировать код:

Код: Выделить всё

location / {
    set $yii "/frontend/web/index.php"; // Установка путей
    # На сколько я знаю, этот метод делает следующую вещь: Проверяет $uri который у нас проверяется в корне так как SET ничего не меняет по сути, потом проверяется $uri/ тоже там, и только если ничего не найдено делайется исключение и редирект на наш Yii индекс.
    try_files $uri $uri/ /$yii?$args;
} 
То что я писал в README решает проблему именно поддоменом. Все работает коректно и статика и все. Но вопрос заключался в том как сделать так чтобы можно было избавится от поддомена вообще, и чтоб все коректно работало, и чтоб небыло таких возможных ошибок безопастности. Пока я не смог решить.
Ответить