LAMP + MTA + FTP = 67mb
Условные обозначения: ip-адрес 123.123.123.123.
Доменное имя, на которое отзывается данный IP: test.serverstats.ru

эти команды можно вводить без изменений

эти команды требуют редактирования. Чаще всего - подстанока своего домена, IP etc

эти команды важны. Запомните их.

Приведено для для примера, они не всегда нужны.

Если не понятно, что какая команда делает, пишем в консоли

man <команда>
или
<команда> --help


Зададим hostname нашего сервера.

hostname test.serverstats.ru

Обновим список пакетов

apt-get update

Ставим mysql

apt-get install mysql-server mysql-client libmysqlclient15-dev

Если на сервере менее 150мб памяти, установка не закончится и вылетит большой и страшный fail.
Это не страшно. Правим конфиг редактором nano

nano /etc/mysql/my.cnf

Сначала сократим использование памяти сервером. Привожу мзмененную часть конфига

#
# * Fine Tuning
#
key_buffer              = 16K
max_allowed_packet      = 2M
thread_stack            = 64K
thread_cache_size       = 4

И самое главное, что нужно сделать - раскомментировать строку #skip-innodb

skip-innodb

Нажимаем ctrl+X для выхода из nano. На вопрос о сохранении жмем кнопку Y, далее Enter для подтверждения имени файла
Заканчиваем неудачную установку

apt-get -f install
если это не помогло, удаляем записи по данным пакетам и "ставим" их снова
cd /var/lib/dpkg/info
rm mysql*
apt-get -f install
dpkg --configure -a
Проверяем:
apt-get install mysql-server mysql-client libmysqlclient15-dev
Должно сказать, что все уже установлено и ставить нечего :)

Обезопасим mysql: 

mysql_secure_installation

Ставим вебсервер

apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

И кучу прибамбасов к нему.(ненужное удалить.)

apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Я сократил список до

apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-imagick php5-imap php5-mcrypt php5-mysql php5-xmlrpc

Правим необходимые directoryIndex

nano -w /etc/apache2/mods-available/dir.conf

Сократим нагрузку,

nano /etc/apache2/apache2.conf

Привожу измененный кусок

<IfModule mpm_prefork_module>
    StartServers          1
    MinSpareServers       1
    MaxSpareServers       2 # можно поставить и больше, с соответственно большим расходом памяти.
    MaxClients           50
    MaxRequestsPerChild 4000
</IfModule>

Имеем:

Mem:    131072k total,    34964k used,

Ставим FTP-сервер vsftpd

apt-get install vsftpd libpam-mysql

Заходим в mysql с рутовым паролем и создаем необходимы таблицы и пользователей. (поменяйте пароль не свой)

mysql -u root -p
CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
USE vsftpd;
CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIQUE (
`username`
)
) ENGINE = MYISAM ;
quit;

Добавляем пользователя

useradd --home /home/web --gid nogroup -m --shell /bin/false vsftpd

Переименовываем старый конфиг и создаем новый

mv /etc/vsftpd.conf /etc/vsftpd.conf_orig
touch /etc/vsftpd.conf
nano /etc/vsftpd.conf

Пишем:

force_dot_files=YES
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
guest_username=vsftpd
local_root=/home/web/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf
data_connection_timeout=600
idle_session_timeout=600
ftpd_banner=Come silently, ask a little, leave quickly.vdsadmin@lazutov.ru

Создаем папке для доп. конфигурации, напстраиваем идентификацию.

mkdir /etc/vsftpd_user_conf
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
cat /dev/null > /etc/pam.d/vsftpd
nano /etc/pam.d/vsftpd

Пишем (не забываем про пароль)

auth required pam_mysql.so user=vsftpd passwd=pass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=vsftpd passwd=pass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2

перезапускаем

/etc/init.d/vsftpd restart

Добавление пользлвателей: 1) добавить запись в БД.

mysql -u root -p
USE vsftpd;
INSERT INTO accounts (username, pass) VALUES('site', PASSWORD('111111'));
quit;

2.Создать каталог и проставить нужные права

mkdir /home/web/site
chown vsftpd:nogroup /home/web/site

