СЕРВЕР С НУЛЯ НА FreeBSD 4.x
Установка FreeBSD 4.4-4.8 (Midnight
Commander), PROXY (FireWall, Squid, SquidGuard), WEB (Apache, MySQL, Nuke) c
НУЛЯ!
Здравствуйте! Надеюсь, что моя статья
поможет Вам хоть в чём-то разобраться!
СОДЕРЖАНИЕ
Вступление.
Требования к "железу".
1.Установка FreeBSD.
1.1. Установка Midnight Commander
(сокращённо MC).
1.2. Конфигурация и компиляция
нового ядра.
1.3. Настройка конфигурационных
файлов.
2.Установка и настройка SQUID
+ SquidGuard.
3.Установка, настройка, тестирование
MySQL.
4.Установка PHP4.
5.Установка WEB сервера Apaсhe.
6.Установка WEB портала на основе
NUKE 6.8 RUS.
Вступление! (можно пропустить… J)
Я работаю администратором в небольшом
городе на предприятии с компьютерным парком около 60 машин. Около полугода назад
у нас появился Интернет, а точнее выделенный радиоканал с приличной скоростью.
До недавнего времени для организации выхода в Интернет мы пользовались различными
программами (WinGate, WinRoute и т.д.), но они не удовлетворяли нас свой работой
(глюки, слабая защита, деньги, слабо поддерживаемая аунтификация пользователей
и т.д.). Но переходить на Unix систему мы не решались, из за незнания последней.
Но вот как-то потихоньку, своими силами я преодолел страх и решил всё-таки "сделать"
её. И это оказалось не так сложно. А точнее далее в статье пойдет речь о системе
FreeBSD 4.4. Все настройки данной системы, именно той конфигурации, о которой
пойдет речь я изучил примерно за 2-3 недели, и то не напрягаясь, т.е. помимо
этого занимаясь свой обычной работой.
Данная статья писалась из расчёта,
вдруг я через полгода или год забуду чё делал и опираясь на ниже изложенное
быстро всё поставил на место. (ВОТ ЧТО ЗНАЧИТ UNIX!!!! СПАСИБО СОЗДАТЕЛЯМ!!!
Это я про то, что долго работает… J).
И сразу ПРЕДУПРЕЖДЕНИЕ! В целях
БЕЗОПАСНОСТИ не собирайте на одном компьютере всё это вместе. Уязвимость в такой
конфигурации резко возрастает!
Итак начнём!
Наша задача:
1.Чтобы пользователи с любых компьютеров
имели доступ в Интернет со своим ником и паролем. (при этом велась статистика,
производилось управление доступом для каждого пользователя, велся контроль и
автоматический запрет на сайты не разрешенные администрацией, а также, кэширование,
обрезка банеров).
2.Что-бы у них была своя электронная
почта.
3.Чтобы у Нас был свой WEB информационный
сервер.
4.БОНУС - всегда точное время!
Краткое содержание:
Ещё раз отмечу! В целях безопасности
пункты 1-2 и 3-7 рекомендуется делать на разных рабочих станциях. (и не только
это).
Требования к "железу"!
Для PROXY сервера достаточно I486,
Mem 16Mb, HDD 1000Mb -основные показатели (но чем больше, тем лучше)
Для WEB, MAIL сервера рекомендую
P4 2Gz, Mem 512Mb-1Gb, HDD 80-120Gb (т.е. хороший компьютер, сетевые карточки,
видео уже на Ваше усмотрение, в зависимости от условий "обитания"
).
ВНИМАНИЕ! Данные конфигурации предназначены
для не больших предприятий и организаций. (у кого мало $$$$).
Ну а собиралось это всё первый раз
(тормоза были конечно хорошие, особенно при работе с WEB) на одном компьютере
следующей конфигурации I486, MemSIMM24Mb, HDD1000Mb, VideoS3, 2 Ithernet карты
по 10Mb - одна смотрела в мою сетку, другая в Интернет.
1.Установка FreeBSD.
www.freebsd.org
Установка FreeBSD в принципе проста
как …, но есть несколько нюансов.
У меня есть компакт диск FreeBSD
4.4 от МедиаХауз – на основе него всё нижеследующее. (но мне кажется, что и
с другими дистрибутивами всё происходит аналогично).
Установка FreeBSD возможна с таких
источников:
CD-ROM
Файловая система UNIX
Сетевая файловая система (NFS)
С раздела FAT (т.е. обычная DOS)
С узла FTP (в том числе из Internet)
Итак, для инсталляции вам потребуется
загрузочная дискета FreeBSD или загрузочный CD-ROM.
Дискетку можно сделать из DOS. На
инсталляционном CD-ROM-е заходим в каталог FLOPPYES. Там лежат файлы BOOT.FLP
и FIXIT.FLP. Находясь в DOS, выполняем команду
fdimage boot.flp a:
Программа FDIMAGE.EXE лежит в каталоге
TOOLS на том же инсталляционном CD-ROM-е.
Теперь запускаем компьютер с созданной
дискетки BOOT (в процессе загрузки может потребоваться вторая дискета).
Спустя некоторое время появиться
меню:
Skip kernel configuration and continue
with installation
Start kernel configuration in full-screen
visual mode
Start kernel configuration in ...
mode
Обычно можно продолжать без конфигурации
ядра. При этом идет опознание стандартных устройств так, чтобы по крайней мере
могла запуститься система. Я не думаю, что это хорошая идея добавлять новые
устройства в ядро во время инсталляции, а вот при некоторых конфигурациях вашего
железа было бы полезно залезть в ядро (второй или третий пункт) и по убирать
некоторые несуществующие у вас устройства или поменять их установки на действительные.
Из этого можно сделать такой вывод - сначала выбираем первый пункт, а если что-то
не проходит (по причине конфликтов железа), то при следующей загрузке с дискетки
BOOT выбираем второй или третий пункт.
После этого на монитор выводится
информация о найденных и не найденных устройствах, а потом вы оказываетесь в
диалоговом окне "Welcome to FreeBSD".
Сейчас вы можете посмотреть, какие
устройства были найдены в вашей системе. Для этого можно нажать комбинацию клавиш
ALT+F2. Вернуться назад - ALT+F1. Дальше я обычно выбираю пункт Standart и попадаю
в FDISK Partition Editor. Если у вас было обнаружено несколько физических дисков,
то перед этим вам будет предложено выбрать, на который будет производиться инсталляция
(не забудьте, выбираем ПРОБЕЛОМ). Тут мы видим полную картину о имеющихся на
диске разделах. Выбираем свободный и жмём на нём клавишу "C" (Create).
Далее обозначаем его размер (по умолчанию показывает полный доступный размер
в блоках, но если приписать в конце букву "M", то это будут уже мегабайты.
Затем указываем тип раздела - для FreeBSD это тип 165. Для выхода и сохранения
полученных результатов необходимо нажать "Q".
Теперь мы попадаем в окно "Install
Boot Manager for drive ..." и видим следующее:
BootMgr - инсталлировать стандартный
Boot Manager (позволит грузиться с нескольких операционок)
Standard - запишет в MBR стандартную
информацию о FreeBSD.
None - не трогать MBR вообще (вдруг
у вас там уже стоит какой-нибудь Boot Manager).
Выбираем нужное пробелом. Дальше,
если у вас несколько дисков, то вы снова попадёте на выбор диска. Жмите здесь
сразу ENTER.
Далее идёт программа для создания
логических разделов, необходимых для работы FreeBSD. Тут можно нажать на клавишу
"A" и программа сама создаст необходимые разделы. (помните, что в
версии FreeBSD 4.8 при автоматическом создании разделов – /var и /tmp создаются
по 256 Mb, что довольно много для 1Gb жесткого диска, так что имейте ввиду…
) Далее жмём на клавишу "Q".
Теперь в появившемся меню выделяем
пункт User (минимальная установка) и на вопрос установки портов отвечаем "NO".
Теперь заходим в CUSTOM и выбираем
SRC (исходные коды) ядра. Это позволит вам перекомпилировать ядро при изменениях
в конфигурации вашего железа или добавлении не обнаруженных устройств и дополнительных
опций. Поэтому выбираем пробелом "SRC", а там "SYS". (нам
компиляция ядра необходима для подключения FireWall-а).
Теперь выбираем EXIT. Здесь обозначаем
устройство, с которого будет проходить инсталляция. Если это CD-ROM, то больше
никаких вопросов к вам не будет. В других случаях возможно вам придется отконфигурировать
сетевые интерфейсы. Да, кстати, если вы будете ставить FreeBSD с раздела FAT16,
т.е. из под DOS-а, то назовите инсталляционный каталог FREEBSD (в оригинале
он 2.2.6-RELEASE или так, как версия вашей FreeBSD) и не забудьте – он должен
лежать на диске ‘С’.
Далее начинается сам процесс инсталляции.
Когда пройдет эта часть инсталляции, будет предложено настроить сеть, здесь
выбираем "NO", следующее окно тоже "NO". Хотите ли Вы сделать анонимный ftp
доступ "NO". Использовать машину как NFS сервер "NO". Как NFS клиент "NO". Выбор
степени безопасности "NO" для средней степени – этого нам хватит. Для CONSOLE
выбираем "YES", установите русскую кодировку. При этом учтите, что если вы хотите
читать DOS-овские тексты, то ставьте IBM 866 в FONTS и соответственно Russia
CP866 в KEYMAP. Далее "YES" для TIME ZONE. На вопрос
Is this machine's CMOS clock set
to UTC? If it is set to local time, please choose NO here!
отвечайте NO. При выборе совместимости
с линуксовыми бинарниками – выбираем нужное или как я вообще пока не выбираю,
т.е. "NO". Далее настройка мыши, так как мне она не нужна жму "NO". И наконец
спросит про до установку пакетов, здесь выбираем так же "NO".
Вот и все. жмите на EXIT, а там на
EXIT INSTALLATION.
На этом установка FreeBSD завершена,
пойдём дальше…
Примечание: установка пароля для
ROOT, добавление пользователей и другие "вещи" я делаю потом через /stand/sysinstall.
1.1. Установка Midnight Commander
(сокращённо MC).
http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/
МС – это файловый менеджер со многими
утилитами (сильно похож на Norton Commander NC – его многие знают, особенно
пользователи MS-DOS). Я его почти сразу начал использовать – отличное решение
для пользователей командной оболочки UNIX систем. Есть конечно и альтернативы,
но сейчас речь пойдёт ни о них…
С помощью МС гораздо быстрее работать
с системой – создавать каталоги, редактировать файлы, "перемещаться" по системе.
Его установка так же проста как и
использование…
Единственное что нужно иметь в системе
– это установленный пакет glib, который есть в составе дистрибутива FreeBSD,
если последний не установлен при компиляции будет ошибка с ссылкой на этот пакет.
Итак, если не установлен glib, устанавливаем,
можно через /stand/sysinstall
-Качаем с сайта сам МС http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/
дистрибутив
-Распаковываем
# tar –zxvf mc-х.х.х.tar.gz
-С помощью команды ‘cd’ заходим в
распакованный каталог,
-выполняем
# ./configure
# make
# make install
-Перегружаем сервер ‘sync + reboot’
(‘sync’ используется для сброса данных на жёсткий диск из оперативной памяти,
для предотвращения потери информации. Это рекомендуется делать при каждой перезагрузке
сервера, но правда не обязательно).
-Всё, установка завершена, для запуска
набирайте в командной строке ‘mc’.
Примечание: У меня на компе стоит
несколько ОС. Так как у меня все пакеты в основном лежат в DOS, то для подключения
DOS разделов я пользуюсь следующей командой: mount –t msdos /dev/ad2s5 /mnt,
где параметры –t и msdos служат для подключения dos разделов; /dev/ad2s5 это
определённый extended раздел - adX – IDE drive может быть 0,1,2,3 – смотря как
диск подключен, sX – это уже extended разделы на Вашем диске; /mnt – каталог
в FreeBSD, куда будет смонтирован DOS раздел – он уже есть, но можно создать
и свой.
Далее я буду пользоваться этим файловым
менеджером для создания каталогов, распаковки tar архивов и т.д. (просто мне
так удобнее…).
1.2. Конфигурация и компиляция
нового ядра.
Как уже говорилось выше, нам необходимо
сделать из нашего "железа" PROXI сервер, при этом необходимо сконфигурировать
ядро с поддержкой FireWall (это обеспечивает контроль безопасности Нашей сети
при подключении к Интернет каналу) и далее поставить необходимое ПО, но это
далее…
А сейчас давайте займёмся ядром!
А точнее всего лишь небольшим конфигурационным
файлом GENERIC, который лежит в каталоге /usr/src/sys/i386/conf
Переименовываем его например в my
# cp GENERIC my
И далее редактируем (в МС это клавиша
‘F4’).
Ну я думаю здесь несложно. Главное
немного понимать в "железе", узнайте какое и как стоит и закомментируйте лишнее.
Т.е. если нет USB, CD-ROM, SCSI или ещё чего – просто поставьте напротив всех
строчек с указанием на то или иное устройство # решетку (смертный приговор J).
Если взять мой файл и убрать всё
лишнее, то получиться, вообще всё просто:
machine i386 (в моём случае
это именно эта машина, я думаю и в вашем тоже)
cpu I486_CPU (тип процессора
– узнать можно при загрузке уже установленной
системы)
ident my (имя нашего конфигурационного
файла)
maxusers 256 (максимальное
количество User-ов – рекомендуется не меньше
256, - кстати ставил меньше
– работает хуже)
options NMBCLUSTERS=65536
options INET #InterNETworking
options FFS #Berkeley Fast
Filesystem
options FFS_ROOT #FFS usable
as root device [keep this!]
options SOFTUPDATES #Enable
FFS soft updates support
options MFS #Memory Filesystem
options MD_ROOT #MD is a
potential root device
options MSDOSFS #MSDOS Filesystem
options CD9660 #ISO 9660
Filesystem
options CD9660_ROOT #CD-ROM
usable as root, CD9660 required
options PROCFS #Process
filesystem
options COMPAT_43 #Compatible
with BSD 4.3 [KEEP THIS!]
options USERCONFIG #boot
-c editor
options VISUAL_USERCONFIG
#visual boot -c editor
options KTRACE #ktrace(1)
support
options SYSVMSG #SYSV-style
message queues
options SYSVSEM #SYSV-style
semaphores
options P1003_1B #Posix
P1003_1B real-time extensions
options _KPOSIX_PRIORITY_SCHEDULING
options KBD_INSTALL_CDEV
# install a CDEV entry in /dev
options TCP_DROP_SYNFIN
##### FIREWALL (Эти строчки,
из за которых мы и начали вообщем то весь этот
# "сыр-бор", для поддержки
FireWall-а)
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPDIVERT
device isa
device pci
device fdc0 at isa? port
IO_FD1 irq 6 drq 2
device fd0 at fdc0 drive
0
device ata0 at isa? port
IO_WD1 irq 14
device ata1 at isa? port
IO_WD2 irq 15
device ata
device atadisk # ATA disk
drives
device atapicd # ATAPI CDROM
drives
options ATA_STATIC_ID #Static
device numbering
device atkbdc0 at isa? port
IO_KBD
device atkbd0 at atkbdc?
irq 1 flags 0x1
device psm0 at atkbdc? irq
12
device vga0 at isa?
pseudo-device splash
device sc0 at isa? flags
0x100
# Floating point support
- do not disable.
device npx0 at nexus? port
IO_NPX irq 13
# PCI Ethernet NICs that
use the common MII bus controller code.
device miibus # MII bus
support (это я так понял лучше не удалять, т.к. без miibus
# у меня не шла компиляция)
device fxp # Intel EtherExpress
PRO/100B (82557, 82558)
# ISA Ethernet NICs.
device ed0 at isa? port
0x280 irq 10 iomem 0xd8000
# Pseudo devices - the number
indicates how many units to allocate.
pseudo-device loop # Network
loopback
pseudo-device ether # Ethernet
support
pseudo-device pty # Pseudo-ttys
(telnet etc)
pseudo-device md # Memory
"disks"
# The `bpf' pseudo-device
enables the Berkeley Packet Filter.
# Be aware of the administrative
consequences of enabling this!
pseudo-device bpf #Berkeley
packet filter
# USB support
device usb # USB Bus (required)
т.е. комментируем не нужные строчки,
и добавляем нужные.
После редактирования сохраняем файл
(в МС это ‘F2’) и далее
# config my
Если всё прошло успешно, без ошибок,
то переходим в каталог /usr/src/sys/compile/my и выполняем:
# make depend
# make
# make install
Если возникли ошибки на одном из
этапов, правим дальше наш файл ‘my’, т.е. ищем в нём ошибки (кстати, часть из
них может быть показана при выполнении компиляции или конфигурации – смотрите
внимательнее – на чём всё вдруг остановиться).
Но я надеюсь, всё прошло гладко,
теперь ядро готово, оно автоматически заменилось, а старое ядро переименовалось
в kernel.old. Перезагружаемся ‘sync’+’reboot’ и смотрим:
-Если загрузка прошла успешно, то
всё "ок" – будем идти дальше…
-Если нет, то при перезагрузке вначале
нажимаем клавишу ‘del’ и в командной строчке набираем ‘kernel.old’ – при этом
будет загружено старое ядро и всё останется по-прежнему. Теперь Вам нужно опять
"копать" файл ‘my’ до победного конца.
Опять же не будем отвлекаться на
это – в конце статьи я приведу ссылки на источники с обширным содержанием по
всем этим вопросам.
1.3. Настройка конфигурационных
файлов.
Для успешной работы нашего PROXY
необходимо настроить систему, а именно отредактировать следующие файлы rc.conf,
rc.firewall, natd.conf, inetd.conf и если необходимо некоторые другие…
Внимание! До этого момента сеть не
будет работать, так как весь доступ будет запрещен!
rc.conf
local_startup="/usr/local/etc/rc.d"
# каталог для автоматической загрузки, как в Windows
# Автозагрузка
hostname="localhost"
# Хост имя
named_enable="YES"
firewall_enable="YES"
# Активация FireWall
firewall_script="/etc/rc.firewall"
# Конфигурационный файл для FireWall-а
firewall_type="MY"
# Выполняемый скрипт в конфигурационном файле
# rc.firewall
firewall_logging="YES"
natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="192.168.1.1"
natd_flags="-f /etc/natd.conf"
tcp_extensions="NO"
tcp_drop_synfin="YES"
icmp_drop_redirect="YES"
icmp_log_redirect="YES"
ifconfig_ed0="inet
192.168.1.1 netmask 255.255.255.192" # адрес, указанный провайдером
ifconfig_fxp0="inet
192.168.0.1 netmask 255.255.255.0" # наш внутренний адрес
ifconfig_ed0_alias0="inet
192.168.2.1 netmask 255.255.255.255" (это виртуальный адрес
# привязанный к сетевой
карточке ed0 – он нужен нам для привязки
# своего сервера с адресом
в сети Интернет)
amd_enable="NO"
defaultrouter="192.168.1.2"
gateway_enable="YES"
# Подключение кириллицы,
т.е. русского языка
keymap="ru.koi8-r"
keychange="61 [[K"
scrnmap="koi8-r2cp866"
font8x16="cp866b-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"
#saver="logo"
sendmail_enable="YES"
# активация маил-демона для отправки электронной почты
check_quotas="NO"
kern_securelevel_enable="NO"
sshd_enable="YES"
# разрешается использование протокола SSH, более безопасного чем telnet
# через него как раз я
и работаю, используя в Windows-е клиент PuTTY.
nfs_reserved_port_only="YES"
mousechar_start="30"
nisdomainname="NO"
### Network Time Services
options: ### Подключение демона для синхронизации времени. Если конечно Вы его
будете ставить (в этой статье он не описывается)
timed_enable="NO"
# Run the time daemon (or NO).
timed_flags=""
# Flags to timed (if enabled).
ntpdate_enable="NO"
# Run ntpdate to sync time on boot (or NO).
ntpdate_program="/usr/local/bin/ntpdate"
# path to ntpdate, if you want a different one.
ntpdate_flags=""
# Flags to ntpdate (if enabled).
xntpd_enable="YES"
xntpd_program="/usr/local/bin/ntpd"
xntpd_flags="-p /var/run/ntpd.pid"
rc.firewall
if [ -z "${source_rc_confs_defined}"
]; then
if [ -r /etc/defaults/rc.conf
]; then
. /etc/defaults/rc.conf
source_rc_confs
elif [ -r /etc/rc.conf
]; then
. /etc/rc.conf
fi
fi
if [ -n "${1}"
]; then
firewall_type="${1}"
fi
############
# Set quiet mode if requested
#
case ${firewall_quiet} in
[Yy][Ee][Ss])
fwcmd="/sbin/ipfw
-q"
;;
*)
fwcmd="/sbin/ipfw"
;;
esac
############
# Flush out the list before
we begin.
#
${fwcmd} -f flush
[Mm][Yy]) # Нам нужна по
сути только эта группа
# set these to your outside
interface network and netmask and ip
oif="ed0"
onet="192.168.1.0"
omask="255.255.192.0"
oip="192.168.1.1"
# set these to your inside
interface network and netmask and ip
iif="xl0"
inet="192.168.0.0"
imask="255.255.255.0"
iip="192.168.0.1"
#############
${fwcmd} add divert natd
all from ${inet}:${imask} to any out via ${oif}
${fwcmd} add divert natd
all from any to ${oip} in via ${oif}
${fwcmd} add deny all from
any to 127.0.0.0/8
${fwcmd} add deny ip from
127.0.0.0/8 to any
${fwcmd} add pass all from
any to any via ${iif}
${fwcmd} add pass ICMP
from any to any
${fwcmd} add deny icmp
from any to any frag
#smtp
${fwcmd} add pass tcp from
any to any 25
${fwcmd} add pass tcp from
any 25 to any
#ftp
${fwcmd} add pass tcp from
any 21 to any
${fwcmd} add pass tcp from
any to any 21
${fwcmd} add pass tcp from
any 20 to any
${fwcmd} add pass tcp from
any to any 20
#sof2 для игрушки
${fwcmd} add pass udp from
any to any 8100
${fwcmd} add pass udp from
any 8100 to any
${fwcmd} add pass udp from
any to any 20102
${fwcmd} add pass udp from
any 20102 to any
${fwcmd} add pass udp from
any to any 20100
${fwcmd} add pass udp from
any 20100 to any
#ICQ
${fwcmd} add pass tcp from
any to any 5190
${fwcmd} add pass tcp from
any 5190 to any
# DNS
${fwcmd} add pass udp from
any to any 53
${fwcmd} add pass udp from
any 53 to any
#pop
${fwcmd} add pass tcp from
any to any 110
${fwcmd} add pass tcp from
any 110 to any
#for squid
${fwcmd} add pass tcp from
192.168.1.1 to any 80
${fwcmd} add pass tcp from
any 80 to 192.168.1.1
${fwcmd} add pass tcp from
any to any 8101
${fwcmd} add pass tcp from
any 8101 to any
case ${natd_enable} in
[Yy][Ee][Ss])
if [ -n "${natd_interface}"
]; then
# ${fwcmd} add divert natd
all from any to any via ${natd_interface}
fi
;;
esac
[Uu][Nn][Kk][Nn][Oo][Ww][Nn])
;;
*)
if [ -r "${firewall_type}"
]; then
${fwcmd} ${firewall_flags}
${firewall_type}
fi
;;
esac
natd.conf
# всё гениально просто
log yes
log_denied no
use_sockets yes
same_ports yes
unregistered_only yes
dynamic yes
inetd.conf
ftp stream tcp nowait root
/usr/libexec/ftpd ftpd -l
здесь мне пока нужна только эта строчка
для активации ftp. Раскомментируем её.
Если что упустил, пишите мне на мыло
sysad@vlankas.ru – постараюсь исправить…
2.Установка и настройка SQUID.
http://squid.directnet.ru/
Установка Squid заключается в следующем!
-Скачиваем дистрибутив, в моём случае
squid-2.5.STABLE3.tar.gz,
- распаковываем, далее:
# ./configure
# make
# make install
-Для подключения модуля аунтификации
заходим в каталоге squid-а в /helpers/basic_auth/NCSA и выполняем:
# make
# make install
Примечание: Можно так же собрать
Squid сразу с NCSA – вроде так (./configure --enable-basic-auth-helpers="NCSA")
Далее нам необходимо воспользоваться
утилитой htpasswd из пакета Apache для создания файла с пользователями и паролями
для доступа в Интернет.
Эта утилита находиться в /usr/local/apache/bin.
Если Вы полностью руководствуетесь этой статьёй, то у Вас ещё не стоит Apache.
Так что ставим. (смотрите пункт 4)
Далее заходим в вышеуказанный каталог
и выполняем:
# cd /usr/local/apache/bin
# ./htpasswd –c /usr/local/squid/etc/passwd
user password,
где –c – создание файла passwd; /usr/local/squid/etc
– путь до этого файла; user – имя пользователя, password – пароль для этого
для него (не забывайте, что регистр здесь учитывается, т.е. заглавные и обычные
символы).
Если запустить htpasswd без параметров,
то будет выведена подсказка – посмотрите её, там всё понятно.
На этом с установкой всё, переходим
к настройке.
Так как файл squid.conf, который
лежит у меня в /usr/local/squid/etc, большой, то я привету, только те опции,
которые у меня задействованы:
Squid.conf
http_port 3128
#We recommend you to use
at least the following line.
hierarchy_stoplist cgi-bin
?
#We recommend you to use
the following two lines.
acl QUERY urlpath_regex
cgi-bin ?
no_cache deny QUERY
# OPTIONS WHICH AFFECT THE
CACHE SIZE
# -----------------------------------------------------------------------------
cache_mem 8 MB
cache_swap_low 80
cache_swap_high 85
# LOGFILE PATHNAMES AND
CACHE DIRECTORIES
# -----------------------------------------------------------------------------
cache_dir ufs /usr/local/squid/var/cache
50 16 256
cache_access_log /usr/local/squid/var/logs/access.log
cache_log /usr/local/squid/var/logs/cache.log
# OPTIONS FOR EXTERNAL SUPPORT
PROGRAMS
# -----------------------------------------------------------------------------
dns_nameservers 192.168.0.14
# Подключение модуля аунтификации
auth_param basic program
/usr/local/squid/libexec/ncsa_auth /usr/local/squid/etc/passwd # файл и путь
куда мы будем добавлять пользователей
auth_param basic realm User
and Password # приветствие в авторизационном окне
auth_param basic credentialsttl
2 hours
# OPTIONS FOR TUNING THE
CACHE
# -----------------------------------------------------------------------------
#Suggested default:
refresh_pattern ^ftp: 1440
20% 10080
refresh_pattern ^gopher:
1440 0% 1440
refresh_pattern . 0 20%
4320
# ACCESS CONTROLS контроль
доступа (основная загвоздка – это здесь!)
# -----------------------------------------------------------------------------
acl all src 0.0.0.0/0.0.0.0
acl myip src 192.168.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 #
http
acl Safe_ports port 21 #
ftp
acl Safe_ports port 13
acl Safe_ports port 123
# https, ntp
acl Safe_ports port 488
# gss-http
acl MY proxy_auth REQUIRED
#Default:
http_access allow myip #
разрешаем доступ myip, т.е. это мой адрес (одной машины) где доступ будет без
авторизации.
http_access allow MY # разрешаем
аунтификацию
http_access deny all # остальное
запрещаем
# ADMINISTRATIVE PARAMETERS
# -----------------------------------------------------------------------------
#Default:
cache_mgr sysad@my.my
cache_effective_user nobody
visible_hostname 192.168.0.1
# Ваш локальный IP адрес сервера
#Default:
error_directory /usr/local/squid/share/errors/Russian-1251
# Leave coredumps in the
first cache dir
coredump_dir /usr/local/squid/var/cache
Настало время создать директорию,
в которой у нас будет храниться кэш squid.
# mkdir /usr/local/squid/var/cache
#можно через MC клавишей "F7"
А тут у нас будут лежать логи.
# mkdir /usr/local/squid/var/logs
Нужно позаботиться, чтобы директории /usr/local/squid/var/cache и /usr/local/squid/var/logs
были доступны пользователю, от имени которого работает squid. Узнать имя этого
пользователя можно так:
# cat /usr/local/squid/etc/squid.conf
| grep cache_effectiv
cache_effective_user nobody
сache_effective_group nogroup
Получается, что пользователя зовут nobody, и группа у него nogroup.
# chown -R nobody /usr/local/squid/cache
/usr/local/squid/logs
# /usr/local/squid/sbin/squid -z
Внутри директории /usr/local/squid/var/cache создаем иерархию директорий для
хранения кэш файлов. Заглянув в /usr/local/squid/var/cache, вы сразу поймете,
что имелось в виду под словом иерархия.
Запускаем squid.
# /usr/local/squid/sbin/squid
-D
Надеюсь, что squid у Вас заработал.
SquidGuard
http://www.squidguard.org/
(Раздел про настройку squidguard взят из статьи Андрея Бешкова "Система фильтрации интернет траффика на основе squidGuard + Apache + Squid + Berkeley DB")
Для полного удовлетворения, как души,
так и начальства! С целью экономии трафика. Рекомендую поставить ещё и SquidGuard.
Отличная "штука". Основные возможности:
-может разрешить доступ некоторой
группе пользователей только к некоторым сайтам
-блокирует доступ пользователей к
определенному списку адресов
-позволяет запретить доступ к определенному
списку адресов
-помогает блокировать доступ к сайтам
на основе списка регулярных выражений
-запрещает пользователям использовать
IP адреса вместо доменных имен внутри URL
-позволяет запретить доступ к определенному
списку адресов
-дает возможность перенаправить пользователей,
пытающихся получить доступ к запрещенным страницам, на другую страницу, где
им будет объяснена причина запрета
-помогает перенаправить запросы на
доставку часто скачиваемый файлов, таких как MSIE, Netscape Navigator или ICQ,
к их локальным копиям
-позволяет использовать разные политики
доступа в зависимости от времени дня, текущей даты, дня недели
-дает возможность гибкой настройки
процесса протоколирования обрабатываемых запросов.
Так что это то, что Нам нужно. Итак:
Для начала создаем директорию в Apache,
где будут лежать пустой баннер и файл mp3 с каким-либо звуком.
# mkdir /usr/local/apache/htdocs/replace
Кладем туда 1x1.gif и my.mp3. Берем block.cgi и копируем его в /usr/local/apache/cgi-bin
Выставляем ему нужные права:
# chown nobody:wheel /usr/local/apache/cgi-bin/block.cgi
# chmod 500 /usr/local/apache/cgi-bin/block.cgi
block.cgi это perl скрипт который будет вызываться каждый раз, когда пользователь
попытается посетить запрещенную страницу. Взять его нужно из архива с дистрибутивом
squidGuard. В первоначальном варианте этот скрипт назывался squidGuard-1.2.0/samples/squidGuard.cgi.in.
Для самой же установки нам понадобятся
Berkeley DB 3.2.9. В свою очередь, Berkeley DB не соберется без libtool. Libtool
устанвливаеться с самого дистрибутива FreeBSD а Berkeley DB нужно скачать с
сайта http://www.sleepycat.com/update/index.html.
Устанавливаем libtool через /stand/sysinstall
-скачиваем и распаковываем Berkeley DB (в моём случае Berkeley DB 3.2.9)
-выполняем в db-3.2.9/dist
# ./configure –prefix=/usr/local/BerkeleyDB
# make
# make install
По умолчанию у Нас всё это поставилось
в /usr/local/BerkeleyDB.4.1
Теперь приступим к самому SquidGuard-у
-качаем (http://www.squidguard.org/download/)
и распаковываем,
-выполняем
# ./configure --prefix=/usr/local/squidGuard
--with-db=/usr/local/BerkeleyDB --with-sg-config=/usr/local/squidGuard/squidGuard.conf
--with-sg-logdir=/usr/local/squidGuard/log --with-sg-dbhome=/usr/local/squidGuard/db
# Не забывайте! Здесь это всё в одной строчке.
# make
# make test
# make install
Cоздаем для хранения файлов протоколирования работы squidGuard директорию /usr/local/squidGuard/log.
# mkdir /usr/local/squidGuard/log
Официальный список блокируемых доменов можно взять на сайте http://www.squidguard.org/blacklist/.
Можно воспользоваться и другими (кстати
они даже лучше), но мне для начало и этот не плох.
Скачав себе один из списком распакуем
его в директорию /usr/local/squidGuard/db :
# tar zxvf blacklists.tgz
-C /usr/local/squidGuard
# mv /usr/local/squidGuard/blacklists /usr/local/squidGuard/db
В директории /usr/local/squidGuard/db появилось несколько поддиректорий.
Примечание: Не забывайте, все эти
операции, гораздо быстрее сделать в MC.
Внутри каждой директории, образованной
в /usr/local/squidGuard/db, можно увидеть файлы обновлений к базам с такими
названиями:
domains.20020825.diff
domains.20020901.diff
domains.20020908.diff
domains.20020915.diff
domains.20020922.diff
Внутри каждого из этих файлов находятся записи вида:
+xratedpornsite.com
+209.51.157.43
-zena.cenhost.com
-scuzz.xtac.com
Так же в директории находятся файлы:
urls.20020825.diff
urls.20020901.diff
urls.20020908.diff
urls.20020915.diff
urls.20020922.diff
С записями вроде
-silva.org/look_at_me
+recom.it/fuck/beatrice
Записи, начинающиеся знаком "+", это запрос на добавление строчки
в главную базу. Соответственно, строки с минусом имеют обратное назначение.
К сожалению применить файлы обновления можно только к базе в формате Berkeley
DB. Выполняется это действие командой squidGuard -u. Мне кажется, что такой
способ обновления не очень удобен. Поэтому нам следует либо отказаться от списка
доменов составленного squidGuard, либо написать конвертор обновлений в нормальный
формат.
Далее редактируем конфигурационный
файл
squidGuard.conf
:
logdir /usr/local/squidGuard/log
dbhome /usr/local/squidGuard/db
src it-departament {
ip 192.168.0.1-192.168.0.3
}
src ostalnoe {
ip 192.168.0.4-192.168.0.255
}
rewrite mp3 {
s@.*.mp3$@http:// Ваш_локальный_адрес_сайта
/replace/my.mp3@r
log rewr_mp3
}
dest porn {
domainlist porn/domains
urllist porn/urls
log porn
}
dest ads {
domainlist ads/domains
urllist ads/urls
log ads
redirect http:// Ваш_локальный_адрес_сайта
/replace/1x1.gif
}
dest banners {
domainlist banners/domains
expressionlist banners/expressions
urllist banners/urls
redirect http://Ваш_локальный_адрес_сайта/replace/1x1.gif
log banners
}
dest local-ok {
domainlist local-ok/domains
urllist local-ok/urls
}
dest local-block {
domainlist local-block/domains
urllist local-block/urls
redirect http:// Ваш_локальный_адрес_сайта/cgi-bin/block.cgi?clientaddr=%a&clientname=%n&clientident=%i& clientgroup=%s&targetgroup=%t&url=%u
}
acl {
# начинаем раздавать права
it-department {
pass local-ok !banners !ads
all
# отделу ИТ можно все кроме
рекламы
}
ostalnoe {
pass local-ok !porn !banners
!ads !local-block all
redirect http:// Ваш_локальный_адрес_сайта
/cgi-bin/block.cgi?clientaddr=%a&clientname=%n&clientident=%i&clientgroup=%s& targetgroup=%t&url=%u
rewrite mp3
}
default {
# действия выполняемые
по умолчанию, если пользователь не описан ни в одном src
pass none
# блокируем все
redirect http:// Ваш_локальный_адрес_сайта
/cgi-bin/block.cgi?clientaddr=%a&clientname=%n&clientident=%i&clientgroup=%s& targetgroup=Not_Authorized&url=%u
log default
# пишем логи в файл /usr/local/squidGuard/log/default
}
}
# закрываем список acl
Качаем базу баннеров с по адресу
http://www.vlankas.ru/files/banners.tar.gz
Потом вы сможете вносить в нее свои собственные записи. Иначе при запуске squidGuard
будет жаловаться на ее отсутствие, и становиться в режим холостой работы. В
этом режиме он будет пропускать все запросы без обработки. Создаём в /usr/local/squidGuard/db
каталог banners и распаковываем в него скаченный файл.
Покончив с файлом конфигурации, продолжим
настройку squidGuard. Даем права пользователю, от имени которого будет работать
squidGuard на директории log и db. Так же поступаем и с файлом squidGuard.conf.
(помните, как и для squid-а)
# chown -R nobody /usr/local/squidGuard/log
/usr/local/squidGuard/db
# chown nobody /usr/local/squidGuard/squidGuard.conf
SquidGuard может работать с текстовыми базами данных, но в таком случае при
каждом запуске ему приходится создавать в оперативной памяти бинарное дерево
всех загружаемых баз в формате Berkeley DB. Этот процесс занимает довольно продолжительное
время. Подобных задержек можно избежать, если заранее самому создать базы в
нужном формате. Поэтому мы напишем скрипт для перестройки баз и перезапуска
squidGuard с новыми базами.
# cat > /usr/local/squidGuard/bin/rebase.sh
#!/bin/sh
/usr/local/squidGuard/bin/squidGuard
-C all
chown -R nobody /usr/local/squidGuard/db
killall -HUP squid
Назовем его rebase.sh
Устанавливаем нужные права доступа
на файл rebase.sh. Так же необходимо убедиться, что этот скрипт имеет право
запускать, только пользовать root.
# chmod 100 /usr/local/squidGuard/bin/rebase.sh
# /usr/local/squidGuard/bin/rebase.sh
Запустив rebase.sh, необходимо дождаться нормального завершения задачи. Теперь
во всех директориях, упомянутых в разделах dest конфигурационного файла, появились
файлы баз данных domains.db и urls.db.
самое время объединить squidGuard
и Squid. В файл /usr/local/squid/etc/squid.conf добавляем строки:
redirector_bypass on
redirect_program /usr/local/squidGuard/bin/squidGuard
# где находится squidGuard
redirect_children 1 # сколько
экземрляров squidGuard запускать
Перезапускаем squid. В свою очередь,
squid самостоятельно выполнит перезапуск всех дочерних процессов редиректоров.
# killall -HUP squid
Ну вот, с этим покончено…
3.Установка, настройка, тестирование
MySQL
http://www.mysql.ru/
Сервер баз данных MySQL нужен, лично
мне для работы статистических программ для SQUID-а и для работы WEB сервера
на портальной основе NUKE. (но он также помогает и во многих других случаях…).
Сама установка для моего случая крайне
проста, как всё в этой жизни J.
-Скачиваем дистрибутив, например
с www.mysql.ru,
-Распаковываем с помощью того же
MC,
-Выполняем configure с следующими
ключами:
# ./configure --prefix=/usr/local/mysql
--localstatedir=/usr/local/mysql/data --with-unix-socket-path=/usr/local/mysql/tmp/socket
--with-mysqld-user=mysql --disable-large-files --with-libwrap --without-debug
--with-charset=cp1251 --with-extra-charsets=all --with-berkeley-db
комментариев сильных от меня не ждите,
но всё же:
--prefix=/usr/local/mysql # куда
ставим
--localstatedir=/usr/local/mysql/data
# здесь будут храниться базы данных
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
# куда класть-unix-socket (обязательно, через него происходит вся работа, обычно
из-за этого ничего не работает)
--with-mysqld-user=mysql # пользователь
для работы в mysql (необходимо завести и пользователя этого и группу с тем же
именем)
--disable-large-files #
--with-libwrap #
--without-debug #
--with-charset=cp1251 # что бы поддержка
нашего родного была, т.е. русского
--with-extra-charsets=all # для поддержки
остальных языков
--with-berkeley-db #
-Далее
# make
# make install
Установка на этом завершена, идём
далее…
-создаем пользователя mysql в группе
mysql при помощи команды adduser (я думаю с эти проблем не будет. Кстати можно
и через всё тот же /stand/sysinstall).
-создаем каталог ‘tmp’ /usr/local/mysql/tmp
(помните при конфигурации опцию --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock,
так вот – mysql.sock это имя файла – он сам создаться, а без tmp этого не произойдет
и работать ни чего не будет).
-проверяем что бы каталог ‘tmp’ и
‘data’ были с правами mysql и группой mysql, т.е. если в MC, то "F9>File>Chown".
-Теперь необходимо провести послеустановочную
настройку сервера, это делается с помощью скрипта mysql_install_db. Находим
в какой директории расположен этот файл и набираем в командной строке
# ./mysql_install_db (в
нашем случае этот скрипт находиться в /usr/local/mysql/bin)
-на этом всё – теперь запускаем сервер
# ./safe_mysqld -u root
& (опять же – этот скрипт лежит в /usr/local/mysql/bin)
Если все прошло успешно на экране
будет примерно следующее:
# Starting mysqld daemon
with databases from /usr/local/mysql/data
Можно ещё посмотреть командой ‘top’
– там должен висеть процесс ‘mysql’
-Ну вот и всё с MySQL, а точнее нам
от него больше ни чего пока не нужно.
4.Установка PHP4.
http://www.php.net
5.Установка WEB сервера Apahe.
http://www.apache.org
Эти два пакета обычно я устанавливаю
вместе, так как они тесно связаны между собой. Но так же можно установить и
отдельно, сначала Apahe а потом PHP4.
Почему так, сейчас постараюсь объяснить…,
ДА и если Вы попали сюда из 2-го пункта, то не бойтесь – выполняйте нижеследующее
и обратно! (можно даже без PHP4, если конечно ставите только PROXY) J.
Дело в том, что модуль PHP4 подключается
в сервисе natd Apaсhe и если установить сначала Apaсhe и если он будет запущен,
то этот сервис не обновиться и PHP4 работать не будет, хотя установка вроде
бы пройдёт без ошибок. А установка PHP4 вообще без Apaсhe не идёт. Итак…
-Распаковываем tar-ом или MC архивы
Apaсhe и PHP4
-выполняем в каталоге Apaсhe
# ./configure --prefix=/home/apache
--activate-module=src/modules/php4/libphp4.a
-выполняем в каталоге PHP4
# ./configure
# make
# make install
-выполняем в каталоге Apahe
# make
# make install
-редактируем файлы php.ini и httpd.conf
Так как там настроек довольно много,
то я приведу, которые нам понадобятся:
http.conf
AddType application/x-httpd-php
.php
AddType application/x-httpd-php-source
.phps
DirectoryIndex index.html
index.html index.pphp
Эти строчки нам нужны для работы
с php страницами, но если Вам понадобиться ещё что-то, или Вы хотите изучить
этот файл более конкретно, то здесь находиться его описание на русском языке
- http://freeunix.unicor.ru/content.php?page=Apache&id=57
php.ini
; Синтаксис файла крайне
прост. Пробельные символы (то есть, пробелы,
; символы табуляции и т.
д.), строки, начинающиеся с точки с запятой (;)
; игнорируются (как вы,
наверное, уже догадались). Заголовки секций
; (например, [Foo]) также
пропускаются, но, возможно, будут учитываться
; в будущих версиях PHP.
; Настройки языка ;
; Разрешает работу PHP для
сервера Apache.
engine = On
; Разрешает использовать
короткие тэги <?. Иначе будут распознаваться
; только тэги <?php и
<script>.
short_open_tag = On
; Позволяет использовать
тэги <% %> а-ля ASP.
asp_tags = Off
; Число значащих цифр после
запятой, которые отображаются для чисел с
; плавающей точкой.
precision = 14
; Использование буферизации
вывода. Позволяет посылать заголовки (включая
; Cookies) после вывода
текста. Правда, это происходит ценой
; незначительного замедления
вывода.
; Вы можете разрешить буферизацию
во время выполнения сценария путем
; вызова функций буферизации,
или же включить ее по умолчанию с помощью
; следующей директивы:
output_buffering = Off
; Директива неявной отсылки
говорит PHP о том, что выводимые данные нужно
; автоматически передавать
браузеру после вывода каждого блока данных.
; Ее действие эквивалентно
вызовам функции flush() после
; каждого использования
print() или echo() и после каждого HTML-блока.
; Включение этой директивы
серьезно замедляет работу, поэтому ее
; рекомендуется применять
лишь в отладочных целях.
implicit_flush = Off
; Параметр определяет, должен
ли PHP использовать возможность всегда
; передавать аргументы функциям
по ссылке при выполнении сценария.
; Этог метод устарел, и,
скорее всего, он не будет
; поддерживаться в будущих
версиях PHP/Zend.
; Описание того, каким способом
должен быть передан аргумент -
; по ссылке или по значению
- рекомендуется указывать при объявлении
; функции. Лучше всего,
если вы попробуете установить параметр в Off
; и проверите, все ли сценарии
по-прежнему работают. Если это так,
; то все в порядке, и сценарии
будут совместимы и с будущими версиями
; PHP. В противном случае
вы будете получать предупреждения каждый раз,
; когда аргументы передаются
ненадлежащим образом и по значению там,
; где должны передаваться
по ссылке.
allow_call_time_pass_reference
= On
; Безопасный режим
safe_mode = Off
safe_mode_exec_dir =
; Установка некоторых переменных
окружения может потенциально породить
; "дыры" в защите
сценариев. Следующая директива содержит разделенный
; запятыми список префиксов.
В режиме включенного безопасного режима
; пользователь сможет изменять
только те переменные окружения, имена
; которых начинаются с перечисленных
префиксов.
; По умолчанию пользователь
имеет возможность устанавливать только
; переменные окружения,
начинающиеся с PHP_ (например,
; PHP_FOO=something).
; Замечание: если эта директива
пуста, PHP позволяет пользователям
; модифицировать любые переменные
окружения!
safe_mode_allowed_env_vars
= PHP_
; Ограничения ресурсов ;
; Максимальное возможное
время выполнения сценария в секундах. Если
; сценарий будет выполняться
дольше, PHP принудительно завершит его.
max_execution_time = 30
; Максимальный объем памяти,
выделяемый сценарию (8MB)
memory_limit = 8M
; Обработка ошибок и журнализация
;
; Директива error_reporting
должна задаваться в виде битового
; поля. Его значение можно
устанавливать с помощью следующих констант,
; объединенных оператором
| (OR):
; E_ALL - Все предупреждения
и ошибки.
; E_ERROR - Критические
ошибки времени выполнения.
; E_WARNING - Предупреждения
времени выполнения.
; E_PARSE - Ошибки трансляции.
; E_NOTICE - Замечания времени
выполнения (это такие
; предупреждения, которые,
скорее всего,
; свидетельствуют о логических
ошибках в
; сценарии, - например,
использовании
; неинициализированной переменной).
; E_CORE_ERROR - Критические
ошибки в момент старта PHP.
; E_CORE_WARNING - Некритические
предупреждения во время старта PHP.
; E_COMPILE_ERROR - Критические
ошибки времени трансляции.
; E_COMPILE_WARNING - Предупреждения
времени трансляции.
; E_USER_ERROR - Сгенерированные
пользователем ошибки.
; E_USER_WARNING - Сгенерированные
пользователем предупреждения.
; E_USER_NOTICE - Сгенерированные
пользователем замечания.
; Пример:
; показывать все ошибки,
за исключением замечаний
error_reporting = E_ALL
& ~E_NOTICE
; показывать только сообщения
об ошибках
; error_reporting=E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
; отображать все ошибки,
предупреждения и замечания
;error_reporting = E_ALL
; & ~E_NOTICE
; Печать ошибок и предупреждений
прямо в браузер.
; Для готовых сайтов рекомендуется
отключать следующую директиву и
; использовать вместо нее
журнализацию (см. ниже). Включенная директива
; display_errors в "рабочих"
сайтах может открыть доступ пользователю к
; секретной информации:
например, полному пути к документу, используемой
; базе данных и т. д.
display_errors = On
; Даже если display_errors
включена, ошибки, возникающие во время старта
; PHP, не отображаются.
Рекомендуется устанавливать следующую директиву
; в выключенное состояние,
за исключением случая, когда вы применяете
; ее при отладке.
display_startup_errors =
Off
; Сохранять ли сообщения
об ошибках в файле журнала. Журнал может
; определяться настройками
сервера, быть связанным с потоком stderr
; или же задаваться директивой
error_log, описанной ниже. Как уже было
; сказано, в коммерческих
проектах желательно использовать именно
; журнализацию, а не отображать
ошибки в браузер.
log_errors = Off
; Сохранять ли последнее
сообщение об ошибке или предупреждение в
; переменной $php_errormsg
track_errors = On
; Предупреждать, когда оператор
+ применяется к строкам.
warn_plus_overloading =
Off
; Обработка данных ;
; Замечание: track_vars
всегда включена, начиная с PHP 4.0.3.
; Должен ли PHP регистрировать
EGPCS-переменные как глобальные
; переменные. Возможно,
вы захотите отключить эту возможность, если не
; хотите "засорять"
глобальную область видимости сценария. Это имеет
; смысл, если вы используете
директиву track_vars - в этом случае вы
; можете получить доступ
к GPC-данным через массив $HTTP_???_VARS.
; Желательно так писать
сценарии, чтобы они по возможности
; старались обходиться без
директивы register_globals. Использование
; данных, поступивших из
формы, как глобальных переменных, потенциально
; может породить проблемы
в защите сценария, если программист не особенно
; позаботится об их устранении.
register_globals = On
; Следующая директива указывает
PHP, обязан ли он создавать переменные
; $argv и $argc на основе
информации, поступившей методом GET. Если вы не
; используете эти переменные,
отключите директиву register_argc_argv для
; небольшого убыстрения
работы PHP.
register_argc_argv = On
; Максимальный размер данных
POST, который PHP сможет принять.
post_max_size = 8M
; Автоматическая обработка
кавычек и апострофов:
; использовать ли автокавычки
для входящих GET/POST/Cookie данных
magic_quotes_gpc = Off
; Начиная с версии 4.0b4,
PHP всегда сообщает браузеру об используемой
; кодировке в заголовке
Content-type. Для того, чтобы запретить это,
; просто установите следующую
директиву пустой. По умолчанию
; используется text/html
без указания кодировки.
default_mimetype = "text/html"
;default_charset = "iso-8859-1"
; Каталог, в котором хранятся
динамически загружаемые расширения.
extension_dir = "usrlocalphpextensions"
; Каталог для временных
файлов, в который PHP помещает закачанные
; файлы (используется системный
временный каталог, если в директиве
; указана пустая строка)
upload_tmp_dir = /tmp
; Максимальный размер закачанного
файла
upload_max_filesize = 2M
;#
;# Внимание: модули, закомментированные
при помощи двойной точки
;# с запятой ";;",
требуют дополнительных внешних библиотек и не
;# работают в умолчательной
конфигурации. Не пытайтесь их подключить
;# "просто так",
в надежде, что это сработает.
;#
;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_crack.dll
;extension=php_curl.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_filepro.dll
extension=php_gd.dll ; не
дружит со следующей
;;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_mhash.dll
;extension=php_ming.dll
;extension=php_msql.dll
;extension=php_mssql.dll
;extension=php_openssl.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
;extension=php_sockets.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_zip.dll
;;extension=php_zlib.dll
;(built-in now!)
;extension=php_ldap.dll
;extension=php_xslt.dll
; Debugger
extension=php_dbg.dll
;Эта библиотека может не
работать (на работала в Win95).
;extension=php_domxml.dll
;; Напоминаем, что при помощи
";;" помечены библиотеки, потенциально
;; способные вызвать сбой
сервера. Не используйте их без крайней
;; необходимости!
;;extension=php_fdf.dll
; падает при открытии любой страницы
;;extension=php_mime_magic.dll
; требует c:php4magic.mime, и именно там
;;extension=php_ifx.dll
;;extension=php_oci8.dll
;;extension=php_sybase_ct.dll
;;extension=php_snmp.dll
;;extension=php_oracle.dll
;;extension=php_mcrypt.dll
;;extension=php_ingres.dll
;;extension=php_iisfunc.dll
;;extension=php_dotnet.dll
;;extension=php_fbsql.dll
;;extension=php_exif.dll
;;extension=php_cybercash.dll
; Установки для модулей
;
[Syslog]
; Нужно или нет определять
различные переменные Syslog, такие как
; $LOG_PID, $LOG_CRON и
т. д. Для ускорения работы рекомендуется
; выключать следующую директиву.
Во время выполнения сценария вы
; можете включить или выключить
директиву путем вызова
; функции define_syslog_variables().
define_syslog_variables
= Off
[mail function]
; Только для UNIX - задает
путь и аргументы программы sendmail (по
; умолчанию - 'sendmail
-t -i').
sendmail_path = usrsbinsendmail
-t -i
[Debugger]
debugger.enabled=on
debugger.profiler_enabled=on
[MySQL]
mysql.allow_persistent =
On
mysql.max_persistent = -1
mysql.max_links = -1
; Хост по умолчанию для
mysql_connect() (не работает в безопасном режиме).
mysql.default_host =
; Пользователь по умолчанию
(не работает в безопасном режиме).
mysql.default_user =
; Пароль по умолчанию (не
работает в безопасном режиме).
; Замечание: идея хранить
пароль в этом файле просто отвратительна. Любой
; пользователь, который
может запускать PHP, сможет узнать пароль путем
; выполнения:
; echo cfg_get_var("mysql.default_password")
; Конечно, узнать пароль
сможет также и пользователь, который имеет права
; на чтение для файла php.ini.
mysql.default_password =
; Максимальный уровень серьезности
отображаемых ошибок.
sybase.min_error_severity
= 10
; Минимальный уровень серьезности
отображаемых ошибок.
sybase.min_message_severity
= 10
; Режим совместимости со
старыми версиями PHP 3.0.
; Если следующая директива
установлена в On, PHP будет автоматически
; присваивать тип результату
на основе его типа в Sybase, вместо того,
; чтобы преобразовывать
полученные значения в строки. Этот режим
; совместимости, возможно,
в будущем не будет поддерживаться, так что
; лучше исправьте свои сценарии,
если вам он нужен.
sybase.compatability_mode
= Off
[Sybase-CT]
sybct.allow_persistent =
On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity
= 10
sybct.min_client_severity
= 10
[bcmath]
; Число десятичных цифр
для всех bcmath-функций.
bcmath.scale = 0
[browscap]
;browscap = extra/browscap.ini
[Informix]
ifx.default_host=
ifx.default_user=
ifx.default_password=
ifx.allow_persistent=On
ifx.max_persistent=-1
ifx.max_links=-1
; Если следующая директива
установлена в On, выражение select возвращает
; содержимое поля типа text
blob вместо его идентификатора.
ifx.textasvarchar=0
; Заставляет команду select
возвращать значение поля типа byte blob
; вместо его идентификатора.
ifx.byteasvarchar=0
; Принуждает PHP удалять
завершающие пробелы из колонок с типом char
; фиксированного размера.
Может помочь пользователям Informix SE.
ifx.charasvarchar=0
; Если установлена, содержимое
полей text и byte сохраняется в файле,
; вместо того, чтобы храниться
в памяти.
ifx.blobinfile=0
; Если установлена в 0,
значения NULL возвращаются как пустые строки,
; иначе они возвращаются
как строки 'NULL'.
ifx.nullformat=0
[Session]
; Определяет режим хранения
данных сессий.
session.save_handler = files
; Следующая директива задает
аргумент, передаваемый save_handler-у. В
; случае режима сохранения
в файлах здесь должен указываться каталог,
; в который будут помещены
файлы сессий.
session.save_path = /tmp
; Должен ли PHP использовать
Cookies.
session.use_cookies = 1
; Имя Cookie для сессии
(имя сессии по умолчанию)
session.name = PHPSESSID
; Инициализировать ли сессии
при старте.
session.auto_start = 0
; Время жизни Cookie для
сессии. Если до закрытия браузера, то 0.
session.cookie_lifetime
= 0
; Путь для Cookie с идентификатором
сессии.
session.cookie_path = /
; Домен для Cookie с идентификатором
сессии.
session.cookie_domain =
; Функция, используемая
для сериализации данных. Значение php задает
; стандартную функцию.
session.serialize_handler
= php
; Вероятность того, что
при очередном запуске сценария, работающего с
; сессиями, будет вызвана
функция "сборки мусора" для очистке сессий,
; которые пользователь уже
покинул.
session.gc_probability =
1
; После указанного здесь
промежутка времени сохраненные
; данные будут удалены автоматически
сборщиком мусора.
session.gc_maxlifetime =
1440
Не пугайтесь размера этого файла!
В основном здесь все настройки представлены по умолчанию. Я привёл его здесь
только лишь с той целью, чтобы Вы лучше могли понять, как работает PHP. Полностью
? описание этого файла и не только есть в пакете ?Денвер? для Windows. Я использую
этот пакет для быстрой проверки и отладки PHP ? прямо в Windows-е. Для этого
не нужна Unix система. Узнать и скачать можно по адресу http://web.dklab.ru.
-Далее перезагружаем сервер и запускаем
Apache
# cd /usr/local/apache/bin
# apaсhectl start
6.Установка WEB портала на основе
NUKE 6.8 RUS
http://www.rus-nuke.com
Для начинающих, да и не только для
них, очень рекомендую воспользоваться данным порталом, или аналогом. Это во-первых
бесплатно, во-вторых быстро и не требует глубоких знаний в программировании
и администрировании WEB сервера. Зато даёт огромный потенциал в развитии информационных
сетей. Одним словом классная ?штука?. И ставить очень просто?
-распаковываем дистрибутив в нужный
каталог Apache.
-редактируем файл config.php (название
базы, пользователя, пароль)
-создаём mysql базу (# ./mysqladmin
create test, где test ? имя базы)
-переносим данные из файла nuke.sql
(# ./mysql test < nuke.sql)
-запускаем через браузер admin.php
и настраиваем ?под себя?.
-всё готово!
Более детально описание, настройка,
поддержка, дистрибутивы и многое другое на русскоязычном сайте www.rus-nuke.com
На этом всё. Успехов Вам в постижении
FreeBSD! До свидания!
С Уважением Косырев В.М. (sysad@vlankas.ru)
Адрес статьи: http://www.vlankas.ru/freebsd/index.html
16/09/2003