Настройка WEB сервера

Собственно весь путь тут по порядку, потом может напишу подробнее

Все ставилось на Debian 5 minimal

apt-get install apache2 libapache2-mod-php5 mysql-server php5 php5-tidy php5-xsl phpmyadmin mc

по желанию можно еще чего добавить, например:

php5-gd php5-imagick php5-pspell php5-recode php5-xmlrpc php5-mcrypt php5-memcache php5-curl php-pear php5-imap php5-snmp

в конфигурационном файле /etc/my.cnf для того,
чтобы настроить mysql стандартной сборки на работу
с кодировкой utf8 по умолчанию без всякой перекомпиляции.
В раздел [mysqld] необходимо добавить следующее:

default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
init-connect=«SET NAMES utf8»
skip-character-set-client-handshake

Две последние строки принудительно устанавливают кодировку utf8 для всех запросов.
В раздел [mysqldump] достаточно добавить только

default-character-set=utf8

//chown -hR www-data /var/www это не надо, это так для памяти :)

cd /
mkdir -m 755 web

Далее заменяем «site1» на, например, доменное имя сайта
useradd site1 -b /web/ -m -U -s /bin/false
passwd site1
chmod 754 /web/site1
mkdir -p -m 754 /web/site1/public_html/www
mkdir -p -m 777 /web/site1/tmp
chmod +t /web/site1/tmp
chown -R site1:site1 /web/site1/

Заменим индейца на модифицированого, чтоб у каждого сайта свой пользователь был и апач под этим пользователем работал, чтоб не повадно было лазить другим сайтам в чужие папки.

apt-get install apache2-mpm-itk

Он хочет удалить апачу! Ничо страшного, он поставит другую, соглашаемся.
usermod -s /bin/false www-data

в /etc/apache/site-available

создаем файл site1 со следующим содержанием

Код - пример #1
1
2
3
4
5
6
7
8
9
10
11
12
13
<VirtualHost *:80>

 DocumentRoot "/web/site1/public_html/www/"
 ServerName "site1"
 ServerAlias "www.site1"
 ErrorLog /web/site1/error_log
 CustomLog /web/site1/access_log combined
 AssignUserId www-data site1

 php_admin_value open_basedir "/web/site1/:."
 php_admin_value upload_tmp_dir "/web/site1/tmp"
 php_admin_value session.save_path "/web/site1/tmp"
</VirtualHost>

Далее команда «включения сайта»

a2ensite site1

и релоад апача

/etc/init.d/apache2 reload

Ох, забыли добавить модули :)
a2enmod headers.load

a2enmod rewrite.load

Ну  и опять релоад, хотите рестарт или стоп-старт, но так грубее.

Теперь победим беду с отправкой почты

/etc/php5/apace2/php.ini [раскомментируем и изменим строку]
++ sendmail_path = /usr/sbin/exim4 -t

dpkg-reconfigure exim4-config

Теперь поставим "очень секретный" фтп сервер, а то как мы будем заливать файлы на наш сайт?

apt-get install vsftpd

Отредактируем /etc/vsftpd.conf сделаем его примерно таким, ну или оригинал отредактируем. Оригиналы конечно лучше сохранять, переименовав, например /etc/vsftpd.conf в /etc/vsftpd.conf.orig

/etc/vsftpd.conf 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
listen=YES
# Запрещаем анонимный доступ
anonymous_enable=NO
# Открываем локальным пользователям доступ к домашним директориям по FTP
local_enable=YES
# Разрешаем команды на запись
write_enable=YES

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to our FTP service.

# "Запираем" пользователей в домашних папках
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd

pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem

Релоадим сервис
/etc/init.d/vsftpd reload

Добавим в /etc/shells строку если ее нет, а то фиг а не ftp будет, мы же назначили у пользователей такой, никакой, шел.

/bin/false

Вродивсе...

А нет!

Добавлю:
уменьшаем занимаемую процессами память, для этого уменьшаем стек
ulimit -s делаем ulimit -s 128 (в килобайтах, может этого мало, по умолчанию вроде 8 мегабайт)
так у меня упала загрузка памяти (100Мб) с 54-61% до 36%