Миграции в yii2

Консольные команы (подробнее):

  1. yii migrate/create <name> - создаст миграцию
  2. yii migrate/create **create_**news**_table** - создаст миграцию с кодом для создания таблицы news
  3. yii migrate - выведет список всех миграций, которые не применялись до сих пор и спросит выполнить ли их.
  4. yii migrate 3 - явно указывает сколько миграций необходимо применить к БД.
  5. yii migrate/to 150101_185401 - с помощью временной метки указывает какую миграцию применить.
  6. yii migrate/down - отменяет самую последнюю применённую миграцию
  7. yii migrate/down 3 - отменяет 3 последних применённых миграции
  8. yii migrate/redo - перезагрузить последнюю применённую миграцию
  9. yii migrate/redo 3 - перезагрузить 3 последние применённые миграции
  10. yii migrate/history - показать последних 10 применённых миграций
  11. yii migrate/history 5 - показать последних 5 применённых миграций
  12. yii migrate/history all - показать все применённые миграции
  13. yii migrate/new - показать первых 10 новых миграций
  14. yii migrate/new 5 - показать первых 5 новых миграций
  15. yii migrate/new all - показать все новые миграции
  16. yii migrate/mark m150101_185401_create_news_table - Вместо применения или отката миграций, есть возможность просто отметить, что база данных была обновлена до определенной миграции. Указывается временная метка или полное имя миграции.

Читать дальше...

Установка yii2 advanced на Raspberry и локальную машину, связка с Bitbucket

Задача:
Установить на рабочий компьютер расширенную версию yii2, создать репозиторий на Bitbucket и выложить проект туда. В качестве боевого сервера настроить Raspberry и склонировать с Bitbucket проект. Дальнейшие обновления будут через Bitbucket, посредством git pull из ветки мастер.

  1. Устанавливаем Composer, если нужно, на локальную машину.

  2. Устанавливаем yii2, расширенную версию. В папке с проектами запустить команду, где name-project – имя проекта:
    composer create-project --prefer-dist yiisoft/yii2-app-advanced name-project

  3. php init - инициализируем проект, для разработки выбираем [0] Development.

  4. Инициализируем Git (в папке с проектом), индексируем и делаем первый коммит.

    1
    2
    3
    git init
    git add .
    git commit -m "fist commit"
  5. Перезапустите IDE (Актуально для phpShtorm)

    Если используете MAMP в MAC OS, то настройки для БД в common/config/main-local.php
    должны быть следующие: 'dsn' => 'mysql:host=localhost:8889;dbname=nameDB, (MAMP вешает MySQL на 8889 порт)

  6. Настройка Bitbucket.

    1. Создаем новый приватный репозиторий
    2. Заходим в раздел Обзор и следуем инструкции “Я начинаю полностью с нуля”

    Пример:

    1
    2
    3
    4
    cd /path/to/my/repo
    git remote add origin https://Falbin@bitbucket.org/Falbin/authorization.git
    git push -u origin --all # pushes up the repo and its refs for the first time
    git push origin --tags # pushes up any tags

    В локальном файле конфига (.git/config) добавилась строчка, для связи проекта с Bitbucket (более того вы уже сделали пушь проекта на Bitbucket):

    1
    2
    3
    4
    remote "origin"]
    url = https://Falbin@bitbucket.org/Falbin/authorization.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    ]
  7. ssh root@192.168.0.100 - подключаемся по ssh к Raspberry

  8. Устанавливаем Git на Raspberry, если нужно.

  9. Настраиваем ssh ключ

  10. git clone git@bitbucket.org:Falbin/authorization.git - клонируем репозиторий с Bitbucket

  11. Устанавливаем composer на Raspberry, если нужно. Устанавливаем глобально:

    1. cd ~
    2. curl -sS https://getcomposer.org/installer | php
    3. sudo mv composer.phar /usr/bin/composer
  12. Перед установкой всех нужных пакетов, убедитесь что у вас настроин токен для GitHub. Без токена, GitHub ставит ограничения на колличестов запросов.

    1. Нужно авторизоваться на github.com и перейти по ссылке., затем сгенерировать ключ.
    2. Можно заранне настроить: composer config -g github-oauth.github.com <токен>, либо ввести, когда у вас запросит токе, в поле Token (hidden)
  13. composer install - Устанавливаем все пакеты, нужные нашему yii2

    После чего возникают гребанные проблемы, описанные тут.
    Мне помогло composer global require "fxp/composer-asset-plugin:~1.1.1"

