Допиливаем до ума FreeBSD или первые шаги после установки (postinstall для FreeBSD-4.x)

Для начало несколько ссылок на сайты которые всегда помогают при решении проблем:
http://www.freebsd.org.ru
http://www.freebsd.org

Итак, установка FreeBSD завершена, осталось мелочь, доустановить то,что не было установлено при инсталляции, и конечно же настроить.

1. Не знаю как Вы, но я хочу пользоваться нормальным текстовым редактором. Я предпочитаю le(автор Alexander V. Lukyanov ).
Проверяем le установлен:

root@serv:~# pkg_info|grep le-
root@serv:~#

Нету, сейчас будет.

root@serv:~# cd /usr/ports/editors/le/
root@serv:/usr/ports/editors/le# make
>> le-1.9.1.tar.bz2 doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://ftp.yars.free.net/pub/software/unix/util/texteditors/.
fetch: le-1.9.1.tar.bz2: Operation timed out
root@serv:/usr/ports/editors/le#

Итак, что же происходит.
Файл исходников le-1.9.1.tar.bz2 не был найден в каталоге /usr/ports/distfiles/
Идёт попытка получить этот файл c адреса ftp://ftp.yars.free.net/pub/software/unix/util/texteditors/
И эта попытка заканчивается неудачей(Operation timed out)

Всё понятно. Нужно указать прокси сервер, чтоб скачивание происходило через прокси.

export HTTP_PROXY="http://proxy.for_you.ru:8080"
export FTP_PROXY="http://proxy.for_you.ru:8080"

Если же такого не наблюдается, и файл успешно начал закачиваться, значит вы являетесь счастливым обладателем direct connecta и не нужны вам прокси.

И снова

root@serv:/usr/ports/editors/le# make
>> le-1.9.1.tar.bz2 doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://ftp.yars.free.net/pub/software/unix/util/texteditors/.
Receiving le-1.9.1.tar.bz2 (332411 bytes): 1%

Вот! Теперь скачивается.... ждёмс....

332411 bytes transferred in 60.9 seconds (5.33 kBps)
===>  Extracting for le-1.9.1
>> Checksum OK for le-1.9.1.tar.bz2.
...

Ну что ж поделать всего 5К/с у меня скорость :-)
Итак, файл le-1.9.1.tar.bz2 успешно скачался и была проверена его контрольная сумма (checksum ok). Дальше идёт процесс компиляции из исходников...

===>  Extracting for le-1.9.1
>> Checksum OK for le-1.9.1.tar.bz2.
===>  Patching for le-1.9.1
===>  Configuring for le-1.9.1
configure: WARNING: you should use --build, --host, --target
checking for a BSD-compatible install... /usr/bin/install -c -o root -g wheel
checking whether build environment is sane... yes
checking for gawk... no
...

Ждёмс...

Making all in misc
root@serv:/usr/ports/editors/le# 

Всё в порядке. Теперь можно инсталлировать.

root@serv:/usr/ports/editors/le# make install
...
root@serv:/usr/ports/editors/le# pkg_info | grep le-
le-1.9.1            Text editor
root@serv:/usr/ports/editors/le# 

Пакет le-1.9.1 успешно установлен.

2. Пересборка ядра системы.

root@serv:~# cd /usr/src/sys/i386/conf/
root@serv:/usr/src/sys/i386/conf# ls -al
total 126
drwxr-xr-x   3 root  wheel     512 Nov  4 10:39 .
drwxr-xr-x  12 root  wheel     512 May 20 11:05 ..
-rw-r--r--   1 root  wheel    9373 Oct 13 12:40 GENERIC
-rw-r--r--   1 root  wheel  100472 Nov  4 10:39 LINT
root@serv:/usr/src/sys/i386/conf#

Файл LINT - это список всех возможных настроек ядра.
Файл GENERIC - это настройки ядра который был скомпилирован при релизе операц. системы, но я хочу собрать ядро под свои нужды, поэтому

root@serv:/usr/src/sys/i386/conf# cp GENERIC SERV
root@serv:/usr/src/sys/i386/conf# le SERV

Запускаем редактор le и параллельно смотрим файл LINT. Изучаем LINT и вставлям куски из него в свое ядро. Лично я внес следущие изменения в файл SERV:

machine         i386
cpu             I586_CPU
ident           SERV
maxusers        32

options         QUOTA
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFILTER

machine - архитектура вашего компьютера
cpu - поколение процессора
ident - идентификатор (название) ядра.
Запускаем ядро на компиляцию.

root@serv:/usr/src/sys/i386/conf# config SERV
...
Don't forget to do a ``make depend''
Kernel build directory is ../../compile/SERV
root@serv:/usr/src/sys/i386/conf# cd ../../compile/SERV
root@serv:/usr/src/sys/compile/SERV# make depend
...
root@serv:/usr/src/sys/compile/SERV# make
...
root@serv:/usr/src/sys/compile/SERV# 

