Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

СЕРВЕР С НУЛЯ НА 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


      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2017 LinuxRSP