Алгоритм по разработке проекта:

  1. На локальной машине создаем ветку под разные задачи, после выполнения задачи мержим с мастером.
  2. На сервере (Raspberry) делаем git pull из ветки мастер. Никаких правок на серваке вручную (иначе будут конфликты).
  3. Отличная статья, как отменять коммиты.

Полезные ссылки:

  1. Composer
  2. Документация по yii2
  3. Настраиваем ssh ключ
  4. Composer. Установка под Linux.

Настройка статичного ip для Raspberry

Команды, которые нам понадобятся:

  • ping raspberrypi.local - пингуем резбери, находящийся в локальной сети. Отличный способ узнать ip у Raspberry.
  • ssh root@192.168.0.100 - подключение по ssh
  • ifconfig - утилита конфигурирования сетевых интерфейсов.
  • sudo route -n - обработка таблиц сетевых маршрутов
  • sudo reboot - перезагрузка

Читать дальше...

GIT: Обо всём по не многу

Терминология

index — область зафиксированных изменений, т.е. всё то, что вы подготовили к сохранению в репозиторий.
commit — изменения, отправленные в репозиторий.
HEAD — указатель на commit, в котором мы находимся.
master — имя ветки по-умолчанию, это тоже указатель на определённый коммит
origin — имя удалённого репозитория по умолчанию (можно дать другое)

Читать дальше...

Hexo и Markdown

Базовый синтаксис Markdown

<!-- more --> - специальный тэг, поддерживаемый Hexo. Обеспечивает функционал “читать дальше”.

Таблицы

1
2
3
4
5
6
7
8
9
10
11
| Tables        | Are           | Cool  |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |


Markdown | Less | Pretty
--- | --- | ---
*Still* | `renders` | **nicely**
1 | 2 | 3

Читать дальше...

Сетевой адрес (IPv4, MAC, порт)

Материал сознательно упрощен чтобы создать относительно полную картину, без лишних подробностей.

Существуют два вида адресов:

  • MAC-адрес – уникальный номер любого физического устройства в сети. Состоит из двух частей:
    1. Производитель оборудования
    2. Уникальный номер устройства для данного производителя
  • IP-адрес - уникальный сетевой адрес узла. Состоит из двух частей:
    1. Адрес подсети
    2. Адрес узла (устройства) в пределах подсети.

IPv4

IP бывают 2 видов:

  1. Внешние (белые, анонсированные и т.д.) – используются в Интернете.
  2. Локальные (серые, неанонсированные, внутренние и т.д.) – не используются в Интернете.

Один из локальных диапазонов IP сетей: 192.168.0.0 — 192.168.255.255 (маска подсети: 255.255.0.0).
Здесь 192.168.x.x – адрес подсети, а 192.168.x.x – адреса устройств в пределах подсети. Но здесь необходимо исключить первый и последний узел.

  • 192.168.0.0 – первый «узел» является адресом самой сети.
  • 192.168.255.255 – последний «узел» широковещательный или broadcast, адрес сети, на который в теории должны отвечать все хосты сети.
  • Также стоит помнить об оборудовании, например, роутеры часто используют такие ip адреса: 192.168.1.1, 192.168.0.1, 192.168.2.1, 192.168.88.1 и т.д.

В классическом виде, до CIDR (маски) IP делился на классы: A.B.C.x, где:

  1. A – сеть верхнего уровня
  2. B – подсеть сети A
  3. C – подсеть сети B
  4. x – адреса узлов

С появлением маски подсети стало возможным изменять часть IP адреса, отвечающего за адреса узлов. К примеру маска 255.255.0.0, означает что первые две части IP адреса (192.168.) отводятся за сеть, а узлы могут занимать весь диапазон двух оставшихся частей IP (192.168.0.0 — 192.168.255.255). При желании с помощью маски можно часть пространства отведенных под узлы отдать сети.

Если необходимо обеспечить доступ вашему локальному серверу в Интернет, необходимо осуществить подмену (например, в настройках роутера) локального ip на внешний, который выдается провайдером.

