блог-форум о программировании
Вы не вошли.
Страницы 1
И так, разворачиваю FreeBSD 10.3 в качестве площадки для разработок.
Первоначальная установка из img-образа
Правка /etc/make.conf
Обновление дерева портов и установка Midnight Commander
Правка авторизации по SSH
Правка локали и шрифтов системной консоли
Пересборка ядра
Прописка правил фаервола
Установка и настройка XOrg & xfce4
Установка и настройка PostgreSQL 9.3
Установка и настройка MySQL 5.6
Установка и настройка Qt 5.5.1
Установка MXE
"Нарезаем" загрузочную флешку. Изначально - все по сценарию, клавиатура koi8-r, файловая система ZFS автоматом, два HDD (в режиме ACHI) в stripped, игры исключаем, автозапуск sshd обязательно. Сетевые настройки, настройки пользователя (включить в группу wheel обязательно). Запуск ssh-клиента (putty), подключение пользователем, запуск команды su. Здесь и далее - пользуемся редактором ee.
Небольшой тюнинг процессов сборки:
ee /etc/make.conf
CPUTYPE?=core-avx-i
MAKE_JOBS_NUMBER?=3
WITH=ICONV
WITHOUT_DEBUG=YES
portsnap fetch extract
pkg install misc/mc
В файле /etc/ssh/sshd_config раскоментируем строчку:
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
В домашнем каталоге создаем файл ключей:
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
chmod 0744 ~/.ssh
chmod 0644 ~/.ssh/authorized_keys
Сперва добавим в /etc/login.conf следующие строки:
utf8|UTF-8 Users Accounts:\
:charset=UTF-8:\
:lang=en_US.UTF-8:\
:tc=default:
utf8r|Russian UTF-8 Users Accounts:\
:charset=UTF-8:\
:lang=ru_RU.UTF-8:\
:tc=default:
postgres:\
:lang=en_US.UTF-8:\
:setenv=LC_COLLATE=C:\
:tc=default:
Далее, для пользователя root и majestio (тут и далее - выбираете своего) прописываем:
cap_mkdb /etc/login.conf
pw usermod -n root -L utf8
pw usermod -n majestio -L utf8r
Выкачиваем шрифты terminus на выбор в каталог /usr/share/vt/fonts/:
cd /usr/share/vt/fonts/
fetch http://majestio.info/stuff/ter-u16.fnt
Прописываем нужный в /etc/rc.conf, и за одно переключение Рус/Лат по Ctrl-Shift:
font8x16="ter-u16.fnt"
keymap="ru.win"
А в /boot/loader.conf прописываем:
kern.vty=vt
Пересобираем ядро согласно Хэндбуку. На этапе редактирования конфигурации ядра надо проверить наличие следующих параметров (согласно /usr/local/share/doc/postgresql/README-server), при необходимости добавить/изменить:
#
# PostgreSQL
#
options SYSVSHM # как правило
options SYSVSEM # сейчас эти опции
options SYSVMSG # в ядре по умолчанию
#
options SHMMAXPGS=65536
options SEMMNI=40
options SEMMNS=240
options SEMUME=40
options SEMMNU=120
#
# Firewall
#
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=5
#
options DEVICE_POLLING
options TEKEN_UTF8
Собственно процесс пересборки (исходное работоспособное ядро положим в /boot/kernel.good):
cp -R /boot/kernel /boot/kernel.good
cd /usr/src/sys/amd64/conf
cp GENERIC MYKERNEL
ee MYKERNEL
cd /usr/src
make buildkernel KERNCONF=MYKERNEL
make installkernel KERNCONF=MYKERNEL
Не перегружаясь, настраиваем фаервол. Для этого добавим строки в /etc/rc.conf
firewall_enable="YES"
firewall_type="closed"
firewall_script="/etc/ipfw.rules"
И создадим файл /etc/ipfw.rules следующего содержания:
#!/bin/sh
#
################ Начало файла с правилами IPFW ##################
# Сброс всех правил перед началом работы скрипта.
#
ipfw -q -f flush
#
# Префикс для создания правил
#
cmd="ipfw -q add" # команда добавления правил
eth="re0" # название интерфейса
gw="192.168.1.1" # адрес шлюза
#
#################################################################
# Нет ограничений на внутреннем интерфейсе локальной сети
# Нет необходимости в этом, если у вас нет локальной сети.
# Замените xl0 на название интерфейса вашей локальной сети
#################################################################
$cmd 00005 allow all from any to any via $eth
#
#################################################################
# Нет ограничений на интерфейсе Loopback
#################################################################
$cmd 00010 allow all from any to any via lo0
#
#################################################################
# Разрешить пакет, если он был ранее добавлен в "динамическую"
# таблицу при помощи выражения allow keep-state
#################################################################
$cmd 00015 check-state
#
#################################################################
# Раздел правил для исходящего трафика на внешнем интерфейсе
#################################################################
#
# Разрешить исходящий трафик к DNS серверу (DNS-на шлюзе)
$cmd 00110 allow tcp from any to $gw 53 out via $eth setup keep-state
$cmd 00111 allow udp from any to $gw 53 out via $eth keep-state
#
# Разрешить исходящий трафик для незащищенного www соединения
$cmd 00200 allow tcp from any to any 80 out via $eth setup keep-state
#
# Разрешить исходящий трафик для защищенного www соединения
# https с поддержкой TLS и SSL
$cmd 00220 allow tcp from any to any 443 out via $eth setup keep-state
#
# Разрешить исходящий POP/SMTP
$cmd 00230 allow tcp from any to any 25 out via $eth setup keep-state
$cmd 00231 allow tcp from any to any 110 out via $eth setup keep-state
#
# Разрешить исходящий трафик для FreeBSD (make install & CVSUP)
# По сути назначаем пользователю root полные привилегии.
$cmd 00240 allow tcp from me to any out via $eth setup keep-state uid root
#
# Разрешаем исходящий icmp ping
$cmd 00250 allow icmp from any to any out via $eth keep-state
#
# Разрешаем исходящий трафик Time
$cmd 00260 allow tcp from any to any 37 out via $eth setup keep-state
#
# Разрешаем исходящий трафик nntp news
$cmd 00270 allow tcp from any to any 119 out via $eth setup keep-state
#
# Разрешаем исходящий защищённый трафик FTP, Telnet и SCP
# Эта функция использует SSH (secure shell)
$cmd 00280 allow tcp from any to any 22 out via $eth setup keep-state
#
# Разрешаем исходящий трафик whois
$cmd 00290 allow tcp from any to any 43 out via $eth setup keep-state
#
# Запрещаем и заносим в журнал остальной исходящий трафик.
# Обеспечивает политику межсетевого экрана закрытого типа
$cmd 00299 deny log all from any to any out via $eth
#
#################################################################
# Раздел правил для входящего трафика на внешнем интерфейсе
#################################################################
#
# Запрещаем весь входящий трафик с немаршрутизируемых сетей
$cmd 00300 deny all from 192.168.0.0/16 to any in via $eth # RFC 1918 private IP
$cmd 00301 deny all from 172.16.0.0/12 to any in via $eth # RFC 1918 private IP
$cmd 00302 deny all from 10.0.0.0/8 to any in via $eth # RFC 1918 private IP
$cmd 00303 deny all from 127.0.0.0/8 to any in via $eth # loopback
$cmd 00304 deny all from 0.0.0.0/8 to any in via $eth # loopback
$cmd 00305 deny all from 169.254.0.0/16 to any in via $eth # DHCP auto-config
$cmd 00306 deny all from 192.0.2.0/24 to any in via $eth # reserved for docs
$cmd 00307 deny all from 204.152.64.0/23 to any in via $eth # Sun cluster interconnect
$cmd 00308 deny all from 224.0.0.0/3 to any in via $eth # Class D & E multicast
#
# Запрещаем пинг извне
$cmd 00310 deny icmp from any to any in via $eth
#
# Запрещаем ident
$cmd 00315 deny tcp from any to any 113 in via $eth
#
# Запрещаем все Netbios службы. 137=name, 138=datagram, 139=session
# Netbios это MS/Windows сервис обмена.
# Блокируем MS/Windows hosts2 запросы сервера имен на порту 81
$cmd 00320 deny tcp from any to any 137 in via $eth
$cmd 00321 deny tcp from any to any 138 in via $eth
$cmd 00322 deny tcp from any to any 139 in via $eth
$cmd 00323 deny tcp from any to any 81 in via $eth
#
# Запрещаем любые опоздавшие пакеты
$cmd 00330 deny all from any to any frag in via $eth
#
# Запрещаем ACK пакеты, которые не соответствуют динамической таблице правил.
$cmd 00332 deny tcp from any to any established in via $eth
#
# Разрешить входящий трафик для www, так как я использую сервер apache
$cmd 00400 allow tcp from any to me 80 in via $eth setup limit src-addr 2
#
# Разрешить входящий трафик безопасных FTP, Telnet и SCP из глобальной сети
$cmd 00410 allow tcp from any to me 22 in via $eth setup limit src-addr 2
#
# Разрешить входящий трафик PostgreSQL & MySQL
$cmd 00430 allow tcp from any to me 5432 in via $eth setup limit src-addr 2
$cmd 00431 allow tcp from any to me 3306 in via $eth setup limit src-addr 2
#
# Отбрасываем и заносим в журнал все входящие соединения снаружи
$cmd 00499 deny log all from any to any in via $eth
#
# Всё остальное запрещено по умолчанию
# Запрещаем и заносим в журнал все пакеты для дальнейшего анализа
$cmd 00999 deny log all from any to any
################ Конец файла правил IPFW ########################
Теперь можно перегружаться
reboot
Лень все собирать, будем ставить из пакетов:
pkg install x11/xorg
pkg install x11-drivers/xf86-video-vmware # для работы под VMWare
pkg install open-vm-tools # для работы под VMWare
pkg install x11-wm/xfce4
pkg install x11/xfce4-quicklauncher-plugin
pkg install x11/xfce4-taskmanager
pkg install x11/xfce4-clipman-plugin
pkg install x11/xfce4-dashboard
pkg install x11/xfce4-embed-plugin
pkg install x11/xfce4-screenshooter-plugin
pkg install x11/xfce4-verve-plugin
pkg install x11/xfce4-whiskermenu-plugin
pkg install x11/xfce4-wmdock-plugin
pkg install mail/xfce4-mailwatch-plugin
pkg install misc/xfce4-weather-plugin
pkg install misc/xfce4-wm-themes
pkg install sysutils/xfce4-mount-plugin
pkg install x11-clocks/xfce4-datetime-plugin
Создаем конфигурационный файл X11 /etc/X11/xorg.conf следующего содержания:
Section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
# -----------------------------------------------------------------------------------------
Section "Files"
ModulePath "/usr/local/lib/xorg/modules"
FontPath "/usr/local/share/fonts/programmer/"
FontPath "/usr/local/share/fonts/cyrillic/"
FontPath "/usr/local/share/fonts/TrueType/"
FontPath "/usr/local/share/fonts/misc/"
FontPath "/usr/local/share/fonts/OTF/"
FontPath "/usr/local/share/fonts/TTF/"
FontPath "/usr/local/share/fonts/Type1/"
FontPath "/usr/local/share/fonts/75dpi/"
FontPath "/usr/local/share/fonts/100dpi/"
FontPath "/usr/local/share/fonts/dejavu/"
FontPath "/usr/local/share/fonts/util/"
EndSection
# -----------------------------------------------------------------------------------------
Section "Module"
Load "dbe"
Load "dri"
Load "dri2"
Load "extmod"
Load "glx"
Load "record"
Load "freetype"
EndSection
# -----------------------------------------------------------------------------------------
Section "InputDevice"
Identifier "Keyboard0"
Driver "evdev"
Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru"
Option "XkbOptions" "compose:lwin,grp:lctrl_lshift_toggle,numpad:microsoft,ctrl:nocaps"
EndSection
# -----------------------------------------------------------------------------------------
Section "InputDevice"
Identifier "Mouse0"
Driver "vmmouse"
Option "Protocol" "auto"
Option "Device" "/dev/sysmouse"
Option "ZAxisMapping" "4 5 6 7"
EndSection
# -----------------------------------------------------------------------------------------
Section "Monitor"
Identifier "vmware"
VendorName "VMware, Inc"
HorizSync 30-100
VertRefresh 56-120
EndSection
# -----------------------------------------------------------------------------------------
Section "Device"
Identifier "VMware SVGA"
Driver "vmware"
BusID "PCI:0:15:0"
EndSection
# -----------------------------------------------------------------------------------------
Section "Screen"
Identifier "Screen0"
Device "VMware SVGA"
Monitor "vmware"
EndSection
И добавляем в /etc/rc.conf:
moused_enable="YES"
dbus_enable="YES"
hald_enable="YES"
# kdm4_enable="YES" <-- по желанию сразу логин в иксах, но лучче не надо
vmware_guest_vmblock_enable="YES"
vmware_guest_vmhgfs_enable="YES"
vmware_guest_vmmemctl_enable="YES"
vmware_guest_vmxnet_enable="YES"
vmware_guestd_enable="YES"
Небольшие косметические правки для лучшего отображения шрифтов на LCD-экране:
cd /usr/ports/print/freetype
make -DWITH_LCD_FILTERING deinstall reinstall
# тут в меню конфигурации порта выбираем все опции
cd /usr/ports/print/freetype2
make -DWITH_LCD_FILTERING deinstall reinstall
Копируем свои шрифты в /usr/local/share/fonts/programmer и индексируем:
cd /usr/local/share/fonts/programmer
ttmkfdir -o fonts.dir
mkfontdir /usr/local/share/fonts/programmer
fc-cache -f
xset fp+ /usr/local/share/fonts/programmer
xset fp rehash
pkg install databases/postgresql93-server
pkg install databases/postgresql93-contrib
pkg install databases/postgresql93-plperl
mkdir -p /mnt/tree/pgsql/data
cd /mnt/tree
chown -R pgsql:pgsql pgsql
В файл /etc/rc.conf дописываем
postgresql_enable="YES"
postgresql_data="/mnt/tree/pgsql/data"
postgresql_flags="-w -s -m fast"
postgresql_initdb_flags="--encoding=utf-8 --lc-collate=C --locale=ru_RU.UTF-8"
postrgesql_class="russian-koi8r"
postgresql_class="postgres"
Выполняем инициализацию базы
/usr/local/etc/rc.d/postgresql initdb
service postgresql start
В файл /mnt/tree/pgsql/data/pg_hba.conf дописываем строчку - разрешения доступа по сети 192.168.1.0:
host all all 192.168.1.0/24 trust
В файле /mnt/tree/pgsql/data/postgresql.conf находим и изменяем строчки:
listen_addresses='*' # принимать соединения на любом интерфейсе
lc_messages='C' # вывод сообщений с английской локалью
pkg install databases/mysql56-server
Создаем хранилище для БД:
cd /mnt/tree
mkdir -p /mnt/tree/mysql/data
chmod -R 750 mysql
chown -R mysql:mysql mysql
cd /mnt/tree/mysql/data
mysql_install_db --user=mysql --basedir=/usr/local
Добавляем автозапуск сервера в /etc/rc.conf:
mysql_enable="YES"
mysql_dbdir="/mnt/tree/mysql/data"
Правим конфигурационный файл /mnt/tree/mysql/data/my.cnf:
# For advice on how to change settings please see
# [url]http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html[/url]
#
[mysqld]
#
basedir = /usr/local
datadir = /mnt/tree/mysql/data
port = 3306
socket = /tmp/mysql.sock
pid_file = /var/run/mysql/mysqld.pid
#
general_log_file = /var/log/mysql.log
slow_query_log_file = /var/log/mysql-slow-query.log
log_error = /var/log/mysql-error.log
#
lc_messages = ru_RU
lc_messages_dir = /usr/local/share/mysql
#
explicit_defaults_for_timestamp = ON
innodb_data_file_path = ibdata1:12M:autoextend
character-set-server=utf8
init-connect="SET NAMES utf8"
long_query_time=5
skip-external-locking
key_buffer_size = 16M
query_cache_size=64M
max_allowed_packet = 128M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
innodb_flush_log_at_trx_commit=2
skip-innodb_doublewrite
server-id = 1
slow_query_log=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#
[client]
character_set_client=utf8
password = gfhjkm1
port = 3306
socket = /tmp/mysql.sock
Добавляем строчку в /etc/newsyslog.conf
/var/log/mysql.log 600 2 500 * ZC
Делаем окончательные правки и запускаем сервер:
touch /var/log/mysql.log
touch /var/log/mysql-slow-query.log
touch /var/log/mysql-error.log
chown mysql:mysql /var/log/mysql.log
chown mysql:mysql /var/log/mysql-slow-query.log
chown mysql:mysql /var/log/mysql-error.log
service mysql-server start
mysql_secure_installation
pkg install devel/qt5
Устанавливаем необходимый софт:
pkg install \
automake autoconf bash bison coreutils flex \
gcc gdk-pixbuf2 gettext git glib gmake gperf gsed intltool libffi \
libtool openssl p5-XML-Parser p7zip patch perl5 \
pkgconf python ruby scons unzip wget git
Переключаемся с root'а на пользователя, потом выполняем:
mkdir -p $HOME/Dev/{cross,projests,src,stuff,tools}
cd $HOME/Dev/cross
git clone https://github.com/mxe/mxe.git
cd mxe
В файле makefile найти и удалить "unzip" в секции REQUIREMENTS.
gmake MXE_TARGETS='x86_64-w64-mingw32.shared '`
'x86_64-w64-mingw32.static '`
'i686-w64-mingw32.shared '`
'i686-w64-mingw32.static '`
'x86_64-w64-mingw32.shared.posix '`
'x86_64-w64-mingw32.static.posix '`
'i686-w64-mingw32.shared.posix '`
'i686-w64-mingw32.static.posix' gcc
... продолжение не следует)
:: Мои программные ништяки ::
Вне форума
Страницы 1
[ Сгенерировано за 0.132 сек, 7 запросов выполнено - Использовано памяти: 2.35 Мбайт (Пик: 2.76 Мбайт) ]