Настройка 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 со следующим содержанием
<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
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%