Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
|
Каталог статей |
Apache MySQL иРНP
Установку этого набора софта в один из многочисленных дистрибутивов Linuх. Мейу ieM выбор FreeBSD в этом случае может оказаться более подходящим.
Говоря об Apache MySQL и.РНP большинство админов имеют в виду стек LAMB подразумевающий Установку этого набора софта в один из многочисленных дистрибутивов Linux Между тeM выбор FreeBSD в этом случае может оказаться более подходящим.
В этой статье я расскажу о всех шагах, которые необходимо выполнить для того, чтобы поднять FгееВSD вместе со стеком [L)ДМР и не- скольким и инструмента м и адм и н истрирован ия на абсолютно голом сервере и сделать так, чтобы все это работало вместе без сбоев и непредвиденных ситyаций.
Шаг 1. Устанавливаем FreeBSD
ля начала нам понадобится сама операционная система, Идем на офи- циальную страничку FгееВSD [www.fгееЬsd,оrg], жмем по ссылке.Gеt FгееВSD Now>, далее выбираем версию 0С [на момент написа н ия ста- тьи досryпны были две версии: В,2- RELEASE и 7.4-RELEASE), архитекrypy[ amd64 или iЗВ6], нажимаем на ссылку[lSОJ ивидимсписокдосryпных образов, Всего их пять: booton [у - загрузочны й образ для установки по сети, disk1 - lS0 образдля записи на CD, dvd1 - образдля записи на DVD, Livefs - LiveCD без графического интерфейса, mеmstiсkдля записи на USВ-брелок. В нашем случае подходящими будцтолько первый и второй, а если в сети нет DHCP-cepBepa, то тол ько второй {DVD-образ качать смысла нет, потому ка к С D содержит все на м необходимое]. Итак, скачиваем lSO-образ, нарезаем его на болванку, вставляем в при- вод сервера и сбрасываем/включаем его. Хдем пока 0С загрузится. После окончания загрузки на экранедолжно появиться окно выбора страны и меню инсталлятора sysinstaL[, состоящее из двенадцати пунктов. Нас интересуеттолько один из них: .Ехргеss>, он позволяет уста новить опера цион ную систему ма кси мал ьно быстро, пропусти в многие предупреждающие сообщения, вопросы и настройки. Вы- бираем его, жмем <Епtегr. Появится окно программы для разбивки диска, Здесь можнолибо просто нажать <А> для использOвания всего диска, либо <С>, чтобы создать новый раздел в свободной области. Oднако, имей в виду, что FгееВSD используетдвухуровневую схему разметки диска при которой один стадартный DOS-раздел [в терминологии FгееВSD име- нуемый слайсом] можетсодержать в себе несколько ВSD-разделов, поэтому на этом шаге понадобится создатьтолько один раздел. По окончании нажимаем .Qr, чтобы выйти из программы. Следующее окно: вопрос об установке загрузчика, просто жмем .Епtег, чтобы установить загрузчик в MBR. Сразу после него появится 0кно разметчика созданного ранее раздела на ВSD-разделы. Здесь можно поэкспериментировать, но я бы рекомендовал просто нажать .А, чтобы программа сама разметила диск,.Щалее жмем <Q>, чтобы подтвердить изменения. Следующее окно: выбор источника установки. По дефолry в качестве источника используется CD/DVD поэтому простожмем <Епtег>. Под- тверждаем выбор нажатием <Епtег, в следующем окне. Теперь начнется процесс копирования файлов, по окончании кото- рого на экран будет выведено сообщение с вопросом о возвращении в главное меню инсталлятора. Нажимаем <Епtег>, далее.Хr, *YeS> и . Епtегr. 0пера цион ная система должна перезагрузиться. Н е за- бываем вынугьустановочныйдиск из привода, чтобы 0С загрузилась с жесткого диска. По окончании загрузки вводим имя пользователя гооt и получаем до- сryп к командному интерпретатору.
Шаг 2. Настройка
Мы только что установили FгееВSD, но она еще не готова ктому, чтобы выполнять роль полноценного сервера: сеть не работает, гооt не име- ет пароля, в системе только один пользователь. Исправим это. П е р во - н а п е р во, уста н о в и м п ол ьзо вател ю root п а рол ь :
# passwd Дважды вводи м па роль. !алее создади lй непри вилеги рова нного пользователя, учетную запись которого мы будем использовать для входа на сервер через SSН,.Щля этого воспользуемся командой аddusег:
# adduser
На экране будр появляться вопросы, на большинство из которых можно не да вать ответов (жать . Епtегr], вахны lv и я вляются только имя пользователя, дефолтовый кома ндны й и нтерп ретатор (лучше выбрать tcshJ и пароль. В конце команда выведет на экран получив- шийся сп исок настроек пол ьзователя, в ответ на которы й следует ввести слово <yes" [смотри скриншот], и в ответ на следующий вопрос ввести <<no>. Чтобы пользователь смог получать права гооt, добавим его в группу whee:
# рw gnoupmod wheel -m имя пользователя исп ра ви м фа йл /etc/fstab так, чтобы никто не смог запускать файлы, расположенн ые на разделах /tmр и /var. для этого добавим флаги <<nоехес>> в поле 0ptions каждого из этих разделов (смотри скриншот). Установим более жесткие ограничения на достyп к системным фай- ЛаМ:
# chmod 0600 /etc/syslog.conf # chmod 0600 /еtс/rс.соnf # chmod 0600 /etc/newsyslog.conf # chmod 0600 /etc/hosts.allow # chmod 0600 /etc/login.conf
Теперь нам нужно настроить сетевое соединение. Во FгееВSD все глобал ьн ые настройки хранятся в фа йле /еtс/rс.соnf, поэтому откры - ваем его с помощью редактора и добавляем следующие строки:
# ee/etc/rc.conf hostname="host. соm" lfconfig_em0= " inet 1. 2. 3. 4 netmask Oxffff fff f " defaultrouteг=" 5. 6.7. 8"
Здесь еm0 во второй строке - это имя настраиваемого сетевого интерфейса. Список всех доступных сетевых интерфейсов мохно получить с помощью команды ifconfiq. В качестве значения опции можно указать DHCP, тогда для конфигурирования интерфейса будет использован dhc[ient. Такхе сразудобавим несколько важных для нас опций: # ее /еtс/rс.соnf
# 0тключаем переадресацию пакетов и # регистрируем все попытки переадресации
icmp_drор_rеdirесt= "YЕS" icmp_log_redirect
# Запрещаем ответы на широковещательные рiтg-запрсы
icmp_bmcastecho=”NO”
# 0чищаем каталог /tmp при каждой загрузке сlеаr_tmр_enablе= "YЕS "
# Запрещаем обновление файла /etc/motd при кахдой загрузке update_motd=”NO”
# Не принимаем пакеты с одновременно установленными # флагами SYN и FIN tcp_drор_sуnfin="YES"
# 0тключаем sendmail
sendmail_enable= "NO" sendmail_submit_enable=”NO”
# включаем ssн
sshd_enable=”YES”
Чтобы выйти из редактора, нажимаем .ESc, и два раза .А>
Добавим адрес DNS-сервера в /еtc/resolv.conf # ее /etc/resolv.conf nameserver 8.8.8.8
Чтобы сетевые настройки всryпили в силу, выполняем следующию команду
# /etc/rc.d/netif rеtstаrt
Проверяем досryпность сети : # ping mail.ru
Добавим несколько полезных строк в файл /еtс/sуsсtl.соnf
# Не отвечать на попытки подключения к закрытым портам # (спасет от некоторых видов DoS-aTaK и затруднит # сканирование портов)
net.inet.tcp.blackhole=2 net.inet.udр.blackhole=1
# Разрешаем смотреть список всех процессов только rооt
kеrn.ps_showallprocs=0
Защитим SSH-cepBep от бррфорс-атак:
# echo "MaxStartups 5:50:10" >> /etc/ssh/sshd_config # /etc/rc.d/sshd rеstаrt
Теперь SSH-cepBep будет отбрасывать 50% новых подключений в случае, если будет произведено пять неправильных регистраций
Когда их станетдесять, сервер перестанет отвечать вовсе. При использовании экспресс-установки, система портов [фреЙм- ворк для установки стороннего П0 в 0С] не устанавливается во FгееВSD автоматически, поэтому нам надо сделать это вручную [этохорошо,потомучтотакмыполучимсамыйсвежийсрезпортов, не содержащий устаревшего дырявого П0:
# pontsnap fetch extract
также можно обновить базовую систему, однако это делать не обязательно
# freebsd-update fetch # freebsd-update install # shutdown -r now
После того как порты будр обновлены, установим в сисIему ин- струмент rkhuntеr нужный для отлова ругкитов, которые моryг быть установлены в систему в будущем:
# cd /usr/роrts/sесuritу/rkhunter # make install clean
0тредакти руем конфигурационный файл /usг/lосаl/еtс/rkhunter.соnf так, чтобы опция MAlL-ON-WARNlNG содержала emaiL, на который следует слать сообщения об обнаруженных аномалиях. Заставим инструмент проверить себя на обновления:
#rkhunter --update После этого создадим снимок системных файлов, который будет ИСПОЛьЗOВаТЬСЯ в КаЧеСТве ЭТаЛОНа вО ВРеМЯ ПОИСКа РУТКИТОВ: # rkhunter --propuрd
Далее добавим в файл /etc/periоdic.соnf две строки, бла годаря которым проверки обновлений и системы будут происходить каждый ДеН Ь: # echo'daily_rkhunter_update_enable="YES" ' > \ /etc/periodic.conf # echo'daily_rkhunter_check_enable="YES" ' > \ /etc/peniodic.conf
Все, теперь все сообщения о подозрительной системной активности будут помещаться в лог /var/lоg/rkhuntеr.lоg и отсылаться на указанный в конфигурационном файле email. flалее настроим сrоn на синхронизацию системных часов каждые ДВа ЧаСа:
# сrоntаb -е о2* * * rооt /usn/local/sbin/ntpdate рооI.ntр.оrg
Наконец, установим и Webmin, wеb-ориентированный интерфейс для удаленного уп ра влен ия сервером (те, кто п редпоч итает использовать для администрирования SSН, моryг п ропустить этот шаг, #cd /usr/ports/sysutils/webmin # mаkе install clean # echo 'Webmin_enable="YES"' >> /еtс/rс.соnf
Далее необходимо запустить конфигyратор Webmin:
# /usr/Iocal/lib/webmin/setup.sh
На вопросы л,4ожно отвечать нажатием .Епtегr, однако когда дело доЙдет до ввода па роля [строка " Login раsswоrd :"), следует вве- сти пароль на достyп к Webmin [лучше, если он будет отли чаться от остальных п ролей). .далее можно за пустить webmin:
# /usn/local/etc/rc.d/Webmin staгt
И протестировать его рабоry, введя адрес . https://host.com:'1 0000/" в адресную строку ближайшего браузера.
Амр Теперь настало время установить стекАМР, то есть - веб-сервер Apache, базуданных MySQL и интерпретатор РНР Сначала займемся Apache. Идем в порты и устанавливаем последнюю версию: # cd /usг/роrts/www/арасhе22 # make config instaII сlеаn На экране должно появиться окно конфиryраlора, с помощью которого ты можеш ь выбрать уста новку оп ционал ьн ых ком понентов сервера. Что-л ибо менять здесь см ысла нет, поэтому можеш ь смело жать < Епtег>. После окончания сборкииуста новки не забудь доба вить сервер в автозапуск [если поддерхка SSL не требуется, вторую строку мохно пропустить),
# echo'apache22_enable="YES"' >> /еtс/rс.соnf # echo'apache22ssl_enable="YES"' >> /etc/rc.conf
Также в конфиryрационный файл следуетдобавить инструкцию для загрузки модуля accf_http, который будет буферизировать НТТР- соединения, что разгрузит сервер и поможет в борьбе с SYN-флудом: # echo'accf_http_neady="YES"' >> /еtс/rс.соnf # kldload accf_http
Далее установим и нтерпретатор РНР пятой версии : #cd /usr/роrts/lаng/рhр5 #make соnfig install сlеаn
Убедись, что опция "BuiLd Apache moduLe> выбрана, Плюс несколько расширений к нему:
# cd /usг/ports/lang/phpS-extensions # make соnfig install clean Важно, чтобы на шаге конфиryрирования РНРты не забывал отметить пункт.MySQL data base suррогt>, п ри нужда ющий систему портов кустановке модуля РНРдля работы с MySQL. Без него ничего не заработает. Теперь открываем конфиryрационный файл Apache в текстовом редакторе во FгееВSD он запрятан далеко: /usг/lоса/еtс/арасhе22/httpd.conf и изменяем в нем следующее: 1. После строк Load Module доба вляем следующие две строки: AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
2. Находим опцию SеrvеrАdmin и прописываеIп в качестве ее значения свой почтовый адрес: SеrvеrАdmin me@site. соm З. В опци и DocumentRoot указы ваем каталог, в котором будуг храниться все файлы нашего веб-сайта: DocumentRoot " /home/www/data " Не забываем создать этот каталог: # mkdir /hоmе/www #mkdiг /home/www/data # mkdir /hоmе/www/сgi-bin
Я предпочитаю использовать в качестве корневого каталога /home/wwwT aK как, во-первых, каталог/hоmе обычно находится на самом большом разделе (автоконфигуратор разделов, который мы использовали в ходе установки, отводит под /hоmе большую часть пространства), а во-вторых, с ним проще работать, чем с какимнибудь /usr/lосаl/www/aраche22/data, запрятаннымвом ножествоподкатало гов. 4. Находим следующую строку: <Diпесtогу /usn/local/www/apache22/data> И меняем еетак, чтобы в качестве каталога былуказан DocumentRoot: <Dirесtоrу/home/WWW/data> 5. Меняем следующие строки: <ifModule din_moduIe> DiгectonyIndex index. htm1 </ifModule>
На эти: <ifModule dir_module> DiгectoryIndex index. php index. html </ifModule>
6. Внугри директивы .if lvloduLe aLias_moduLe> заменяем строку: ScriptAlias /cgi - bin/ " /usr/lосаl/www/арache22/cgi - bin/ " В от этой: ScriptAlias /cgi- bin/ "/home/www/cgi-bin/ " 7. Следующую строку: <Dirесtоrу "/usr/lосаl/www/арасhе22lс8i- bin" > заменяем этой: <Dirесtоrу " /hоmе/www/сgi-bin" > Сохраняем файл и создаем файл настроек РНР: # ср /usr/lосаl/еtс/рhр. ini-rесоmmеndеd /usг/local/etc/php. Ini
Этого будетдостаточнодля нормальной работы Apache совместно с РНР Теперь N4ожно присryпить кустановке MySQL. Идем в порты и ДелаеМ сЛедУЮЩее:
# cd /usr/роrts/dаtаbаsеs/mуsq150-sеrvеr # make WITH_OPENSSL=yes install clean
Создадим рудиментарный конфигyрационный файл, которого хватит На ПеРВОЕ ВРЕМЯ: #ee/etc/my.cnf [client] рогt=29912 [mysqld] pont=29912 bind-addгess=127.0.0.1
Добавим MySQL в автозагрузку и запустим сервер:
# echo 'mysql_enable="YES"' << /etc/nc.conf # /usr/lосаl/еtс/rс.d/mуsql-sеrvеr start
Установим пароль на досryп к базе данных; #mysqladmin -u rооt раsswогd пароль # mysq1 -u root -р Теперь MySQL должна нормально функционировать, но управлять базами данных вручную не оченьудобно, ктомуже, для некоторых это будет первый опытустановки MySQL, а с наскоку разобраться с ней не так-то просто. Поэтому уста новим вебинтерфейс управлен ия MySQL под названием PHPMyAdmin: # cd /usr/ports/databases/phpmyadmin # make install clean
Поправим конфиryрационный файл PHPMyAdmin, указав пароль на досryп к wеb-интерфейсу: # cd /usr/local/www/phpМyAdmin #ср config.sample.inc.php config.inc.php # ее соnfig.inс.рhр $cfg['blowfish_secnet' ] ='пароль' ; Теперь вновь открываем конфиryрационный файл Apache и делаем СЛеДУЮЩее: 1 . Всекцию <.ifМoduleаlias_modulе, добавляем следующую строку: Alias /phpmyadmin /usr/lосаl/www/рhрМуAdmin 2. В конец секции . Dirесtоry> добавляем следующие строки: <Diгесtоrу "/usr/lосаl/www/рhрМуАdmin" > Оrdеr allow, deny Allow frоm аll </Dirесtоrу> Здесь вместо .Allow fгоm all> можно доба вить что-то вроде "Allow frоm 12З.239.189.0/12", чтобы разреш ить достyп к РНPMyAdmin только из определенной подсети. Перезапускаем Apache: #/usr/lосаl/еtс/гс.d/арасhе22 rеstаrt Это все, теперь (АМРдолжен работать.) HTTPS РН PMyAdmin для корректной работы требует поддержку HTTPS, и вполне возможно, что в будущем тебе понадобится этот прото- кол для установления безопасного зашифрованного соединения между клиентом и сайтом. Поэтому сделаем так, чтобы Apache его понимал. Для начала исправим конфиryрационный файл OpenSSL (/etc/ssl/openssl.cnf), добавив в него следующие строки:
# Каталог для хранения сертификатов dir= /root/sslCA #Срок действия сертификата (-10 лет) default_days = 3650 Теперь подготовим каталог и создадиl\4 сертификаты для собственного центра сертификации: # cd /rооt # mkdin sslCA # chmod 700 sslcA # chmod 700 sslcA # mkdin private # cd sslCA # openssl геq -new -х5О9 -days З650 -extensions v3_ca \ -keyout private/cakey.pem -out сасегt.реm \ -config /etc/ss1/openss1. cnf Проверим, что сертификаты были созданы успешно:
# IS -1 сасегt.реm pnivate/cakey.pem Сгенерируем сертификаты для Apache и поместим их в каталог/еtс/ ssL: # cd /root/sslCA # openssl rеq -nеw -nodes -out имя_хоста-rеq.реm \ - keyout рrivаtе/имя_хоста - key. реm - соnfig /etc/ss1/openssl. cnf # openssl са -config /etc/ssl/openssl.cnf -out \ имя_хоста- сегt. реm -infi les имя_хоста- геq. Реm
#ср /rооt/sslСА/имя_хоста-сеrt. реm /etc/ssl/crt #ср /rооt/sslСА/рrivаtе/имя_хоста -key. реm /etc/ssl/key Снова открываем конфиryрационный файл Apache, находим следуюЩУЮ СТРОКУ И РаСКОММеНТИРУЕМ ее: # ее /usr/lосаl/еtс/арасhе22/httрd.соnf #Include etc/apache22/extra/httpd- ss1. conf В носим следующие изменения в файл /usг/Lосаl/еtс/аpрасhе22/ехtrа http-ssL.conf: fi ее /чsr/[осаUеtс/арасhе22/6хtrа/httр-gэ[.соnf # Имя HTTPS-cepвepa Sеrvernamе 5sI. host . соm # Путь до файла, содерхащего сертификат и ключ SSLcentifi catetiIe /еtс/ssl/сrtlуоurhоstnаmе-сеrt.реm SSLCertificateKeyFile /etc/ssl/key/уоurhоstnаmе-kеу.реm # То же, что и в главном конфиге DocumentRoot " /home/v*ludata " # Куда писать логи ЕrгоrLоg "/vаr/Iоg/httрd-еrrоr. log" ТrаnsfеrLоg "/var/log/httpd-access. log" Перезапускаем Apache: # /usr/lосаl/еtс/rс.d/арасhе22 rеstаrt Что дальше? В этой статье я показал, как поднять полностью работоспособный стек [L]AMP на базе FгееВSD [так что это скорее FАМРJ, и все, что тебетеперь нужно сделать, это скачать свой любимый сайтовый движок и развернуть его в каталог/hоmе/wwйdаtа (не забыв положить скрипты в /home/www/cgi-bin). Все остальное возьмет на себя [LAMP).
|
Категория: Мои статьи | Добавил: Admin (07.09.2011)
|
Просмотров: 1154
| Рейтинг: 0.0/0 |
|
|
|