Откомпилировалось, устанавливаем.

root@serv:/usr/src/sys/compile/SERV# make install
...
root@serv:/usr/src/sys/compile/SERV# 

Новое ядро установилось /kernel, старое на всякий случай сохранено как /kernel.old. Теперь можно перезагружаться, чтоб испытать свежеоткомпилированное ядро. проблемы? не грузитесь - "кнопка reset", и загружайтесь со старым ядром kernel.old.

3. /etc/rc.conf
В этом файле находятся основные настройки системы. le /etc/rc.conf, вот что я добавил в этот файл:

inetd_enable="YES"
sendmail_enable="YES"
sshd_enable="YES"
enable_quotas="YES"
named_enable="YES"
named_program="named"

firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="OPEN"
firewall_quiet="NO"
firewall_logging="YES"
firewall_flags=""

saver="blank"
blanktime=300
font8x16="cp866-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"
scrnmap="koi8-r2cp866"
keymap="ru.koi8-r"
keyrate="fast"

moused_enable="YES"
moused_port="/dev/psm0"
moused_type="auto"

То есть при загрузке, будут запущены следующие сервисы: inetd, sendmail, sshd, sendmail, named.
Кроме того, приведены настройки клавиатуры, мышки, screensaver'а.
Все эти настройки я вытащил из файла /etc/defaults/rc.conf, в этом файле указаны все возможные опции которые могут быть помещены в файл /etc/rc.conf

4. /etc/hosts
В этот файл я прописал одну единственную строку

127.0.0.1               localhost.mydomain.ru localhost

5. /etc/inetd.conf
Все строчки комментирую и перезапускаю inetd

root# killall -HUP inetd

6. /etc/profile

LANG=ru_RU.KOI8-R; export LANG
MM_CHARSET=KOI8-R; export MM_CHARSET
#LC_ALL=ru_RU.KOI8-R; export LC_ALL
export LC_CTYPE="ru_RU.KOI8-R"
export LC_NUMERIC="POSIX"
export LC_TIME="POSIX"
export LC_COLLATE="POSIX"
export LC_MONETARY="ru_RU.KOI8-R"
export LC_MESSAGES="POSIX"

export INPUTRC=/etc/inputrc

EDITOR=le
VISUAL=le
PAGER=less
export EDITOR VISUAL PAGER

PS1='\u@\h:\w\$ '
export PS1

HTTP_PROXY="http://proxy.for_you.ru:8080"
FTP_PROXY="http://proxy.for_you.ru:8080"
export HTTP_PROXY FTP_PROXY

alias l='ls -al'

Теперь утанавливаем основные сервисы и программы, без которых трудно представить Unix/Linux server(workstation). Я говорю про samba, apache+mysql+php, ftp (я использую proftpd), SMTP(в частности postfix). Но сначало нужно обновить коллекцию портов (каталог /usr/ports). Зачем это нужно делать? Для того чтобы устанавливать только последние версии программ, в программах постоянно обнаруживаются недоработки, проблемы с безопасностью, откровенные глюки. При выходе новой версии какого-либо пакета, происходит обновление соотвествующего каталога в портах, и этот процесс идёт постоянно и неотвратимо :-)

7. Обновляем порты
Существует несколько методов обновления, ограничимся рассмотрением синхронизации портов с использованием "CVSUP".
Создаем небольшой shell-скрипт

root@serv:~# mkdir -p /root/bin
root@serv:~# cd /root/bin
root@serv:~/bin# le cvsup.sh
следующего содержания
cvsup -g -L 1 -z -l /var/spool/lock/cvsup /root/bin/cvsup-ports

# -g   - не использовать графмческую оболочку при запуске
# -L n - уровень статистической информации, 
#
#   где n=0;1;2 ,
#   0 - мало
#   1 - default
#   2 - много :-)
#
# -z  - разрешить компрессию
# -l  - место расположения lock-файла
# /root/bin/cvsup-ports - собственно конфигурационный cvsupfile.

создаём конфигурационный файл /root/bin/cvsup-ports

# Host
*default  host=cvsup.ru.FreeBSD.org

# Directory to store logging and status (don't forget mkdir -p $base)
*default  base=/root/bin/cvsup

# Directory to store files
*default  prefix=/usr
*default  release=cvs tag=.
*default  delete use-rel-suffix
*default  compress

ports-all

Небольшой комментарий:
· директива 'host=servname.ru' задает сервер откуда будем скачивать
    для RU предпочтительно один из mirror-серверов:
    host=cvsup.ru.FreeBSD.org
    host=cvsup2.ru.FreeBSD.org
    host=cvsup3.ru.FreeBSD.org

