4 заметки с тегом

Linux

Про Git

Скопипащу сюда свой собственный мануал для новеньких разработчиков.

Установка git


$ sudo su
$ apt-get install git-core git-gui git-doc

SSH ключи


Шаг 1. Проверяем есть ли у вас уже ключи.

cd ~/.ssh
Если отвечает “No such file or directory“ идем на шаг 3. Иначе идем на шаг 2.

Шаг 2. Бекапим имеющиеся

mkdir key_backup
cp id_rsa* key_backup
rm id_rsa*

Шаг 3. Создаем новый ключ

ssh-keygen -t rsa -C «your_email@domain.ru»
[enter]

Шаг 4. Нужно добавить ваш ключ на репозиторий, например gitorius, gitlab, bitbucket

cat id_rsa.pub
ctrl+c ctrl+v в браузер.

Шаг 5. Добавляем персональную информацию

git config —global user.name «Firstname Lastname»
git config —global user.email «your_email@domain.ru»

Использование


git init — создать в этой папке git репозиторий
git status — получить информацию на какой ветке мы сейчас находимся, список внесенных изменений
git checkout development — переключиться на основную девелоперскую ветку.
git pull origin development — скачать с серевра самую свежую версию ветки development и залить ее в текущую ветку.
git checkout -b new_branch_name — создать новую ветку из текущей (на которой вы сейчас находитесь).
git reset —hard — отменяет все изменения сделанные до коммита
git commit -a — сохраняет на вашем локальном компе в ветке все изменения, которые вы внесли
git push origin branch_name — закачивает на сервер вашу модифицированную ветку

Для работы в общем-то и этого набора команд достаточно :)

Ништяки


Вывод названия текущей ветки в строку приглашения bash.
Выглядит примерно так: /var/www/site (master) $
Создать в домашней директории файл .gitbranch.sh с правами на исполнение для владельца:

#!/bin/bash
 
GIT_BR=`git symbolic-ref HEAD 2> /dev/null | cut -b 12-`
 
if [ "$GIT_BR" = "" ]; then
    echo -n
else
    echo -n "($GIT_BR)"
fi
</pre>
в файле .bashrc, находящейся в домашней директории найти строку
<pre class="brush:shell">if [ "$color_prompt" = yes ]; then
PS1='...

и заменить ее на

if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\e[1;31m\]:\[\e[01;34m\]\w\[\e[00m\]`~/.gitbranch.sh`\[\e[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w`~/.gitbranch.sh`\$ '
fi

так же 10 строками выше можно раскоментировать force_color_prompt=yes

GUI

Многие разработчики в нашей команде используют либо командную строку, либо gtk-шный Git Gui. Я же рекомендую SmartGit, пожалуй это лучший клиент из всех что я видел. Еще весьма неплохо работает с гитом клиент, встроенный в PHP Storm.

Из очень удобных клиентов под Linux я бы еще назвал Gitg. Он особенно полезен для просмотра дерева веток и истории слияний веток между собой. Устанавливается он с полпинка по apt-get install gitg.

Вот забавно, хотел сейчас причитать о том, как жаль, что под Mac нет такого классного инструмента, как оказалось, что Gitg это клон GitX, содранного с маков :)

Под Windows я использую тот же самый SmartGit и консоль (mingw), которая поставилась самим инсталлятором. Скачать git для windows можно на http://git-scm.com/

Ссылки по теме:
Прекрасная книга Pro Git
Магия Git — другая прекрасная книга про гит

Переезд на EC2

Перетаскиваю свои сайты на Amazon EC2. Наверное и мелкие сайты клиентов там же буду хостить.
Благо, Амазон дает бесплатные микро-инстансы новым клиентам, правда маленькие: на Linux и хранилище (EBS) не должно превышать 10 гб. Бесплатного траффика дают всего лишь 15 Гб в обе стороны, все что свыше будет стоить аж 17 центов за Гб :-)

Выбираю какую хостинг панель поставить. Хочется бесплатную и простую. Пока что нашлись вот такие:
http://gnupanel.org/
http://www.web-cp.net/
http://www.ispconfig.org/

2011   Linux   Сервера

Переезжаю на линукс

Появился небольшой проект, написать его требуется на PHP, так что я наконец-то нашел повод перевести один из своих домашних компов на линукс. Поднимаю LAMP, чтобы попробовать как же коллеги линуксоиды так сидят годами на люто бешенно ненавидимой мною платформе и кодят.

Для начала поставил Ubuntu 9.10, так как версия 10.10 на моем стареньком Athlon XP 1800+/512mb уж больно тормозила.

Скачал Netbeans и немного даже помучился с установкой Java: дело в том, что Netbeans Installer все никак не мог найти JVM, а отловить куда же устанавливается Java скачанная с сайта Oracle мне не удалось :-).

В итоге поставил Java из репозитория Ubuntu:

sudo apt-get install sun-java6-jre sun-java6-jdk

затем

chmod 777 netbeans-6.9.1-ml-php-linux.sh
netbeans-6.9.1-ml-php-linux.sh

Поднял LAMP по замечательному мануалу:

aptitude install mysql-server mysql-client
aptitude install apache2
aptitude install php5 libapache2-mod-php5
aptitude search php5
aptitude install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json
/etc/init.d/apache2 restart
sudo a2enmod rewrite
sudo invoke-rc.d apache2 restart

Виртуальные хосты для Apache2 я прописываю так:

/etc/apache2/sites-enabled/000-default

&lt;VirtualHost *:80>
	ServerName mysite.local
	ServerAlias www.mysite.local
	DocumentRoot /home/adel/web/mysite.local
	ErrorLog /home/adel/web/mysite.local/logs/mysite-err.log
&lt;/VirtualHost>

Так и в Netbeans удобнее, да и сайты сайты открываются в браузере как надо.

Сейчас вот скачается Navicat Lite для MySQL и засяду я кодить на все оставшиеся новогодние выходные.

2011   Linux   Сервера

Как меня, виндузятника, Linux выручил.

На прошлой неделе на мой интернет-магазин обрушилась дикая DDoS атака.
Несмотря на то, что он сделан у меня на WordPress, хостится он на выделенном сервачке в нидерландах, на Windows Server 2003. IIS загибалась от 600 коннектов в секунду (именно столько столько соединений позволял брэндмауэр).

В первый день мне пришлось просто отключить сайт. Посоветовавшись с другом Сергеем Рульковым (MCP), поднял на этом сервере виртуалку на Ubuntu Server, на нем Nginx. Хостер предоставил мне аж 3 IPшника, так что я присвоил 1 неиспользованный IP виртуальной машине с nginx, а nginx настроил как прокси к IIS. Затем через панель управления доменом изменил ip сайта на ip виртуальной машины.

Обычно используется связка nginx+apache, у меня же вышел вот такой каламбур (nginx+iis): nginx раздавал с себя всю статику (картинки, файлы для скачивания), а IIS отдавал html, генерируемый php =)

После запуска у меня был восторг! Несмотря на продолжающуюся DDoS атаку, этот план сработал, nginx раздавал статику, а iis быстро исполнял php и интернет-магазин заработал. Дело было вечером и я лег спать с чувством удовлетворения — победил недобросовестных конкурентов и отстоял работу своего бизнеса.

Утром следующего дня DDoSеры обозлились и усилили напор ботов. Они увидели, что GET запросами сайт не уложить, и стали забрасывать его POST запросами. Этого IIS не выдержал и снова упал. А Nginx вполне себе работал.

Целый день я курил мануалы и читал хабахабр про nginx и пытался настроить кэширование (оно поддерживается с версии 0.7.хх, а у меня на убунте по умолчанию ставилась более старая — 0.6.хх), но у меня ничего не получилось.

Затем я попробовал Bash-скрипт, который банит IP (записывает правила в iptables), которые открывают одновременно слишком много соединений (я настроил на 10), это была феерия! Скрипт по-умолчанию запускался 1 раз в минуту (через cron), я же запускал его вручную, каждую секунду. Каждую секунду скрипт банил 4000 уникальных IP. Я был в шоке, не думал, что на меня могли натравить такой большой ботнет! но еще больше я был поражен тому, что nginx все равно работал и не падал!

Вечером на прогулке мне пришла в голову просто гениальная мысль: я залез браузером напрямую на IIS, сохранил исходный код html, который генерировал движок интернет-магазина и сделал статичный сайт интернет-магазина. Выложил его на Nginx, вместо корзины и страницы заказа сделал страницу-заглушку, дескать, «извините уважаемые, DDoS-ят интернет-магазин, заказывайте, пожалуйста, по телефону или и-мэйлу».

Все. DDoS был таким же интенсивным, но сайт работал. Яндекс не забыл про сайт, из индексов он не вылетел, и в выдаче не понизился. Отбился. Вот такая success-story, даже прожженому администратору-виндузятнику, линукс товарищ.

Сейчас качаю книжки с сайта линукс для хакера, начал читать про Брандмауэры в Linux. Надо бы опробовать на каком-нибудь боевом сервере, или в сети, когда время будет. Может на виртуалках подниму, попробую!

Да, забыл конец истории описать: DDoS продолжался всю ночь и все следующее утро, а днем, поняв, что все усилия тщетны, атака прекратилась, и я снова настроил nginx в качестве прокси к IIS. Можно конечно весь сайт перенести на виртуалку и посадить его на апач, но я в этом вопросе принимаю закон механиков: работает — не лезь.

2010   Linux   Сервера