unix 2012-08-08 22-52-10
Готовим сервер к работе - Debian/Ubuntu
Готовим сервер на основе Debian/Ubuntu Linux OS.Устанавливалось на основе шаблона установки системы debian-5.*-minimal от VDSPlanet.ru
Задача: В короткий срок с рабочего сервера с минимальной комплектицией установленного софта сделать сервер, готовый удовлетворить нужды начинающего пользователя: ftp, apache2 с php5, phpmyadmin, mysql, perl, python.
Содержание [убрать]
1 Входим на сервер
2 Первые шаги (apt-get)
3 Установка важного пакета (build-essential)
4 Ставим FTP сервер
5 Дополнительные установки
6 Заходим на сервер через FTP/SSH (WinSCP)
7 Устанавливаем временную зону на сервере
8 Добавляем нового пользователя
9 Меняем локализацию сервера с английского на русский (по желанию)
10 Важное замечание по безопасности
11 Установка сервера баз данных MySQL
12 Установка вебсервера Apache2 и PHP 5
13 Настройка Apache
14 Установка phpMyAdmin
15 Заключение и общие пояснения
Входим на сервер
1. Входим на сервер. Инструкция по входу здесь: SSH
Первые шаги (apt-get)
2. Первым делом стоит сделать apt-get update - пояснение ниже.
В Debian/Ubuntu система портов устроена на основе apt-get.
Простейшие команды apt-get - это:
apt-get update - обновляет список доступных для установки файлов с удаленного сервера.
apt-get upgrade - обновляет всё установленое програмное обеспечение, если обновления наличны.
apt-get install что-либо - устанавливает заданную программу
apt-get remove что-либо - удаляет заданную программу.
man apt-get - помощь по системе портов apt-get (на англ.)
Может возникнуть такая ошибка при выводе команды apt-get update:
W: GPG error: http://ftp2.de.debian.org lenny Release:
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9AA38DCD55BE302B
W: There is no public key available for the following key IDs: 9AA38DCD55BE302B
W: You may want to run apt-get update to correct these problems
Лечится так: apt-get install debian-archive-keyring
После команды выше делаем: apt-get update
Ошибки пропали.
Установка важного пакета (build-essential)
3. Следующим шагом является обязательная установка build-essential: apt-get install build-essential - Данное установит такие пакеты как: gcc, g++, make, perl, patch и иные.
Ставим FTP сервер
4. Начнем с установки легкого FTP сервера на ваш VDS. Все быстро легко и просто. Установим такой FTP сервис, который не будет приносить нам головной боли в будущем - vsftpd. Его преимущество в том, что логин и пароль к SSH (root и др) идентичными логину и паролю на FTP. Установка описана здесь: Установка vsftpd
Дополнительные установки
5. Установим некоторые необходимые пакеты, если таковые уже не установлены:
apt-get install mc
apt-get install tcl8.5 tcl8.5-dev
apt-get install openssl libssl-dev
apt-get install libncurses5-dev
apt-get install ftp
apt-get install telnet
apt-get install traceroute
apt-get install nmap
Далее можете установить любые пакеты по желанию. если знакомы с данной процедурой.
Заходим на сервер через FTP/SSH (WinSCP)
6. Заходим на сервер через Нортон-коммандер-подобную среду используя или FTP или SSH. Это позволит Вам закинуть любой файл на ваш сервер. В списке File Protocol выбираем или FTP или SFTP (SSH). Логин root и соответственно пароль от этого пользователя. Подробнее по входу на сервер здесь: WinSCP
Устанавливаем временную зону на сервере
7. Некоторым людям для использования того или иного софта необходимо работать не только с точным временем, но и с определенными временными зонами. Например Москва, Европа или MSK и MSD. По дефолту время на сервере устновлено в UTC. Чтобы сменить его на желаемое или необходимое, следуйте данным инструкциям: Установка временной зоны
Добавляем нового пользователя
8. Во благо избежания проблем с удалением важных файлов на сервере, рекомендуем Вам создать пользователя, под которым вы сможете производить все неободимые операции. Стоит заметить что некоторые программы не нуждаются в правах суперпользователя root для запуска, установки и даже удаления. Создать пользователя очень легко.
adduser test - добавит пользователя test с домашней папкой в /home/test
root@locahost:~# adduser test
Adding user `test' ...
Adding new group `test' (1000) ...
Adding new user `test' (1000) with group `test' ...
Creating home directory `/home/test' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: --- необходимо ввести пароль и нажать Enter и затем повторить пароль еще раз.
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
Пользователь добавлен.
Теперь на сервер Вы можете заходить под этим пользоваелем, а в любой момент, когда захотите войти под root/суперпользователем, наберите команду su. Вас попросят ввести пароль и Вы уже root. Пример ниже:
test@localhost:~$ su
Password:
root@localhost:~#
Дополнительно:
Изменение пользователя происходит также просто:
usermod [параметры] username
Примеры
usermod -d /home/documents/test test #изменит пользователю test домашнюю папку
usermod -l joe test # изменит имя пользователя test на joe (а не наооборот)
Изменение пароля:
passwd username
Например:
passwd test
Меняем локализацию сервера с английского на русский (по желанию)
9. По необходимости меняем локализацию сервера с английского на русский. Сразу заметим, что найти решение любых проблем вашей системы с русифицированным сервером намного сложнее, так как это блокирует разносторонность ответов в поисковых системах. Мы настоятельно рекомендуем Вам не менять локаль на русский, но если совсем туго с английским, это Ваш выход.
apt-get install locales - на все вопросы вносим Y.
vi /etc/environment - открываем файл на редактирование и удаляем из него любые записи и вносим одну: LANG="ru_RU.UTF-8"
Помощь по использованию vi находится здесь: Vi или откройте файл через WinSCP
Редактируем файл /etc/locale.gen тем же vi: vi /etc/locale.gen - В списке находим ru_RU.UTF-8 UTF-8 и удаляем
значек # перед записью. Сохраняем файл.
locale-gen - запускаем команду для генерации локали. Пример ниже:
root@test:~# locale-gen
Generating locales (this might take a while)...
ru_RU.UTF-8... done
Generation complete.
Перезаходим на сервер. В клиенте, который Вы используете для связи с сервером делаем следующее (большинство людей
использует Putty: SSH):
После того как Вы вошли на сервер, кликните на верхнюю часть окна Putty правой кнопкой мыши, выше черного. Выберите
Change Settings -> Window - Translation -> из списка выберите UTF-8 и нажмите Apply внизу.
Теперь Вы сможете видеть русский язык в окне связи с сервером при выполнении различных команд.
Важное замечание по безопасности
10. Почти всегда сразу после установки сервера начинается подбор паролей по стандартному порту(22) протокола ssh к вашему серверу. Если не дай Бог Вы поставите стандартный, известный "подборщикам" пароль, ваш сервер захватят и удалят все важные файлы.
Самый простой способ - заставить работать SSH на нестандартном порту.
Приведем самую важную часть:
nano /etc/ssh/sshd_config
Надите строку (почти в самом начале):
Port 22
Смените число 22 на любое которое вам нравится до бесконечности (желательно, не более 65535). Перезапустите ssh:
/etc/init.d/ssh restart
Настоятельно рекомендуем выполнить все рекомендации из статьи выше.
Установка сервера баз данных MySQL
11. Установка на настройка mysql для использования минимального количества памяти.
Если у вас маломощьный сервер (до 64мб оперативной памяти) рекомендуется уменьшить расход памяти mysql за счет производительности.
Иными словами 1. Сделать так, чтобы mysql не съело всю память на сервере при старте. 2. Уменьшить потребление памяти на будущее.
Чтобы mysql cразу после установки не зарезервировал всю свободную память, создаем папку и затем файл (действия совершаем под root/суперпользователем):
mkdir /etc/mysql/ - создаем папку
touch /etc/mysql/my.cnf - создаем файл
nano /etc/mysql/my.cnf - открываем файл на редактирование
Вносим в файл текст, представленный ниже и сохраняем:
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
# Basic Settings
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer = 16M
max_allowed_packet = 2M
thread_stack = 64K
thread_cache_size = 4
###
myisam-recover = BACKUP
query_cache_limit = 2M
query_cache_size = 32M
max_binlog_size = 100M
[mysqld]
skip-bdb
skip-innodb
[mysqldump]
quick
quote-names
!includedir /etc/mysql/conf.d/
Ставим сам mysql:
apt-get install mysql-server mysql-client libmysqlclient15-dev
Во время установки появится окно установки mysql пароля. Введите необходимый пароль. Tab - Enter. Подтвердите и снова Tab + Enter.
Во время установки у Вас спросят что делать с /etc/mysql/my.cnf. Вам необходимо указать, чтобы использовался тот, что уже есть на сервере. Иначе конфиг будет перезаписан, и сервер с количеством оперативной памяти меньше 140Mb зависнет. Это связано с конфигурацией mysql. которая устанавливается по дефолту при установке mysql сервера.
Далее:
Обезопасим mysql стандартный утилитой mysql_secure_installation
mysql_secure_installation
Примерные вопросы, которые будут задаваться пользователю:
root@test:~# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
.............
Enter current password for root (enter for none): # введите mysql пароль, установленный вами выше.
Set new root password? [Y/n] # задать новый парооль суперпользователя? Жмем Y (да) и
New password: # вводим пароль
Re-enter new password: # и его проверку
Remove anonymous users? [Y/n] # Удалить анонимных пользователей? Да.
Disallow root login remotely? [Y/n] # запретить удаленных вход под суперпользователем? Да (обязательно!)
Remove test database and access to it? [Y/n] # удалить тестовую БД? Да.
Reload privilege tables now? [Y/n] # перезагрузить привилегии? Да.
Перезапускаем mysql:
/etc/init.d/mysql restart
Теперь MySQL использует не больше 35Mb оперативной памяти, по сравнению с 140Mb, указанными выше мы спасли вам 100Mb оперативки.
Установка вебсервера Apache2 и PHP 5
12. Ставим сам Apache 2:
Для сохранения памяти на сервере apache ставится именно с apache2-mpm-prefork, а не с apache2-mpm-worker.
apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
А также php5 и самые необходимые для начала работы с сервером модулей php5:
apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-mysql php5-gd php5-mcrypt php5-xmlrpc
Сократим нагрузку, соответственно уменьшим потребление памяти (применимо к серверам с малым объемом оперативной памяти ).
nano /etc/apache2/apache2.conf
Привожу измененный кусок. Находим похожий в /etc/apache2/apache2.conf и изменяем.
<IfModule mpm_prefork_module>
StartServers 1
MinSpareServers 1
MaxSpareServers 2 # можно поставить и больше, с соответственно большим расходом памяти.
MaxClients 50
MaxRequestsPerChild 4000
</IfModule>
Перезапускаем Апаче:
/etc/init.d/apache2 restart
Настройка Apache
Условные обозначения: ip-адрес 123.123.123.123.
Доменное имя, на которое отзывается данный IP: test.test.ru
Обнуляем дефолтный файл.
rm -f /etc/apache2/sites-enabled/*
Рекомендуем придерживаться вложеной структуры и размещать сайты в папке /home/<имяПользователя>/<домен>
mkdir /home/test/123.123.123.123
mkdir /home/test/test.test.ru
mkdir /home/test/~logs/
Пишем в конфиг
nano /etc/apache2/httpd.conf
следущие директивы
NameVirtualHost *:80
ErrorLog /home/web/site/error.log
CustomLog /home/web/site/access.log combined
ServerAdmin vdsadmin@lazutov.ru
<VirtualHost *:80>
DocumentRoot "/home/test/123.123.123.123"
ServerName "123.123.123.123"
ServerAlias "123.123.123.123"
php_admin_value memory_limit 32M
CustomLog /home/test/~logs/123.123.123.123.log combined
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/home/test/test.test.ru"
ServerName "test.test.ru"
ServerAlias "test.test" "www.test.test.ru"
php_admin_value memory_limit 64M
CustomLog /home/test/~logs/test.test.ru.log combined
</VirtualHost>
Аналогично можно добавлять домены и поддомены. Не забывайте перезапускать вебсервер после внесения изменений
/etc/init.d/apache2 restart
Установка phpMyAdmin
14. Для, тех, кто хочет закончить настройку побыстрее: вы можете выполнить все действия ниже в одно действие.
apt-get install phpmyadmin
Вас спросят:
Выберите веб-сервер, который будет автоматически настроен для запуска phpMyAdmin.
Веб-сервер для автоматической перенастройки:
[ ] apache2 - Выбираем именно apache2!
Жмем пробел чтобы поставить галочку и Tab + Enter.
phpMyAdmin доступен по адресу: http://ip.адрес.вашего.сервера/phpmyadmin/
Заключение и общие пояснения
Ваш сервер готов к работе.
Исходя из написанной выше статьи Вы можете и понимаете:
1. Как устанавливать дополнительные пакеты системы и обновлять их архив.
2. Умеете добавлять пользователя на сервер. Соответственно и заходить им на сервер использую или FTP или SFTP (SSH) соединение.
3. Умеете и понимаете как работать с локалями в Linux
4. Понимаете как поставить Apache, PHP, MySQL. Знаете как зайти в phpMyAdmin для работы с базами данных MySQL.
5. Умеете добавить доменное имя на свой сервер (VirtualHost).
6. Знаете как сменить часовой пояс своего сервера/VDS.
Данная статья делалась на основе шаблона VDSPlanet.ru - debian-5.0.3-i386-minimal. Подтверждена работоспособность на Debian 5 и Ubuntu 8 и выше.