· директива 'base=/dir/path' задает базовую директорию для записи протокола работы cvsup.
ВНИМАНИЕ! cvsup НЕ СОЗДАЕТ ее автоматически, надо ручками
(mkdir -p /root/bin/cvsup).

· директива 'prefix=/dir/path' задает директорию для размещения собственно выкачиваемых файлов. Все готово для запуска cvsup.
Запускаем

root@serv:~/bin# . ./cvsup.sh
Edit ports/x11-wm/oroborus/pkg-descr
Edit ports/x11-wm/ude/pkg-comment
....
Finished successfully
root@serv:~/bin#

Обновление портов завершено, теперь при установке пакетов будут устанавливаться самые последнии версии программ.

8. Samba

root@serv:~# cd /usr/ports
root@serv:/usr/ports# make search name=samba-2.2
Port:   samba-2.2.6
Path:   /usr/ports/net/samba
Info:   A free SMB and CIFS client and server for UNIX
Maint:  dwcjr@FreeBSD.org
Index:  net

Значит samba находится в каталоге /usr/ports/net/samba.

root@serv:/usr/ports# cd net/samba
root@serv:/usr/ports/net/samba# make
root@serv:/usr/ports/net/samba# make install
root@serv:/usr/ports/net/samba# make clean

Скачали исходники, откомпилировали, установили, почистили всё за собой. По умолчанию, все программы из ports устанавливаются в каталог /usr/local. Файлы с настройками соответственно в каталог /usr/local/etc, start/stop-скрипт в каталог /usr/local/etc/rc.d

root@serv:~# cd /usr/local/etc
root@serv:/usr/local/etc# ls
lmhosts
smb.conf.default
root@serv:/usr/local/etc#

Дальше руками копируем файл smb.conf.default в файл smb.conf и открываем его на редактирование.
После внесения изменений, чтобы запустить samba достаточно выполнить /usr/local/etc/rc.d/samba.sh start
Остановить - /usr/local/etc/rc.d/samba.sh stop

9. Apache

root@serv:~# cd /usr/ports/russian/apache13
root@serv:/usr/ports/russian/apache13# make install clean

Вносим изменения в конфиг-файл('-' отмечены строки которые были по умолчанию, '+' - мои изменения)

+LoadModule php4_module        libexec/apache/libphp4.so
+AddModule mod_php4.c

-Port 80
+###Port 80

-User www
-Group www
+User "#80"
+Group "#80"

-ServerAdmin you@your.address
+###ServerAdmin you@your.address

-DocumentRoot "/usr/local/www/data"
+###DocumentRoot "/usr/local/www/data"

+<Directory />
+     Options None
+     AllowOverride None
+     Order deny,allow
+     deny from all
+</Directory>

+# for virtualhosting ( DocumentRoot = /home/users/*/htdocs Script-Alias = /home/users/*/cgi-bin )
+<Directory "/home/users/*/htdocs">
+ Options Indexes SymLinksIfOwnerMatch Includes
+ Order allow,deny
+ Allow from all
+</Directory>

+<Directory "/home/users/*/cgi-bin">
+ AllowOverride None
+ Options None
+ Order allow,deny
+ Allow from all
+</Directory>

-<IfModule mod_userdir.c>
-    UserDir public_html
-</IfModule>
+###<IfModule mod_userdir.c>
+###    UserDir public_html
+###</IfModule>

-            DirectoryIndex index.php index.php3 index.html
+            DirectoryIndex index.php index.php3 index.shtml index.html

-ErrorLog /var/log/httpd-error.log
+ErrorLog /var/log/httpd/httpd-error.log

-CustomLog /var/log/httpd-access.log combined
+CustomLog /var/log/httpd/httpd-access.log combined

-    Alias /icons/ "/usr/local/www/icons/"
+    ###Alias /icons/ "/usr/local/www/icons/"

-    Alias /manual/ "/usr/local/share/doc/apache/manual/"
+    ###Alias /manual/ "/usr/local/share/doc/apache/manual/"

-    ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/"
+    ###ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/"

-    #AddHandler cgi-script .cgi
+    AddHandler cgi-script .cgi

-    #AddType text/html .shtml
-    #AddHandler server-parsed .shtml
+    AddType text/html .shtml
+    AddHandler server-parsed .shtml

+    # For example, the PHP 3.x module (not part of the Apache distribution - see
+    # http://www.php.net) will typically use:
+    #
+    <IfModule mod_php3.c>
+        AddType application/x-httpd-php3 .php3
+        AddType application/x-httpd-php3-source .php3s
+    </IfModule>
+    #
+    # And for PHP 4.x, use:
+    #
+    <IfModule mod_php4.c>
+        AddType application/x-httpd-php .php
+        AddType application/x-httpd-php-source .phps
+    </IfModule>

