|
![]() |
|
Установка сервера заключается в
установке трёх основных компонентов: Apache2, PHP5, MySQL5. Статья
будет содержать в себе установку при помощи PBI-пакетов, коллекции
портов и исходных кодов программ. Сразу хочу отметить, что настройка
программ независимо от метода установки везде одинакова. Настройку я
опишу после обозрения всех видов установки.
![]() Заметны сходства. Нажимаем «Next» и видим тоже самое сходство: ![]() «Next»: ![]()
...и установка закончена! Создаются ярлыки на исполняемые файлы, при
помощи которых точно так же, как в ОС Windows можно запускать
установленные программы. Все необходимые программы в виде PBI-пакетов
всегда можно скачать с адресов http://mirror.pcbsd.ru/PBI и
http://pbidir.com. На момент написания статьи были Apache2,
Apache2+PHP5, MySQL5. (Apache2.2.4-PV.pbi; Apache2_PHP5-PV1.0a.pbi).
Аналогичным образом устанавливают нужные нам компоненты(Apache, PHP,
MySQL).
Apache 1.x Apache 1.x Установим Apache13. # pkg_add -f apache-1.3.39_2.tbz Apache 2.x Установим Apache 22. # pkg_add -f apache-2.2.6_2.tbz PHP 5 Установим PHP 5. # pkg_add -f php5-5.2.5.tbz MySQL 5 Установим MySQL 5. # pkg_add -f mysql-server-5.1.22.tbz Посмотреть установленные пакеты можно командой # pkg_info. Увидим весь список пакетов. Если же интересует, например, только Apache, то пишем так: # pkg_info | grep apache. Удаляются пакеты тоже просто - командой: # pkg_delete -f имя_пакета. Ключ -f говорит о полной установке\удалению пакета, "не обращая" внимания на зависимости. Для просмотра дополнительных опций можно почитать: % man pkg_add. Мною перечисленных, считаю, вполне хватит. # ./configure # make # make install Этого достаточно, но тут можно познать все прелести UNIX-систем — очень гибкая установка приложений. Если дополнять команду # ./configure дополнительными параметрами, то можно очень оптимально сконфигурировать, а в дальнейшем установить то, или иное приложение. Параметр: --prefix=PREFIX указывает путь, куда необходимо устанавливать приложение. О дополнительных параметрах можно узнать, набрав: # ./configure --help. Если после установки программы скомпилированные фалы, модули, библиотеки не нужны, то выполняется команда: # make clean. Если же Вы ошиблись каким-либо параметром при установке, и программа уже установлена, то можно деинсталлировать её командой: # make uninstall. Начну я с установки Apache версии 1.3. сразу стоит заметить, что установка Apache 1.x и Apache 2.x различается. По ходу статьи это различие будет наглядно представлено. Apache 1.3 Скачал я русскую версию Apache13 по ссылке http://apache.lexa.ru/click?_URL=ftp://ftp.lexa.ru/pub/apache-rus/apache_1.3.41rusPL30.24.tar.gz. Выполняем следущие команды: # tar -zxvf apache_1.3.41rusPL30.24.tar.gz # cd apache_1.3.41rusPL30.24 # ./configure --prefix=/server --enable-module=so # make # make install # make clean Как я уже неоднократно описывал, можно для удобства записать все команды в одну: # tar -zxvf apache_1.3.41rusPL30.24.tar.gz && cd apache_1.3.41rusPL30.24 && ./configure --prefix=/server --enable-module=so && make && make install && make clean Apache 1.3 установлен. Разберёмся в его двух опциях конфигурации. --prefix=/server определяет директорию установки Apache. Если не указать её, то Apache мы бы нашли в /usr/bin. Но так как я обусловился устанавливать все программы в отдельную директорию, то применил данную опцию. --enable-module=so — эта опция нужна для того, чтобы Apache имел возможность работы с модулями. Как уже было описано в установке из портов, эта опция пригодится нам для того, чтобы подтянуть PHP, чтобы Apache и PHP могли работать в связке. Я использовал основные параметры установки Apache, которых будет вполне достаточно для нормальной баботы http-сервера. О дополнительных можно узнать набрав: # ./configure --help. --bindir=DIR — директория с исполняемыми файлами --sbindir=DIR — директория для администратора с исполняемыми файлами --libexecdir=DIR — директория с исполняемыми файлами установленых программ. Иначе говоря, там будет находиться модули, и, как позже увидим, там будет находиться модуль PHP --datadir=DIR — директория для данных(только чтение —по умолчанию стоит такой атрибут на директорию) --iconsdir=DIR — директория установленных иконок --htdocsdir=DIR — директория страницы приветствия(проверки работы сервера) --manualdir=DIR — директория с установленными «манами» --logfiledir=DIR — директория с логами Apache --add-module=FILE — служит для добавления при конфигурации какого-либо модуля --enable-module=NAME — включает модуль --disable-module=NAME — соответственно выключает модуль Вот ещё основные опции. Но, указав --prefix=/server, вышеперечисленные нет смысла указывать, хотя было бы наиболее грамотно.. запустим наш сервер. В документации сказано запустить некоторый скрипт. Сделаем это: # cd /server/bin # ./apachectl start У меня ответ выглядел следущим образом: a1ewka-gal4onok(PC-BSD)# ./apachectl start [Sun Jul 13 02:46:22 2008] [alert] httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName ./apachectl start: httpd started Cлишком много нам пока непонятного, не так ли? Мы уберём лишние строки, когда я буду описывать настройку конфигурации сервера, а пока немного потерпим.. по последней строке можно судить о том, что сервер запустился. Ну, а кто не верит, выполняет команду: # ps -ax | grep httpd. Что я увидел у себя в ответ на эту команду: a1ewka-gal4onok(PC-BSD)# ps -ax | grep httpd 53534 ?? Ss 0:00,01 /server/bin/httpd 53535 ?? I 0:00,00 /server/bin/httpd 53536 ?? I 0:00,00 /server/bin/httpd 53537 ?? I 0:00,00 /server/bin/httpd 53538 ?? I 0:00,00 /server/bin/httpd 53539 ?? I 0:00,00 /server/bin/httpd 60177 p2 S+ 0:00,00 grep httpd Всё работает! Останавливается сервер командой: # ./apachectl stop. a1ewka-gal4onok(PC-BSD)# ./apachectl stop ./apachectl stop: httpd stopped Существует и команда перезапуска сервера: # ./apachectl restart a1ewka-gal4onok(PC-BSD)# ./apachectl restart ./apachectl restart: httpd restarted И для более «мягкого» перезапуска: # ./apachectl graceful a1ewka-gal4onok(PC-BSD)# ./apachectl graceful ./apachectl graceful: httpd gracefully restarted Apache 2.x Ставится несколько иначе, но сильных различий нет. Скачиваем: http://apache.rinet.ru/dist/httpd/httpd-2.2.9.tar.gz. Выполняем: # tar -zxvf httpd-2.2.9.tar.gz && cd httpd-2.2.9 && ./configure --prefix=/server --enable-so && make && make install Как видим, отличие составляет лишь подключение модулей. Дополнительные опции одинаковы. Запуск и останов сервера Apache 2.2 точно такой же как и сервера Apache 1.3. MySQL 5 Скачиваем архив программы http://www.mysql.ru/cgi-bin/download/mysql-5.0.18.tar.gz, сохраняем где-нибудь. Для работы MySQL нам потребуется новая группа и новый пользователь MySQL. Обращаю внимание на то, что если до установки MySQL из исходников MySQL ставился из PBI/портов/пакетов следуется пропустить добавление группы и пользователя MySQL. Мысленно принимаю, что до этого момента MySQL не ставился на систему. Создаём группу и пользователя MySQL: # pw group add mysql # pw user add mysql -s /usr/sbin/nologin -d /server/bin/mysql -g mysql Всё, группу и пользователя добавили. Теперь ставим сам MySQL: # tar -zxvf mysql-5.0.18.tar.gz # cd mysql-5.0.18 # ./configure --prefix=/server --with-charset=cp1251 --with-extra-charset=all --with-mysqld=mysql --with-unix-socket-path=/tmp/mysql.sock # make # make install # cp support-files/my-medium.cnf /server/mysql.cnf # /server/mysql_install_db --user=mysql # chown -R mysql:mysql /server/var # make clean Или же запишу снова всё в одной строке: # pw group add mysql && pw user add mysql -s /usr/sbin/nologin -d /server/bin/mysql -g mysql && cd ../mysql-5.0.18 && ./configure --prefix=/server --with-charset=cp1251 --with-extra-charset=all --with-mysqld=mysql --with-unix-socket-path=/tmp/mysql.sock && make && make install && cp support-files/my-medium.cnf /server/mysql.cnf && make clean && cd /server/bin && /server/mysql_install_db --user=mysql && chown -R mysql:mysql /server/var && make clean MySQL установлен. Дополнительные опции конфигурации. --bindir=DIR; --sbindir=DIR; --libexecdir=DIR; --datadir=DIR; --mandir=DIR; эти команды выполняют те же самые действия, что и при установке Apache. --with-low-memory — при установке использовать минимизированное количество оперативной памяти --without-server — установить лишь MySQL-клиент(MySQL-сервер не устанавливается!) --with-openssl=DIR — установить поддержку SSL --without-man — не устанавливать мануал по MySQL --without-docs — не устанавливать документацию --with-big-tables — позволяет использовать большие таблицы(до 4.000.000.000 рядов на 32-битной платформе) И это далеко не все параметры. Тех, что я указал в своей установке, вполне достаточно для работы сервера. Опишу что делал. Ну, само собой, распаковка архива командой: # tar -zxvf mysql-5.0.18.tar.gz. Переходим в распакованную директорию, и начинаем конфигурировать. --prefix=/server - это уже понятно.. :) --with-charset=cp1251 — для того, чтобы MySQL понимал кодировку СР1251. При желании меняется на другие кодировки, например на --with-charset=koi8-r. --with-extra-charset=all — определение остальных кодировок на тот случай, когда кодировка по умолчанию в базе данных не присутствуется, применяется другая. --with-mysqld=mysql — для запуска «демона» с правами пользователя mysql, которого мы добавляли в систему перед установкой MySQL. ./mysql_install_db --user=mysql — запуск скрипта, который создаст рабочие базы данных. После выполнения скрипта, появится папка var в /server. --with-unix-socket-path=/tmp/mysql.sock — пусть сокет лежит вместе со всеми сокетами системы. В результате множества экспериментов я понял, что лучше сделать это именно так, иначе появляются проблемы с запуском MySQL. После этого можно копировать базу(ы) в server/var. Дальше необходимо установить права на этот каталог для пользователя mysql: # chown -R mysql:mysql /server/var В процессе конфигурации был создан файл support-files/my-medium.cnf. Собственно, это и есть конфигурационный файл MySQL, содержимое которого я рассморю несколько позже. Теперь внимание, сначала дочитайте до конца об этом файле, а потом действуйте. В процессе множества установок, я заметил, что этот файл вызывает ошибку, и сервер MySQL не запускается. Не будет бедой, если вы не скопируете этот файл. Если в параметрах конфигурации указать где будет находиться сам MySQL-сервер, его сокет, то вполне файл может даже и отсутствовать.. Для удобства запуска\остановки MySQL-сервера, мною был несколько доработан один скрипт. Вот что получилось в итоге: #!/bin/sh NAME="/server/bin/mysqld_safe" case "$1" in start) ${NAME} & echo "MySQL started..." ;; stop) killall `basename mysqld` echo "MySQL stopped" ;; *) echo "" echo "Usage: mysql.sh { start | stop }" echo "" ;; esac сохраняю данный листинг в, например, my.sh. Этот файл тоже лучше будет перенести к серверу(на мой взгляд): cp /home/a1ewka-gal4onok/Desktop/my.sh /server/bin/mysql.sh теперь из /server/bin будет наиболее удобно запускать либо всё вместе, либо же по отдельности. Из той же директории и Apache заускается. Хотя, дело вкуса, можно и написать один скрипт, который и будет выполнять старт и Apache, и MySQL. PHP 5 Для начала скачиваем архив с исходными кодами с php.net: http://ru.php.net/get/php-5.2.6.tar.gz/from/this/mirror Выполняем: # tar -zxvf php-5.2.6.tar.gz # cd php-5.2.6 # ./configure --prefix=/server --with-apxs=/server/bin/apxs --with-mysql=/server # make # make install # make clean Хочется сразу отметить отличие установки РНР5 в связке с Apach1x и Apache2x. --with-apxs=/server/bin/apxs установки с Apache 1.x, а --with-apxs2=/server/bin/apxs — для Apache 2.x. Опять же запишу всю команду в одну строку для удобства установки: ./configure --prefix=/server --with-apxs=/server/bin/apxs --with-mysql=/server --with-mysql-sock=/server/mysql.sock && make && make install && make clean Дополнительные параметры конфигурации: --bindir=DIR; --sbindir=DIR; --libexecdir=DIR; --datadir=DIR; --libdir=DIR; --mandir=DIR; --srcdir=DIR; - это мы уже разбирали. --host=HOST — установка для HOST(например, 127.0.0.1 или localhost) --with-apxs[=FILE] — связать с Apache1x --with-apxs2[=FILE] — связать с Apache2x --disable-cgi — отключить сборку CGI для РНР --enable-safe-mode — использовать безопасный режим по умолчанию --disable-ipv6 — отключить поддержку протокола Ipv6 --with-EXTENSION=[shared[,PATH]] — установить с дополнением --with-openssl[=DIR] — установить с поддержкой SSL --with-bz2[=DIR] — включить поддержку Bzip2 --enable-ftp — включить поддержку протокола FTP --with-gd[=DIR] — собрать с GD-библиотекой --with-jpeg-dir[=DIR]; --with-png-dir[=DIR]; --with-ttf[=DIR] — указываем путь jpeg-, png-, ttf- файлов для GD-библиотеки --with-msql[=DIR] — поддержка баз данных mSQL --with-mssql[=DIR] — поддержка баз данных MSSQL --with-mysql[=DIR] — поддержка баз данных MySQL --with-mysql-sock[=DIR] — учитывать сокет MySQL Опять же, это не все параметры конфигурации. Пришло время для оптимизации нашей установки связки. Ставить всё по отдельности крайне не хочется, а хочется, чтобы установка шла непрерывно. Поэтому все три архива, скрипт для запуска MySQL сохраняем в одной директории. Установка связки Apache 1.x + PHP 5 + MySQL 5 Выполняем следующую длинную команду: tar -zxvf apache_1.3.41rusPL30.24.tar.gz && tar -zxvf php-5.2.6.tar.gz && tar -zxvf mysql-5.0.18.tar.gz && cd apache_1.3.41rusPL30.24 && ./configure --prefix=/server --enable-module=so && make && make install && make clean && pw group add mysql && pw user add mysql -s /usr/sbin/nologin - d /server/bin/mysql -g mysql && cd ../ mysql-5.0.18 && ./configure --prefix=/server --with-mysqld-user=mysql --with-charset=cp1251 --with-extra-charset=all --with-unix-socket-path=/tmp/mysql.sock && make && make install && cp support-files/my-medium.cnf /server/mysql.cnf && make clean && cd ../php-5.2.6 && ./configure --prefix=/server --with-apxs=/server/bin/apxs --with-mysql=/server --with-mysql-sock=/tmp && make && make install && make clean && cd .. && cp my.sh /server/bin/mysql.sh && chown -R mysql:mysql /server/var && rm -rf apache_1.3.41rusPL30.24 && rm -rf mysql-5.0.18 && rm -rf php-5.2.6 && shutdown -r now Установка связки Apache 2.x + PHP 5 + MySQL 5 Выполняем аналогичную(почти) команду: tar -zxvf httpd-2.2.9.tar.gz && tar -zxvf php-5.2.6.tar.gz && tar -zxvf mysql-5.0.18.tar.gz && cd httpd-2.2.9 && ./configure --prefix=/server --enable-so && make && make install && make clean && pw group add mysql && pw user add mysql -s /usr/sbin/nologin -d /server/bin/mysql -g mysql && cd ../mysql-5.0.18 && ./configure --prefix=/server --with-mysqld-user=mysql --with-charset=cp1251 --with-extra-charset=all --with-unix-socket-path=/tmp/mysql.sock && make && make install && cp support-files/my-medium.cnf /server/mysql.cnf && make clean && cd ../php-5.2.6 && ./configure --prefix=/server --with-apxs2=/server/bin/apxs --with-mysql=/server --with-mysql-sock=/tmp make && make install && make clean && cd .. && cp my.sh /server/bin/mysql.sh && chown -R mysql:mysql /server/var && rm -rf httpd-2.2.9 && rm -rf mysql-5.0.18 && rm -rf php-5.2.6 && shutdown -r now Apache 1.x Если устанавливалось всё, как я описывал, то файл конфигурации Apache будет находиться в /server/conf/httpd.conf. Именно он единственный нам и понадобится. Править можно открыв файл в редакторе ee, или в Пуск-Система-Менеджер файлов(с root-привилегиями). Одним словом, правится файл от root-пользователя. ServerRoot "/server" — наглядно нам показывается, что Apache-сервер поставлен туда, куда мы хотели, и куда ставили :) PidFile /server/logs/httpd.pid — место, где будет храниться PID-файл при работе сервера Timeout 300; KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 MinSpareServers 5 MaxSpareServers 10 StartServers 5 MaxClients 150 MaxRequestsPerChild 0 — всё оставляем как есть. #Listen 3000 #Listen 12.34.56.78:80 — и это тоже. Используется для указания особого IP и номера порта, на котором будет работать Apache. Нам она не нужна. Всё держим в комментариях. LoadModule php5_module libexec/libphp5.so — говорит о том, что PHP5 установился и прописал свой модуль в Apache. Port 80 — порт, использующий Apache. User a1ewka-gal4onok Group a1ewka-gal4onok — поменял на себя, т.к. документы(мой локальный сайт находится в /home/a1ewka-gal4onok/localhost => права нужны пользователя a1ewka-gal4onok) ServerAdmin a1ewka-gal4onok@a1ewka-gal4onok(pc-bsd) — вообще, тут пишется e-mail администратора :) но можно и так оставить хост у меня — a1ewka-gal4onok(pc-bsd). DocumentRoot "/home/a1ewka-gal4onok/localhost" — делаю таким. Указываю директорию, где находится локальный сайт. В принципе, можно оставить и значение по умолчанию которое, но придётся в /server/htdocs копировать файлы локального сайта. Разберёмся с: Options Indexes Includes AllowOverride All Возможные значения: Includes - разрешить SSI (Server Side Includes); Indexes - разрешить выдачу листинга каталога, если в нем нет файла index.html (или файла индекса, заданного директивой DirectoryIndex); AllExecCGI - разрешить выполнение CGI-сценариев в данном каталоге и его поддереве; FollowSymLinks - разрешить переходы по символическим ссылкам (создаваемым командой ln); - установить сразу все перечисленные режимы кроме MultiViews MultiViews - разрешить поддержку многих языков; по умолчанию она отключена, и включать ее, как правило, не нужно; Настройки по умолчанию вполне нормальны и подходят для работы сервера. Находим блок с кучей комментариев, которые я опустил в статье: Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all Как видно, и тут я поменял рабочую директорию с моим локальным сайтом. DirectoryIndex index.php этот блок управляет приоритетом загружаемых индексных файлов. Например, вместо DirectoryIndex index.php я мог написать DirectoryIndex index.html index.php index.shtml. Что произойдёт в этом случае. Apache будет искать сначала в рабочей директории index.html, потом — index.php,и так далее. Если ничего найдено не будет, то выведется список файлов в рабочей директории, так как мы указывали Options Indexes Includes. Отмечу, что index.* можно переименовать в start.*. Кстати, это есть один из методов безопасности, о которой я буду вести речь в следущей статье. AccessFileName .htaccess — так и оставляем. Дальше всё оставляем по умолчанию, и добираемся до языков. Тут я оставил лишь Русский Язык, всё остальное закомментировал: #AddLanguage cs .cz .cs AddLanguage ru .ru #AddLanguage zh-TW .zh-tw и поменял кодировку(мой локальный сайт написан в кодировке cp1251): AddCharset WINDOWS-1251 .cp-1251 LanguagePriority ru en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw точно такой же приоритет языков, что и приоритет индексных файлов. Изменил на LanguagePriority ru en de Находим строчку: AddType application/x-tar .tgz, и после неё добавляем следующую строчку: AddType application/x-httpd-php .php. Она необходима для того, чтобы Apache смог запускать PHP-файлы. Дальше я менял кодировки на мне нужную. CharsetDefault cp1251 CharsetSourceEnc cp1251 CharsetDefault cp1251 На этом настройка Apache1x заканчивается, httpd.conf сохраняется. Apache 2.x Настраивается абсолютно аналогичным образом, только кодировки не придётся править. PHP 5 PHP настроен. Тут нам нечего править. MySQL 5 Файл настройки my.cnf MySQL5 должен находиться в /server. При необходимости можно поправить, например, порт, или PID-файл и его размещение. Установка из PBI-пакетов Проблем не было. Если что-то не работает, то либо неправильно сконфигурирована та или иная программа, либо же PBI-пакет криво собран. Установка из пакетов и коллекции портов Очень часто замечал, что после деинсталляции, например, Apache заново он не особо хотел устанавливаться. Ссылался на мешающий ему пакет — apr_dbd_mysql.rev-57(в зависимости от того, что икак ставилось). Для начала удаляется этот файл, на который ругается, например, Apache из /usr/var/db/pkg; /usr/var/db/ports; /usr/ports/distfiles. Потом выполняется: # make clean # make distclean — для портов и: # pkg_delete -f apache — для пакетов Установка из исходных кодов Все проблемы из-за неправильности написания опций при конфигурации. К статье также прилагаю файлы — архивы исходных кодов программ, которые я ставил, ошибок в конфигурации, компиляции и установки не возникало. |
|
|
|
|
|