AIO install
Швидка установка "Все в одному"
Весь процес установки та налаштування за даною інструкцією від початку і до кінця займає близько півгодини!
Мій рекорд 22 хвилини :)
Процедура оновлення всіх пакетів відбувається швидко за командою
pkg upgrade
Встановлення системи
Підготовляємо дистрибутив FreeBSD x.x Release Записуємо завантажений дистрибутив на диск і сміливо приступаємо:
Все перевірено на FreeBSD v13.0, v12.1, v11.0-2, v10.1-3 та v9.3!
- Під час установки, після вибору локалі, обов'язково вибираємо SRC (у майбутньому може знадобиться для перескладання ядра), решта за бажанням (я б не ставив тільки порти та доки, і так їх оновлювати потрібно)
- Далі вибрати метод розбивки диска за промовчанням - Auto (UFS)
- Тому що розбивати: весь диск або розділ (припустимо весь диск)
- установка запропонує найкращий варіант, де
під завантажувальний сектор = 512 кб
розділ підкачування свап = 1 гб (2*рам але не більше 1 гб)
кореневий розділ / = все інше - тиснемо Finish ⇒ Commit = пішла установка FreeBSD
- потім вводимо пароль для рут-користувача
- потім налаштуємо доступ до інтернету
- після чого вибираємо часовий пояс
- далі можна вибрати які послуги вам потрібні, SSHD обов'язково
- потім потрібно додати локального користувача помістивши його до групи wheel
- Установка системи завершена Exit ⇒ No ⇒ Reboot
важливо витягнути інсталяційний диск під час перезавантаження, щоб не розпочати інсталяцію заново
Після перезавантаження сервера, підключаємося до нього через SSH, щоб легше копі-пастити
Налаштування завантажувача
Для прискорення завантаження сервера відключимо таймер завантажувального меню, а також саме меню
echo autoboot_delay=\"-1\" >> /boot/loader.conf echo beastie_disable=\"YES\" >> /boot/loader.conf
Початкова конфігурація
sysrc fsck_y_enable=YES sysrc background_fsck=NO sysrc sshd_enable=YES sysrc firewall_enable=YES sysrc gateway_enable=YES ee /etc/rc.conf
приводимо до вигляду
hostname="nodeny.com.ua" defaultrouter="1.2.3.1" ifconfig_fxp0="inet 10.0.0.1 netmask 255.255.255.0" ifconfig_fxp1="inet 1.2.3.4 netmask 255.255.255.0" ifconfig_lo0_alias0="inet 1.1.1.1 netmask 255.255.255.255" fsck_y_enable="YES" background_fsck="NO" sshd_enable="YES" firewall_enable="YES" gateway_enable="YES"
де
- background_fsck=“NO” відключає перевірку дисків у бекграунді та робить при старті
- fsck_y_enable=“YES” каже “yes” на всі запитання під час перевірки.
- 1.1.1.1 - віртуальний ip, який автор налаштовує усім своїх серверах на інтерфейсі lo0. Цей ip клієнти вказують у своїх настройках як dns сервер, сервер авторизації і т.д.
- Інтерфейс fxp1 дивиться на шлюз вищого провайдера з ip 1.2.3.1.
- Інтерфейс fxp0 дивиться у мережу клієнтів.
Відключаємо підтримку X11 та GUI
echo 'WITHOUT_X11="yes"' >> /etc/make.conf echo 'WITHOUT_GUI="yes"' >> /etc/make.conf
Ставимо PKGNG
З вересня 2014 розробники FreeBSD замінили застарілий пакетний менеджер на новий - PKGNG (package new generation). З базової системи були видалені утиліти pkg_* (такі, як: pkg_install, pkg_add, pkg_create, pkg_delete, pkg_info, pkg_updating та pkg_version).
Посібник FreeBSD:PKGNG
установка PKGNG
pkg bootstrap -f
Перекладаємо базу даних портів працювати з PKGNG, відключаємо бекап старої бази, створюємо конфіг PKGNG
echo 'WITH_PKGNG="yes"' >> /etc/make.conf echo 'daily_backup_pkgdb_enable="NO"' >> /etc/periodic.conf cp /usr/local/etc/pkg.conf.sample /usr/local/etc/pkg.conf
За замовчуванням підключений квартальний репозиторій пакетів, але я вмикаю останній
cp /etc/pkg/FreeBSD.conf /etc/pkg/FreeBSD.conf.old sed -i -p "s/quarterly/latest/" /etc/pkg/FreeBSD.conf ee /etc/pkg/FreeBSD.conf url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
оновимо базу доступних пакетів
pkg update -f
Ставимо Пакети
pkg install perl5 p5-App-cpanminus p5-Crypt-Rijndael p5-JSON p5-JSON-XS p5-LWP-Protocol-https p5-CGI \ bash subversion apache24 mc-nox11 mysql80-server
ln -s /usr/local/bin/perl /usr/bin/perl > /dev/null cpanm DBD::mysql
Завантажуємо NoDeny Next
на момент написання статті є 3 репозиторії:
- демоверсія
svn://nodeny-plus.com.ua/nodenyfree
- стабільна
svn://nodeny-plus.com.ua/release
- нова гілка
svn://nodeny-plus.com.ua/release/next
я буду використовувати Next
і так, завантажуємо білінг
cd /usr/local svn co svn://nodeny-plus.com.ua/release/next nodeny
Налаштування NAT (pf)
echo pf_load=YES >> /boot/loader.conf echo pf_enable=\"YES\" >> /etc/rc.conf cp /usr/local/nodeny/etc/pf.conf /etc/ ee /etc/pf.conf
- вписати в ext_if = “fxp1” свій інтерфейс, який у вас дивиться в інет
- залишити правило тієї мережі, яка дивиться в локалку
Важливо, щоб адреси зовнішньої та внутрішньої мереж не були однаковими!
Налаштування збір статистики трафіку (ipcad)
echo ipfw_load=\"YES\" >> /boot/loader.conf echo ipdivert_load=\"YES\" >> /boot/loader.conf echo dummynet_load=\"YES\" >> /boot/loader.conf echo ipcad_enable=\"YES\" >> /etc/rc.conf cp /usr/local/nodeny/etc/ipcad.conf /usr/local/etc/ ipcad -d
Налаштування firewall
Фаєрвол із блокуванням неавторизованих клієнтів
cp /usr/local/nodeny/etc/rc.firewall /etc/ ee /etc/rc.firewall
Редагуємо rc.firewall, міняємо зовнішній інтерфейс
ifOut='fxp1' на той, що у вас дивиться в інет
Налаштування mysql
sysrc mysql_enable=yes sysrc mysql_optfile=/usr/local/etc/mysql/my.cnf mkdir /var/db/mysql_tmpdir/ chown mysql /var/db/mysql_tmpdir/ service mysql-server start
Підключаємося до mysql і встановимо пароль руту
mysql -u root # замість hardpass ваш пароль ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'hardpass', `root`@`localhost` PASSWORD EXPIRE NEVER; exit;
Підключаємось до mysql з паролем
# замість hardpass ваш пароль mysql -u root --password='hardpass' ALTER USER `root`@`localhost` IDENTIFIED BY `hardpass`, `root`@`localhost` PASSWORD EXPIRE NEVER;
Створимо базу даних nodeny
create database nodeny; use nodeny; source /usr/local/nodeny/bill.sql; exit;
Tuning
pkg install mysqltuner mysqltuner --user root --pass hardpass --color
fix [Warning] [MY-013360] [Server] Plugin sha256_password reported
Налаштування apache24
sysrc apache24_enable=yes echo /sbin/kldload accf_http >> /etc/rc.local /sbin/kldload accf_http
echo "ServerName 0.0.0.0:80" >> /usr/local/etc/apache24/Includes/httpd.conf echo "LoadModule cgi_module libexec/apache24/mod_cgi.so" >> /usr/local/etc/apache24/Includes/httpd.conf
Створимо симлінк на веб-скрипти NoDeny
rm -fR /usr/local/www/apache24/cgi-bin rm -fR /usr/local/www/apache24/data ln -s /usr/local/nodeny/cgi-bin/ /usr/local/www/apache24/cgi-bin ln -s /usr/local/nodeny/htdocs/ /usr/local/www/apache24/data
service apache24 start
mkdir /usr/local/etc/newsyslog.conf.d/ ee /usr/local/etc/newsyslog.conf.d/apache24.conf
# Apache /var/log/httpd-access.log www:wheel 600 3 2048 * JC /var/run/httpd.pid 30 /var/log/httpd-error.log www:wheel 600 10 2048 * JC /var/run/httpd.pid 30 # Apache SSL /var/log/httpd-access-ssl.log www:wheel 600 3 2048 * JC /var/run/httpd.pid 30 /var/log/httpd-error-ssl.log www:wheel 600 10 2048 * JC /var/run/httpd.pid 30
service newsyslog restart
newsyslog -a /var/log/
Налаштування NoDeny Plus
Підключимо модулі (-x), встановимо власника та права на файли (-w), створимо стартовий конфіг (-m), створимо суперадміну (-p):
cd /usr/local/nodeny perl install.pl -m perl install.pl -x perl install.pl -w=www perl install.pl -p admin=12345
Відновлення з Бекапа
Обов'язково скопіювати в папку /usr/local/nodeny/ файли:
sat.cfg - файл з налаштуваннями відновлюваної NoDeny backup.sql - файл бази даних, що відновлюється NoDeny
Створимо структуру бази nodeny
mysql --default-character-set=utf8 -u root -p # вводимо пароль рута DROP DATABASE nodeny; CREATE DATABASE nodeny; exit; #source /usr/LOCAL/nodeny/backup.sql;
і наповнимо даними з бекапа:
mysql --default-character-set=utf8 -u root -p nodeny < /usr/local/nodeny/backup.sql Enter password: # вводимо пароль рута
Підключимо модулі (-x), встановимо власника та права на файли (-w):
cd /usr/local/nodeny perl install.pl -x perl install.pl -w=www
Запуск ядра NoDeny+
Ядро NoDeny+ працює на тлі та виконує такі функції: обробка авторизацій, збір статистики трафіку, управління послугами тощо. Конфіги знаходяться у файлах /usr/local/nodeny/kernel/*.cfg. Обов'язковий параметр run - вказує, чи буде плагін запущений при старті ядра чи ні. Якщо run встановлено в 0, то плагін можна запустити лише вказавши його у параметрах командного рядка під час запуску ядра.
Отримаємо список усіх плагінів
perl nokernel.pl -L
Навпроти назви модуля 1 означає, що модуль запускатиметься автоматично при старті ядра.
Запускаємо ядро зі стандартним набором модулів
perl nokernel.pl
Якщо на консоль не вивело жодних помилок – ядро успішно запустило всі модулі.
Запускаємо скрипт управління фаєрволом
perl noserver.pl -v
Якщо на консоль не вивело жодних помилок – ставимо в автозавантаження:
echo '/usr/bin/perl /usr/local/nodeny/nokernel.pl -d &' >> /etc/rc.local echo '/usr/bin/perl /usr/local/nodeny/noserver.pl -d &' >> /etc/rc.local
Запускаємо скрипти ядра
perl /usr/local/nodeny/nokernel.pl -d & perl /usr/local/nodeny/noserver.pl -d &
Додаткові проги для зручності
Установка Webmin
pkg install sysutils/webmin /usr/local/lib/webmin/setup.sh sysrc webmin_enable=YES service webmin start
не забудьте відкрити у файрволі порти
ee /etc/rc.firewall замінити ${f} add 50 allow tcp from any to me 22 ${f} add 51 allow tcp from me 22 to any на ${f} add 50 allow tcp from any to me 22,10000 ${f} add 51 allow tcp from me 22,10000 to any
де 10000 = порт webmin
Встановлення phpMyAdmin
pkg install phpMyAdmin5-php83 mod_php83 php83-iconv
Create directory for phpMyAdmin temp files.
mkdir -p /usr/local/www/phpMyAdmin/tmp chown -R www:www /usr/local/www/phpMyAdmin/tmp nano /usr/local/www/phpMyAdmin/config.inc.php
$cfg['NavigationTreeEnableGrouping'] = false; #Edit the file and set secret passphrase: $cfg['blowfish_secret'] = 'H2OxcGXxflSd8JwrwVlh6KW6s2rER63i'; //Configure Temp directory by add $cfg['TempDir'] = '/usr/local/www/phpMyAdmin/tmp';
У файлі /usr/local/etc/apache24/Includes/httpd.conf допишемо:
ee /usr/local/etc/apache24/Includes/httpd.conf
<IfModule dir_module> DirectoryIndex index.html index.htm index.php index.shtml </IfModule>
У папці /usr/local/etc/apache24/Includes створюємо файл php-application.conf
ee /usr/local/etc/apache24/Includes/php-application.conf
і внесемо до нього ці рядки:
- /usr/local/etc/apache24/Includes/php-application.conf
<FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch>
Після цього створимо файл /usr/local/etc/php.ini з файлу php.ini-production та надамо йому необхідні права
cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini chmod u+w /usr/local/etc/php.ini
Після установки є два варіанти налаштування: як аліас або як піддомен
Налаштування phpMyAdmin як аліас
створимо файл phpmyadmin.conf
ee /usr/local/etc/apache24/Includes/phpmyadmin.conf
з таким змістом:
Alias /pma "/usr/local/www/phpMyAdmin/" <Directory "/usr/local/www/phpMyAdmin/"> Options none AllowOverride Limit Order Deny,Allow Require all granted DirectoryIndex index.php </Directory>
Перезапустимо apache
service apache24 restart
Налаштування phpMyAdmin як піддомен
ee /usr/local/etc/apache24/Includes/vhost_db.example.org.conf
вставляємо наступне
<VirtualHost *:80> DocumentRoot "/usr/local/www/phpMyAdmin" ServerName db.example.org ServerAlias db.local ErrorLog "/var/log/apache/db.example.org-error.log" CustomLog "/var/log/apache/db.example.org-access.log" common <Directory "/usr/local/www/phpMyAdmin"> AllowOverride None Options None Require all granted </Directory> </VirtualHost>
де
example.org - ваш домен
db.example.org - ваш піддомен для phpMyAdmin
також не забудьте створити файли логів, інакше apache буде дуже сваритися
mkdir -p /var/log/apache/ touch /var/log/apache/db.example.org-error.log touch /var/log/apache/db.example.org-access.log
Перезапускаємо apache
service apache24 restart
Встановлення BRAS
BRAS - Broadband Remote Access Server - у перекладі, сервер віддаленого широкосмугового доступу. Він покликаний здійснювати авторизацію абонентів у мережі. Зазвичай складається з бази даних, Radius'а та точок доступу.
Але кожна мережа має свій вибір…