Я бы рекомендовал использовать PDO (объекты данных PHP) для запуска параметризованных SQL-запросов.
Это не только защищает от SQL-инъекции, но и ускоряет выполнение запросов.
И используя функции PDO, а не mysql_
, mysqli_
и pgsql_
, вы делаете свое приложение немного более абстрактным из базы данных, в редких случаях, когда вам нужно переключать поставщиков баз данных .
Я закончил тем, что отправил вопрос в capistrano пользовательском списке здесь и добрался, следующий ответ от Jamis (отредактировал немного мной здесь для ясности):
<час>Попытка переменная среды ХОСТОВ:
cap HOSTS=app2.example.com production deploy
Примечание, что выполнение этого будет рассматривать app2, как являющийся в каждой роли, не только, какой бы ни роль (роли) это, оказывается, объявляется в.
, Если то, что Вы хотите, должно сделать, постоянный клиент развертывается, но только действует на app2, и только поскольку app2 объявляется в Вашем файле рецепта, можно использовать переменную HOSTFILTER вместо этого:
cap HOSTFILTER=app2.example.com production deploy
[...]
Рассматривают этот конкретный пример. Предположим, что Ваш сценарий определяет три сервера, A, B, и C. И это определяет задачу, "нечто", которое (по умолчанию) хочет работать на A и B, но не C. Как это:
role :app, "A", "B"
role :web, "C"
task :foo, :roles => :app do
run "echo hello"
end
Теперь, если Вы делаете cap foo
, это выполнит команду эха и на A и на B.
, Если Вы делаете cap HOSTS=C foo
, это выполнит команду эха на C, независимо от: ролевой параметр к задаче.
, Если Вы делаете cap HOSTFILTER=C foo
, это не выполнит команду эха вообще, потому что пересечение (B) и (C) является пустым множеством. (Нет никаких хостов в списке хоста нечто того соответствия C.)
, Если Вы делаете cap HOSTFILTER=A foo
, это будет работать на команде эха только A, потому что (B) пересеченный с (A) (A).
Наконец, если Вы делаете cap HOSTFILTER=A,B,C foo
, это выполнит команду эха на A и B (но не C), потому что (B) пересеченный с (B C) (B).
Для суммирования: ХОСТЫ полностью переопределяют объявление хостов или ролей задачи и вынуждают все работать против указанного хоста (хостов). HOSTFILTER, с другой стороны, просто фильтрует существующие хосты против данного списка, выбирая только те серверы, которые уже находятся в списке сервера задач.
Следующее должно работать из поля:
cap HOSTS=app2.example.com ROLE=app deploy
, Если Вы хотите развернуться к> 1 сервер с той же ролью:
cap HOSTS=app2.example.com,app3.example.com,app4.example.com ROLE=app deploy
Необходимо быть в состоянии сделать что-то вроде этого в deploy.rb:
task :production do
if ENV['SERVER'] && ENV['ROLE']
role ENV['ROLE'], ENV['SERVER']
else
# your full config
end
end