Порт

Порт - число, которое идентифицирует программу, желающую принимать данные из сети. Любая программа, стремящаяся передать данные другой, должна занать номер порта, который закреплен за последней. Диапазон портов от 0 до 65535 (2 байта).

Пример доступа к базе данных из локальной подсети к узлу 1.10: 192.168.1.10:3306

Номера портов разделены на три диапазона:

  1. Системные (от 0 до 1023)
  2. Зарегистрированные (от 1024 до 49151)
  3. Динамические или частные (от 49152 до 65535)

Список системных портов:

  • 21: FTP
  • 22: SSH
  • 25: Простой протокол передачи почты (SMTP).
  • 53: Система доменных имен (DNS).
  • 80: Протокол передачи гипертекста (HTTP).
  • 443: HTTPS (HTTP Secure) криптографический протокол SSL.
  • Полный список портов

Настройка ftp синхронизации в phpStorm

  1. Открываем настройки
    • Для MacOS: PhpStorm/Preferences (⌘+,)
    • Для Windows: File/Settings (ctrl+alt+s)
  2. Открываем: Build,Execution,Deployment / Deployment
  3. Жмем добавить {1}, вводим имя.
  4. Во вкладке Connection заполняем поля: FTP host, Root path, User name, Password
    Root path - папка с проектом на сервере
  5. Сделать данное соединение по умолчанию {2}
  6. Нажать на кнопку “Advanced options…” {3} и в модальном окне поставить галочку “Passive mode”
  7. Переходим во вкладку “Mappings” {4} и заполняем поля (как правило, ничего менять не надо):
    • Local path - папка с локальным проектом
    • Deployment path ….. - папка на сервере
    • Web path ….. - веб путь, по умолчанию /

  • Чтобы включить отображение дерева директорий на сервере надо: Tools/Deployment/Browse Remote Host
  • Чтобы включить автоматическую синхранезацию надо выбрать: Tools/Deployment/Automatic Upload (always)

Полезные ссылки:

  1. Видео урок по phpStorm Про ftp синхронизацию с 3:40 до 22:00

Шпора по командам терминала

Консольные команды для Linux

  • chmod 777 -R blog - рекусивно меняем права у папки blog
  • chown -R pi:root blog - рекурсивно меняем владельца у паки blog на pi и группу на root
  • rm -R blog - Удалить папку blog (рекурсивно)
  • rm -R * - Удалить все содержимое текущей папки (рекурсивно)
  • mkdir blog - Создать директорию blog
  • stat blog - Подробная информация о файле/директории
  • mv - Переместить или переименовать файлы
  • nslookup ya.ru - DNS-клиент позволяющий узнать ip адресс сайта и не только
  • cat /etc/*release* - данные об ОС (версия и т.д.).

    Читать дальше...

Настраиваем ftp на raspberry pi

Если надо удалить ftp сервер, выполняем следующую команду:
apt-get --purge remove vsftpd

  1. Установите vsftpd: sudo apt-get install vsftpd
  2. Отредактируйте файл vsftpd.conf: sudo nano /etc/vsftpd.conf
  3. Необходимо закомментировать атрибут anonymous_enable (комментарий #)
  4. В конец файла добовляем следующие настройки:
    1
    2
    3
    4
    5
    6
    7
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=0002
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    file_open_mode=0777
    Данные настройки позваляют закачивать файлы на сервер с правами доступа: rwxrwxr-x
    Обычно права доступа у залитых по ftp файлов будут: rw- - - - - - -
  5. Сохраните настройки и выйдите, нажав CTRL-O, CTRL-X.
  6. Теперь перезапустите vsftpd: sudo service vsftpd restart

Настройка виртуального Веб-Сервера c VirtualBox, Apache, Mysql, phpMyAdmin и общей папкой

Моей основной ОС является MAC OS. Мне необходимо было установить VirtualBox и установить в ней, в качестве гостевой ОС Ubuntu Server без графической оболочки. Настроить Ubuntu в качестве LAMP сервера и установить Apache, Mysql, phpMyAdmin. Также настроить общую папку между основной и гостевой ОС. Ниже представлена инструкция как это сделать.

Читать дальше...