Hobby Старый сайт: https://drilnet.github.io
Благодарность (флаги расположены в алфавитном порядке):
Успехов Вам!


  GITHUB       FreeBSD    
Мой сайт, моя записная книжка (наброски, заметки и т.д. и т.п.)!
Предоставляется как есть!



Невеликий www-сервер своїми руками (FreeBSD)

Шановний претендент!
Тут є мінімум кроків, які необхідно зробити, щоб отримати робочий WWW-сервер.

Що маємо


Інтернет - Біла IP-адреса! З білою IP-адресою можна буде потрапити на свій WWW-сервер.

Встановлення (Крок 1)

Приклад встановлення FreeBSD 12.3.

Вважаємо, що iнсталяцiйний диск або флешка є!
FreeBSD можна скачати звiдси: https://www.freebsd.org

Завантаження з диска або флешки:


Тиснемо Enter.


Welcome to FreeBSD.
Тиснемо Install.


Вибираємо клавiатуру Ukraine.


Hostname – будь-яке (я ввiв: qw).


Якi системнi компоненти встановити: kernel-dbg, lib32, ports, src.
Тиснемо ОК.


Вибираємо Unix файлову систему: Auto (UFS)
Тиснемо OK.


Вибираємо Entire Disk (вiддаємо весь диск пiд FreeBSD).


Вибираємо GPT диск i тиснемо ОК.


Тиснемо Finish.


Тиснемо Commit.


Пiшов процес встановлення...


Пiшов процес встановлення...


Пароль для root'а.


Знайдено мережеву картку. Тиснемо OK.


IPv4 - Тиснемо YES.


DHCP - Тиснемо No.


Задати IP адресу мережевої карти, мережну маску, та Default Router (IP адреса роутера).
IP адреса мережевої карти не повинна перетинатися з IP адресами DHCP на роутері!


IPv6 – Вибираємо NO.


DNS - Прописуємо IP адресу роутера (цей IP повинен бути в FreeBSD /etc/resolv.conf).


Time Zone – Вибираємо Europe.


Вибираємо країну i тиснемо OK.


Eastern European Time, EET.
Схiдноєвропейський час.
Тиснемо YES.


Тиснемо Skip.


Тиснемо Skip.


Тиснемо OK.


Тиснемо OK.


Додати користувача.
Тиснемо NO.


Тиснемо OK.


Тиснемо YES.
Потiм команда: # reboot (перезавантаження).
Не забудьте витягнути завантажувальний диск або флешку!

З установкою Настійно рекомендую потренуватися!
Потренуватися можна в: https://www.virtualbox.org

Встановлення необхідних програм (Крок 2)

Ідемо до каталогу: cd /usr/ports/ports-mgmt
Ідемо до каталогу: cd /usr/ports/misc/mc
Ідемо до каталогу: cd /usr/ports/lynx
Ідемо до каталогу: cd /usr/ports/apache24

І в кожному каталозі вводимо команду: make install clean
(на всі запитання відповідаємо OK, послідовне встановлення, ports-mgmt поставити першим).

      mc - Это Midnight Commander (файловий менеджер).
    lynx - Это консольний браузер.
apache24 - Это WWW-сервер.

Скриншот Midnight Commander:


Фаєрвол IPFW (Крок 3)

Додаємо фаєрвол (IPFW) у ядро!
Робимо:

# cd /usr/src/sys/amd64/conf
# cp GENERIC MYKERNEL

MYKERNEL – це текстовий файл!
Змінюємо в MYKERNEL ident GENERIC на ident MYKERNEL
Тепер додаємо в MYKERNEL фаєрвол:

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100

Тепер складання ядра та встановлення:

# cd /usr/src/
# make buildkernel KERNCONF=MYKERNEL
# make installkernel KERNCONF=MYKERNEL

Тепер перезавантаження:

# reboot

Після перезавантаження мережа буде заблокована!

Створюємо два файли в каталозі /etc/

# touch firewall.conf_1
# touch firewall.conf_2

У firewall.conf_1 додаємо такі рядки:

#!/bin/sh

FwCMD="/sbin/ipfw"

${FwCMD} -f flush

Eth="em0" # Інтерфейс.

# Дозволити весь трафік за внутрішнім інтерфейсом.
${FwCMD} add allow ip from any to any via lo0

# Дозволяємо деякі типи ICMP трафіку
# - луна-запит, луна-відповідь і час життя пакету минув.
${FwCMD} add allow icmp from any to any icmptypes 0,8,11

# HTTP
${FwCMD} add allow ip from any 80 to any via ${Eth}
${FwCMD} add allow ip from any to any 80 via ${Eth}

${FwCMD} add deny log ip from any to any

У firewall.conf_2 додаємо такі рядки:

#!/bin/sh

FwCMD="/sbin/ipfw"
${FwCMD} -f flush
${FwCMD} add deny log ip from any to any

Файл: firewall.conf_1 - Дозволити ping'и, дозволити доступ до www-сервера.
Файл: firewall.conf_2 - Заблокувати все.

Виконати скрипт firewall.conf_1:

# sh firewall.conf_1

Результат скрипту:

Flushed all rules.
00100 allow ip from any to any via lo0
00200 allow icmp from any to any icmptypes 0,8,11
00300 allow ip from any 80 to any via em0
00400 allow ip from any to any 80 via em0
00500 deny log logamount 100 ip from any to any

Для firewall.conf_2 аналогічно лише результат інший.

Налаштування та запуск apache24 (Крок 4)

Ідемо до:

# cd /usr/local/etc/apache24

Відкриваємо текстовий файл:: httpd.conf
Знаходимо рядок: Options Indexes FollowSymLinks та змінюємо його на Options -Indexes (не виводити список файлів)
Знаходимо рядок: ServerName www.example.com:80 і нижче пишемо ServerName 192.168.1.200:80

Ідемо до:

# cd /usr/local/etc/rc.d

Запуск apache24:

# sh apache24 onestart

Якщо потрібно зупинити apache24 то:

# sh apache24 onestop

Далі запускаємо lynx (консольний браузер):

# lynx 192.168.1.200

Результат:


It works! Переклад: Працюю!

Index.html знаходиться в: /usr/local/www/apache24/data/

Ось коротко і все, залишилося на роутері налаштувати переадресацію.
Що було втрачено – права на файли! :)

Материнська плата

Для невеликого WWW-сервера (наприклад) можна взяти таку материнську плату
(вбудований двоядерний процесор 2гГц безшумний, пам'ять DDR4):


Удачі тобі претендент!