cat /путь к ключу одного из разрабов/id_rsa.pub >> ~/.ssh/authorized_keys - добавляем открытые SSH-ключи разработчиков (столько ключей, сколько разработчиков) в файл authorized_keys.
mkdir git
cd git
mkdir project.git
cd project.git
git init --bare - создаем репозиторий без рабочего каталога. Это самая главная строчка по сути с ее помощью мы и создали git сервер. Заметьте, что кто-то должен заходить на сервер и создавать голый репозиторий каждый раз, когда вы хотите добавить новый проект.
Допустим на локальном компе Васи есть проект и он послужит первоисточником:
cd myproject
git init
git add .
git commit -m 'Initial commit'
git remote add origin git@8.8.8.8:/home/git/git/project.git - файлы проекта залиты на сервер.
Теперь все остальные могут клонировать проект: git clone git@8.8.8.8:/home/git/git/project.git
Для наглядности представим что у нас есть внешний статический ip и допустим у нас есть локальный компьютер с ip 192.168.0.10. Мы хотим сделать возможным подключаться к нему по ssh (22 порт) через интернет. Но мы хотим чтоб из интернета подключались например к порту 9022.
npm init - создает файл package.json, который содержит информацию о проекте (описание проекта и зависимости).
npm install gulp --save-dev - устанавливаем gulp в папку с проектом
Примечание:npm install gulp --save-dev === npm i gulp -D (алисы не везде работают) 6. Перечень необходимых пакетов: * npm i browserify -D - позволяет вам использовать стиль node.js модулей для работы в браузере. Мы определяем зависимости и потом Browserify собирает их в один маленький и чистенький JavaScript файл. * npm i vinyl-source-stream -D - виртуальная файловая система для чтения/записи файлов. Получаем выходные данные Browserify и сохранить их в файл с помощью Gulp. * npm i rimraf -D - полностью очищает каталог * npm i stringify -D - позволяет подключать статические файлы, например шаблоны. * npm i gulp-sftp -D - закачиваем изменения по ssh Примечание: При установки все скаченые модули располагаются в папке node_modules, зависимости прописываются в файл package.json. Если папка node_modules удалена, но в package.json прописаны зависимости, установить все пакеты можно командой npm install. 7. Создаем в корне проекта файл gulpfile.js Ниже показано содержимое файла.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// импорт npm модулей в проект var gulp = require('gulp'), browserify = require('browserify'), source = require('vinyl-source-stream'), rimraf = require('rimraf'), stringify = require('stringify');
var sourceFile = './src/main.js', // местоположение главного нашего js файла, точки входа destFolder = './dist', // местоположение финального файла destFile = 'bundle.js'; // имя, которое мы хотим дать нашему финальному файлу
[0] данная функция вызывается в консоле так: gulp build. В формальных параметрах могут также указываться функции, которые необходимо выполнить до начала работы данной функции, например gulp.task('build', ['copy-static'], function() { вызываем сначала функцию copy-static.
[1] главное тут в Browserify, ему передаем точку входа в наше приложение
[2]transform - метод Node, с которым можно работать благодаря browserify. Преобразует поток нужным образом. stringify - позволяет подключать статические файлы, например шаблоны. extensions: [‘.html’, ‘.tpl’, ‘.hbs’] - указываем форматы каких статических файлов можно подключать и позволяет складывать их в переменную minify - минимизирует файлы Пимечание: если в gulpfile.js не указать stringify, то в файлах проекта нельзя будет подключать шаблоны: var AppTpl = require('./../templates/App.tpl');
[3] используем потоковый Browserify API для того, чтобы вернуть поток с нашим JS контентом
[4][5] перекидываем информацию из потока в файл и сохраняем его в директорию.
Примечание: Функции require, pipe и transform относятся к Node:
1) require - метод для импорта модулей, JSON-файлов, папок и т.д. 2) pipe - принимает поток, который используется для передачи читаемого потока в записываемый. 3) transform - метод Node, с которым можно работать благодаря browserify. Преобразует поток нужным образом.
args = require(‘yargs’).argv;
gulp.task(‘test’, function () {
var env = args.env || 'prod'; // команда в консоле: gulp test --env df (выводит df)
console.log(env);
yii migrate/redo 3 - перезагрузить 3 последние применённые миграции
yii migrate/history - показать последних 10 применённых миграций
yii migrate/history 5 - показать последних 5 применённых миграций
yii migrate/history all - показать все применённые миграции
yii migrate/new - показать первых 10 новых миграций
yii migrate/new 5 - показать первых 5 новых миграций
yii migrate/new all - показать все новые миграции
yii migrate/mark m150101_185401_create_news_table - Вместо применения или отката миграций, есть возможность просто отметить, что база данных была обновлена до определенной миграции. Указывается временная метка или полное имя миграции.
Задача: Установить на рабочий компьютер расширенную версию yii2, создать репозиторий на Bitbucket и выложить проект туда. В качестве боевого сервера настроить Raspberry и склонировать с Bitbucket проект. Дальнейшие обновления будут через Bitbucket, посредством git pull из ветки мастер.
Устанавливаем Composer, если нужно, на локальную машину.
Устанавливаем yii2, расширенную версию. В папке с проектами запустить команду, где name-project – имя проекта: composer create-project --prefer-dist yiisoft/yii2-app-advanced name-project
php init - инициализируем проект, для разработки выбираем [0] Development.
Инициализируем Git (в папке с проектом), индексируем и делаем первый коммит.
1 2 3
git init git add . git commit -m "fist commit"
Перезапустите IDE (Актуально для phpShtorm)
Если используете MAMP в MAC OS, то настройки для БД в common/config/main-local.php должны быть следующие: 'dsn' => 'mysql:host=localhost:8889;dbname=nameDB, (MAMP вешает MySQL на 8889 порт)
Настройка Bitbucket.
Создаем новый приватный репозиторий
Заходим в раздел Обзор и следуем инструкции “Я начинаю полностью с нуля”
Пример:
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):
Материал сознательно упрощен чтобы создать относительно полную картину, без лишних подробностей.
Существуют два вида адресов:
MAC-адрес – уникальный номер любого физического устройства в сети. Состоит из двух частей:
Производитель оборудования
Уникальный номер устройства для данного производителя
IP-адрес - уникальный сетевой адрес узла. Состоит из двух частей:
Адрес подсети
Адрес узла (устройства) в пределах подсети.
IPv4
IP бывают 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, где:
A – сеть верхнего уровня
B – подсеть сети A
C – подсеть сети B
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