Все. Заходите по FTP с логином site и паролем 111111
Конфигурирование apache.
Обнуляем дефолтный файл.
правим виртуалхосты

# логичнее все-таки оставить один образец.
mv /etc/apache2/sites-available/* /home/
rm /etc/apache2/sites-enabled/*
nano /etc/apache2/httpd.conf

mkdir /home/web/site/123.123.123.123
mkdir /home/web/site/test.serverstats.ru

Пишем в конфиг

NameVirtualHost *:80
ErrorLog /home/web/site/error.log
CustomLog /home/web/site/access.log combined
ServerAdmin vdsadmin@lazutov.ru
<VirtualHost *:80>
  DocumentRoot "/home/web/site/123.123.123.123"
  ServerName "123.123.123.123"
  ServerAlias "123.123.123.123"
  php_admin_value memory_limit 32M
  CustomLog /home/web/site/~logs/123.123.123.123.log combined
</VirtualHost>
<VirtualHost *:80>
  DocumentRoot "/home/web/site/test.serverstats.ru"
  ServerName "test.serverstats.ru"
  ServerAlias "test.serverstats.ru" "www.test.serverstats.ru"
  php_admin_value memory_limit 64M
  CustomLog /home/web/site/~logs/vds1.serverstat.ru.log combined
</VirtualHost>


Проверяем:

touch /home/web/site/test.serverstats.ru/index.php
Туда пишем: <? phpinfo(); ?>
Выполняем:
cp /home/web/site/test.serverstats.ru/index.php /home/web/site/123.123.123.123/

Заходим браузером на домен и IP адрес. Видим phpinfo - ура. все работает.
При работе с файлами и каталогими сайта из под root -не забывайте скидывать права

chown -R vsftpd:nogroup /home/web/site

ставим phpMyAdmin. Загрузим и распакуем.

cd /home/web/site/123.123.123.123
mkdir pma
cd pma
wget http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-3.1.2-all-languages.tar.gz
tar -xvf php*
cd php*
mv * /home/web/site/123.123.123.123/pma
cd /home/web/site/123.123.123.123/pma
 mv config.sample.inc.php  config.inc.php
nano config.inc.php

Пишем билиберду в $cfg['blowfish_secret'] = '';
Сохраняем.
Сбрасываем права.

chown -R vsftpd:nogroup /home/web/site

Заходим браузером в PMA 123.123.123.123/pma .
Также можно поставить net2ftp - популярный браузерный ftp-клиент.

mkdir /home/web/site/123.123.123.123/ftp
cd /home/web/site/123.123.123.123/ftp
wget http://www.net2ftp.com/download/net2ftp_v0.97.zip

Архив-то зипвый. Поставим нудные утилиты

apt-get install zip unzip
unzip net2ftp*
cd net2*
mv files_to_upload/* /home/web/site/123.123.123.123/ftp
rm -rf *
cd ..
nano settings.inc.php

Меняем $net2ftp_settings["encryption_string"] и

nano settings_authorizations.inc.php
и делаем вот так:
//$net2ftp_settings["allowed_ftpservers"][1] = "ALL";
$net2ftp_settings["allowed_ftpservers"][1] = "localhost";

Сбрасываем права. Идем 123.123.123.123/ftp и радуемся.

Mem:    131072k total,    56044k used

Конечно, phpMyadmin можно закачать и по фтп, однако, совместное использование разархиваторов существенно усоряет и упрощает процесс.
Я специально показал извлечение из 2 архивов - tar и популярный среди пользователей Win zip.
Такими-же командами вы можете извлекать из архивов CMS, форумы и многое другое.
Да, и на последок. Oтправка почты из скриптов. Exim4
Все замечания принимаются.

apt-get install exim4
dpkg-reconfigure exim4-config
выбираем: NO, internet-site, <имя сервера>, 127.0.0.1,<имя сервера>,пусто,пусто,no, /var/mail/, server,

Лазутов Александр. 13.02.2009 (с). mailto: lazutov[c0баka]lazutov.ru

Перепечатка разрешена с уведомлением автора посредствам email и активной ссылкой на источник lazutov.ru