).
Проверяем 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>