Настройка VPS c CentOS. Часть первая.

Мар 06
2012

Решился наконец купить VPS. Сказано — сделано. Заранее оговорюсь — сервер покупался под проекты двух типов — RoR и PHP MVC, поэтому, говоря о настройке, буду расставлять акценты именно вокруг окружения, необходимого для работы веб-приложений.

В качестве ОС выбрал CentOS 5, не потому что 6-ки нету, а потому что у хостера в конфигурации minimal install 6-я версия идет сильно порезаная — нет ни yum, ни rpm, ни компиляторов, согласитесь — несколько гемморно. После активации сервера собственно приступил к настройке.

I. Репозитории

Для установки необходимого и относительно свежего нам понадобятся следующие репозитории:

Добавим репозитории:

su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm'
su -c 'rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm'
su -c 'rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm'

Теперь можно приступать к установке софта.

II. Софт

Итак, MySQL, MongoDB, Apache, Nginx, PHP и Ruby будут ставиться из репозиториев, gem’ы — c помощью gem install. Помимо этого поставим gcc, git и несколько devel пакетов, ибо надо :)

su -c 'yum install mysql mysql-server mysql-devel mongodb mongodb-server mongodb-devel httpd nginx gcc git ruby ruby-devel rubygems vsftpd php php-pear php-gd php-intl php-mcrypt php-mbstring php-mhash php-mysql php-pdo php-process php-xml phpMyAdmin'

Теперь gem’ы (вариант без rvm)

su -c 'gem update'
su -c 'gem install rails --include-dependencies mysql2 mongo css3buttons unicorn capistrano devise bson_ext bcrypt-ruby'

Этого для начала хватит, остальное можно доустановить по мере необходимости.

III. Немного о безопасности

1. Закройте доступ по ssh для root’а, мелочь, но не помешает:

su -c 'vim /etc/ssh/sshd_config'
PermitRootLogin no
StrictModes yes
MaxAuthTries 5

2. Если есть возможность, вообще не настраивайте почту, благо, сейчас и Яндекс и Google предоставляют почту для домена, и ресурсы сервера не будут тратиться, и одной потенциальной дыркой меньше.

3. Для каждой базы данных не ленитесь заводить отдельного пользователя, желательно с уникальным паролем.

4. Разберитесь c iptables, реально полезная штука

5. Погуглите :)

Продолжение следует…

Hg branch, hg merge

Сен 06
2011

Intro

Использовать системы контроля версий в таких задачах как разработка ПО или создание сайтов нынче хороший тон. Так уж сложилось, что в момент выбора куда смигрировать с SVN я решил использовать Mercurial, на тот момент мне эта система показалась немного более простой и удобной, нежели Git. С увеличением количества разработчиков в проекте, ну или просто, если хочется, что бы в репозитории был порядок, неизбежно все приходят к использованию веток. Даже в небольших проектах у меня всегда 2 ветки: default и devel, остальные возникают и исчезают по необходимости. В default, всегда находится стабильный, оттестированый код (хотя чего греха таить, баги тут тоже обитают), devel — общая для всех ветвь разрабатываемого кода, от которой, в процессе, могут создаваться дополнительные ветки для реализации новых фич. Вообще механизм веток в Mercurial не столь прозрачен, на мой взгляд, как в Git, там, как раз таки, данный механизм реализован более удачно. Мне привычнее использовать named branches.

Создание ветки

hg branch test
hg ci -m "new branch for testing code"
hg push --new-branch

Слияния веток

hg up default
hg merge test
hg ci -m "merge with test branch"
hg push

Закрытие ветки

hg up test
hg ci -m "close test branch" --close-branch
hg push

Вот так, довольно просто, можно использовать ветки в Mercurial. Это далеко не единственный вариант, например есть еще перемещаемые маркеры, они же bookmarks.

MySQL Workbench и Doctrine ORM

Июн 08
2011

Некоторое время назад я рассказывал о том, как настроить CodeIgniter, Doctrine ORM и Swift. Сегодня расскажу о том, как ускорить этап создания прототипа приложения, создаваемого на этой связке, с помощью MySQL Workbench.

Workbench позволяет создавать визуальную схему базы данных, учитывающую как типы хранимых данных, так и связи между таблицами. Из разработанной диаграммы можно напрямую создать новую базу, работает и обратный принцип — для создания диаграммы можно использовать структуру существующей БД, это удобно в том случае, если нужно быстро расширить архитектуру базы.

Закончив проектирование остается сделать совсем немного. Во-первых, закрепляем все изменения в БД. После этого в дело вступает Doctrine:

//Создаем schema.yml на основе структуры БД
php doctrine generate-yaml-db
//Создаем файлы моделей на основе структуры БД
php doctrine generate-models-db

В результате будут сгенерированы файлы моделей, после этого — have fun :)

Настройка Codeigniter 2, Doctrine 1.2 и Swift Mailer 4.0

Май 06
2011

Пояснение по поводу версий

Для связки используются версии: CI — 2.0.2, Doctrine — 1.2.3, Swift — 4.0.6. В общем-то все это добро запустится на php-5.2.x и выше, но так как Doctrine 2 требует php-5.3.x, что не всегда встретишь на shared hosting’е, да и не на каждом VDS, то будем использовать последнюю стабильную версию ветки 1.х.х.

Где взять

Все перечисленные компоненты можно скачать:

или выдернуть из систем контроля версий:

  • Codeigniter — hg clone ssh://hg@bitbucket.org/ellislab/codeigniter-reactor
  • Doctrine — git clone git://github.com/doctrine/doctrine1.git
  • Swift — git clone git://github.com/swiftmailer/swiftmailer.git

Read the rest of this entry »

Локальный ftp-сервер для WordPress разработчика

Май 04
2011

Известно, что для обновления платформы и плагинов WordPress использует ftp. Что бы использовать возможность обновления на локальной машине установим и настроим локальный ftp-сервер.

Нижеизложенное будет работать везде, в качестве примера будем использовать Ubuntu и vsftpd:

1. Установим vsftpd

sudo apt-get install vsftpd

2. Настроим его (следующие строки должны быть раскомментированы):

listen=YES
local_enable=YES
write_enable=YES
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120

3. Применим настройки

sudo service vsftpd restart

Все. Можно спокойно обновляться через админку на локальной машине, достаточно указать локальный адрес, пользователя и его пароль:

1 из 212
Real Time Web Analytics
fortnotes