+NameVirtualHost xxx.xxx.xxx.xxx
+
+<VirtualHost xxx.xxx.xxx.xxx:*>
+ ServerName www.mydomain.ru
+ ServerAdmin webadm@mydomain.ru
+ DocumentRoot /home/users/webadm/htdocs
+ ScriptAlias /cgi-bin/ /home/users/webadm/cgi-bin/
+ Alias /icons/ "/usr/local/www/icons/"
+ Alias /manual/ "/usr/local/share/doc/apache/manual/"
+ ErrorLog /var/log/httpd/www_error.log
+ TransferLog /var/log/httpd/www_access.log
+ CharsetDefault windows-1251
+ CharsetSourceEnc windows-1251
+</VirtualHost>

+<VirtualHost xxx.xxx.xxx.xxx:*>
+ ServerName virtualhost1.mydomain.ru
+ ServerAdmin virtualhost1@mydomain.ru
+ DocumentRoot /home/users/virtualhost1/htdocs
+ ScriptAlias /cgi-bin/ /home/users/virtualhost1/cgi-bin/
+ ErrorLog /var/log/httpd/virtualhost1_error.log
+ TransferLog /var/log/httpd/virtualhost1_access.log
+ CharsetDefault windows-1251
+ CharsetSourceEnc windows-1251
+ UserDir disable
+</VirtualHost>

-# Listen 80
-# Listen 8100
-# Listen 8101
+Listen 80
+Listen 8100
+Listen 8101

-# CharsetByPort koi8-r 8100
-# CharsetByPort windows-1251 8101
+CharsetByPort koi8-r 8100
+CharsetByPort windows-1251 8101

Далее
root# rm /usr/local/www/data
root# adduser (добавляем пользователя webadm)
root# cat /etc/passwd | grep webadm

webadm:*:1001:1001:Web Administrator,-,-,-:/home/users/webadm:/usr/local/bin/bash
root# mkdir -p /var/log/httpd
root# su - webadm
webadm$ mkdir -p /home/users/webadm/htdocs
webadm$ mkdir -p /home/users/webadm/cgi-bin

Запускаем apache
root# /usr/local/etc/rc.d/apache.sh start

На всякий случай переодически контролируем что пишется в логи /var/log/httpd/*

10. MySQL

root@serv:~# cd /usr/ports/databases/mysql323-server 
root@itserv:/usr/ports/databases/mysql323-server# make WITH_CHARSET=cp1251 WITH_XCHARSET=all install
root@itserv:/usr/ports/databases/mysql323-server# make clean

При этом будет создан user:mysql
mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin
и группа mysql
mysql:*:88:

REM: кто-нибудь может мне обьяснить почему по умолчанию mysql.sock создаётся в /tmp ? ;(

root# cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf
root# le /etc/my.cnf
    socket          = /var/run/mysql/mysql.sock
root@serv:~# ls -al /var/run
...
drwxrwxr-x   2 mysql  mysql      512 Nov 13 12:23 mysql
...
root@serv:~# ls -al /var/run/mysql
total 4
drwxrwxr-x  2 mysql  mysql  512 Nov 13 12:23 .
drwxr-xr-x  5 root   wheel  512 Nov 13 12:21 ..
srwxrwxrwx  1 mysql  mysql    0 Nov 13 12:23 mysql.sock
Запуск: /usr/local/etc/rc.d/mysql-server.sh start
Если база новая то mysqladmin -u root password 'newpassword'
 
bash$ mysql -u root -p
Password: ******
mysql>GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'some_password' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
mysql>exit
bash$
Это создаст пользователя admin, который сможет делать все что захочет со всеми базами данных и вообще mysql-ем, подключаясь с любого ip и указывая пароль some_password.

11. PHP

root@serv:~# cd /usr/ports/www/mod_php4
root@serv:/usr/ports/www/mod_php4# make install
root@serv:/usr/ports/www/mod_php4# make clean
root@serv:~# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
root@serv:~# le /usr/local/etc/php.ini
       mysql.default_socket = /var/run/mysql/mysql.sock
       register_globals = On
root@serv:~# le /usr/local/etc/apache/httpd.conf
       LoadModule php4_module        libexec/apache/libphp4.so
       AddModule mod_php4.c
       DirectoryIndex index.php index.html
       AddType application/x-httpd-php .php
       AddType application/x-httpd-php-source .phps
root@serv:~# apachectl restart

Tags: freebsd установка настройка post-install packages ports /etc/profile samba apache mysql php
2002, Sae <linux@yaroslavl.ru>


Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости