Мне иногда требуется небольшой сервак, в фоне, постоянно-периодически опрашивать-мониторить, логи собирать-отправлять, некоторые машины-адреса-порты. Дело примитивное, но требует чтоб машинка была включена и работала постоянно. К примеру. Заодно можно поработать с терминалом, никогда "с нуля" не делал
И освоиться в VPS. Записал для себя, но плюс сейчас много народу, судя по темам, лазит на VPS с той же винь, может, имеет смысл состряпать что-то в вики.
Читаем сайт:
http://www.host1free.com/Описание, к примеру, было на хабре
"VPS за бесплатно? Легко!" или
"Прокачка debian/ubuntu сервера для маленьких. Часть 1".
Регистрироваться здесь.
Указываем (латынь)
имя, фамилию,
имя_хоста - для примера, ubuntuvps
шаблон операционки - выбрал ubuntu-12.04-x86_64 .
мой_майл - для примера, myvps@mail.com
Конечно, для малюсенького сервака может и лучше было бы debian-6.0_x86, но сервак я беру, в основном, "чтобы посмотреть", и 64-разрядная LTS мне представляется оптимальнее. Потом, при платном, мне кажется, при смене версии могут быть свои приколы.
Через какое-то время (м.б. и неделя) приходит
Your free VPS has been activated.
Log in here: http://members.host1free.com/vps
Your username: myvps@mail.com
Your password: ***********
Have fun with a free VPS server provided to you by Host1Free.com
Повторная регистрация с другим майлом-фио - отвечает "С вашего IP - только один раз". Хотя, думаю, можно найти где зарегаться с какого-то еще
Входим по указанному адресу, логин "myvps@mail.com", вот этот пароль дали.
Примечание: сразу меняем себе пароль.
Видим красавца
CTID, Node - какой-то мой идентификатор и нода
И вот что есть в строке состояния:
Hostname IP Addresses OS template RAM SWAP Disk Size State
ubuntuvps x.xxx.xx.xx ubuntu-12.04-x86_64 128 MB 256 MB 10 GB running
Последнее в строке - кнопка Actions, состояние manage, значит, живой. Нажимаем.
Получаем окно состояния машины с кнопками
Stop - Restart - Rebuild - ChangeRootPW - VirtualConsole - StatisticsНу, Stop, Restart, Rebuild и Statistics - это понятно.
Change Root PW - отдельная фишка, задать или изменить пароль рута.
Virtual Console - вот, это "запасной вход". По нажатию кнопки предлагается создать консоль, и после этого сообщается:
Virtual console has been created. Information:
IP: yy.yyyy.yy.yy (может не сопадать с IP)
Username: console-CTID (CTID цифры моего идентификатора)
Password:***********
Вот эти IP, username password и есть параметры для первого входа в сессию, либо "аварийный вход" на будущее. При этом попадаю в сессию под рутом. Порт, изначально, стандартный 22. Терминал.
Использовать putty - я как-то не знаю, зачем она, если не с иной ОС?
ssh console-CTID@yy.yyyy.yy.yy -p 22
По первому разу - принять сертификат, потом запросит пароль.
The authenticity of host 'yy.yyyy.yy.yy' can't be established.
RSA key fingerprint is **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added 'yy.yyyy.yy.yy' (RSA) to the list of known hosts.
Connection closed by yy.yyyy.yy.yy
Далее входим со вводом пароля.
Вот тут как-то странно, не всегда пароль проходит нормально.
Пришел к тому, что пароль беру в буфер и быстро "вставляю из буфера" по запросу его ввода, то есть.
А так, с 3-4 раза - попадаю, если быстро набирать После смены порта на нестандартный, пропало - влетаю с первого раза.
Итак, я на сервере и под рутом! В окне терминала наконец-то вижу
root@ubuntuvps:/#
Что посмотреть?
root@ubuntuvps:/# /df -hFilesystem Size Used Avail Use% Mounted on
/dev/ploop52074p1 9.9G 761M 8.6G 8% /
none 64M 4.0K 64M 1% /dev
none 13M 1.0M 12M 8% /run
none 5.0M 0 5.0M 0% /run/lock
none 64M 0 64M 0% /run/shm
root@ubuntuvps:/# swapon -sFilename Type Size Used Priority
/dev/null partition 262144 0 -1
root@ubuntuvps:/# free -m total used free shared buffers cached
Mem: 128 64 63 0 0 38
-/+ buffers/cache: 25 102
Swap: 256 0 256
Данные системы
echo "System: "`lsb_release -d --short` `uname -m`
echo "Kernel: "`uname -r`" DE: $XDG_CURRENT_DESKTOP Session: $GDMSESSION"
echo "Processor: "`cat /proc/cpuinfo | grep "model name" -m1 | cut -c14-`
echo "Memory (Gb): "`free | grep Mem | awk '{print int($2/10485.76)/100}'`
System: Ubuntu 12.04.4 LTS x86_64
Kernel: 2.6.32-042stab083.2 DE: Session:
Processor: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz
Memory (Gb): 0.12
Видеокарта, естественно, фиг, диски виртуальные
0. Пропапдейтимся и поставим nano и mc. Пока мы там начнем что-то еще делать, сделаем (без sudo, мы root)
apt-get update && apt-get dist-upgrade
apt-get install nano mc
Начинаем обживаться. Пароли, порты и пользователь. Инет, шо тот проходной двор.
1. Пароль root. Задается в Actions. Ставим приличный, сложный и длинный.
2. Пользователь. Порыться по гуглу - маса народу сидит под рутом
Что ж , мне сие не то что не нравится.. Если люди зачем-то в ubuntu приняли схему sudo, мне привычнее с ней работать. Кроме того, бывают приколы в некоторых програмках с каталогами-настройками. Я использую ubuntu, и потому - давайте сидеть не под root. В описании чтобы отличить от обычного user - дадим имя srvuser, все же это сервер.
adduser srvuser
root@ubuntuvps:/# adduser srvuser
Adding user `srvuser' ...
Adding new group `srvuser' (1000) ...
Adding new user `srvuser' (1000) with group `srvuser' ...
Creating home directory `/home/srvuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: (ввод пароля пользователя)
Retype new UNIX password: (повтор пароля пользователя)
passwd: password updated successfully
Changing the user information for srvuser
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@ubuntuvps:/#
Далее, включение его в группу.. где написано sudo, где написано admin.. Несколько вариантов задания команд
adduser srvuser sudo
root@ubuntuvps:/# adduser srvuser sudo
Adding user `srvuser' to group `sudo' ...
Adding user srvuser to group sudo
Done.
root@ubuntuvps:/#
3. Порт.Смотрим открытые порты
netstat -tupln | grep LISTEN
root@ubuntuvps:/# netstat -tupln | grep LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 681/apache2
tcp 0 0 5.231.58.22:53 0.0.0.0:* LISTEN 5136/named
tcp 0 0 127.0.0.2:53 0.0.0.0:* LISTEN 5136/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 5136/named
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 423/sshd
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 5136/named
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 647/sendmail: MTA:
tcp 0 0 127.0.0.1:587 0.0.0.0:* LISTEN 647/sendmail: MTA:
tcp6 0 0 :::53 :::* LISTEN 5136/named
tcp6 0 0 :::22 :::* LISTEN 423/sshd
tcp6 0 0 ::1:953 :::* LISTEN 5136/named
и выберем любой НЕ из этого списка, вплоть до 65535
Поскольку в 00 часов я не очень себе доверяю, ткнем в небо пальцем (
если у вас установлен пакет rand, на локале, на сервер не надо ставить его):
echo `rand -M 65535`
дает 55313, и это подойдет не хуже других.
Редактируем конфиг
nano /etc/ssh/sshd_config
прописываем вместо Port 22, в начале, и раскомментируем, если отмечено #
# What ports, IPs and protocols we listen for
Port 55313
потом находим в тексте и прописываем
PermitRootLogin no # ибо не фиг под рутом лезть на печку
PermitEmptyPasswords no # ибо не надо нам пустого пароля
и дописать в конце, или будет "ой!", потоvу что root закрыли, а пока еще себя не открыли:
AllowUsers srvuser
После этого перестартуем
/etc/init.d/ssh restart
или ребутаем машинку.
4. Вход под собой.Для нового коннекта - нам уже не нужно создавать консоль
console-CTID.
Идем под собой, честно глядя ему в глаза, с нашим новым паролем юзера и помахивая...
ssh srvuser@x.xxx.xx.xx -p 55313 -v
Можно потыкать палочкой и под рутом, и по порту 22, проверить, что сервачок вам нарисует фиг.
Если что-то не так? Создаем в менеджере VPS консоль console-CTID, берем там IP, имя и пароль, и идем по порту 55313, попадаем под рутом, разбираемся по новой с /etc/ssh/sshd_config. В самом худшем случае - вы не так много времени потратили, у вас есть кнопка Rebuild.
Более детально, править конфиги и файрволл - то уже не здесь.
Это был существенно необходимый минимум.
Если мы попали, посмотрим, "где я"?
ls -la
srvuser@ubuntuvps:~$ ls -la
total 24
drwxr-xr-x 3 srvuser srvuser 4096 Feb 12 15:54 .
drwxr-xr-x 3 root root 4096 Feb 12 13:18 ..
-rw-r--r-- 1 srvuser srvuser 220 Feb 12 13:18 .bash_logout
-rw-r--r-- 1 srvuser srvuser 3486 Feb 12 13:18 .bashrc
drwx------ 2 srvuser srvuser 4096 Feb 12 15:54 .cache
-rw-r--r-- 1 srvuser srvuser 675 Feb 12 13:18 .profile
srvuser@ubuntuvps:~$
Да, в своем домашнем каталоге. И без root.
4. Временная зона.Нам же не надо импортное время?
Смотрим зоны:
ls /usr/share/zoneinfo/
Уточняем свою
ls /usr/share/zoneinfo/Europe
И находим что поближе, к примеру Zaporozhye. Удаляем линк и ставим свой
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Europe/Zaporozhye /etc/localtime
Обратите внимание - это уже под "sudo".
5. Локализация и локаль.Я бы оставил его на англицком, но в образе изначально есть кириллица, местами проскакивает непонятно что, особенно в mc
А в командах упоминает
"Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset)"
Не совсем с этим разобрался, рецептиков кучи. Переконфигурирование консоли приводит в окна с множеством знаков вопроса в названиях видов локалей, хз де какая. Возможно, если указать где-то своим адресом город London, было бы проще и обойтись без. Или берут локаль по моему IP, кто их знает? Советы типа "sudo apt-get install locales" приводят к "locales is already the newest version", рекомендации по прописанию ru_RU.UTF-8 в конфиги, как я понимаю, для debian или чего-то еще, в 12.04 не катит.
В конечном итоге попустило, примерно после
sudo apt-get install console-cyrillic
sudo locale-gen ru_RU.UTF-8
sudo locale-gen en_US.UTF-8
sudo apt-get install -y language-pack-ru language-pack-ru-base
sudo dpkg-reconfigure locales
sudo update-locale LANG=ru_RU.UTF-8 LC_MESSAGES=POSIX
sudo dpkg-reconfigure console-setup
Хотя в mc сообщения вместо
??
?
?
?? стали английскими, но понятными
Надо тренироваться на "чистой" системе, если как-то пересоздам, то попробую. Как вариант, было бы проще вообще поставить чисто en_US, а все прочее посносить.
6. Передача файлов.Надо же как-то обмениваться какими-то файлами, с этим нашим сервером? Желательно, без моего участия. Есть пятьсот способов, мне показалось самым простым использовать dropbox. Гугл скажет, что я изобрел велосипед, значид, нормально
Но "мой" dropbox используется в своих целях, а для srvuser, первым делом, создаю-регистрирую отдельную учетку, к примеру, на тот же адрес почты myvps@mail.com. И в "своем" каталоге Dropbox на локале создаю подкаталог myvps (полностью ~/Dropbox/myvps), и расшариваю его для этого заоблачного друга, myvps@mail.com.
Ставлю на сервере dropbox, установка подробно описана, к примеру
"How to Install and Configure Dropbox on Ubuntu Server 12.04".
Загружаем пакет (у нас 64-разрядная архитектура)
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86_64"
Или для 32-х разрядной
wget -O dropbox.tar.gz "http://www.dropbox.com/download/?plat=lnx.x86"
Распаковываем и запускаем
tar -zxvf dropbox.tar.gz
~/.dropbox-dist/dropboxd
Когда на сервере пойдет повтором строка запроса подтверждения - на своей машине, на локале, вхожу в браузере в учетку dropbox-myvps,там висит запрос на подключение ubuntuvps, надо подтвердить, что это устройство подключаем.
В итоге будет создан каталог Dropbox и, поскольку есть общий ресурс, подкаталог ~/Dropbox/myvps, им и будем пользоваться как "ящиком обмена".
Создание сервиса - /etc/init.d/dropbox пропускаем. На сервере 128 м ОЗУ, и мне смысла нет держать загруженным dropbox постоянно, слопает от 20 до 40 м памяти, а объем мне надо мелкий. В crontab работает dropbox.py.
Затем настроим автоматический старт, к примеру,
каждые 20 минут на 2 минуты, и хватит. Скачиваем
wget -O ~/.dropbox/dropbox.py "http://www.dropbox.com/download?dl=packages/dropbox.py"
chmod +x ~/.dropbox/dropbox.py
Если потребуется проверить состояние, можно использовать
~/.dropbox/dropbox.py status
В планировщик (без sudo), делаем
crontab -e
Задаем расписание
[font=courier]*/20 * * * * /home/srvuser/.dropbox/dropbox.py start > /dev/null 2>&1
2 * * * * /home/srvuser/.dropbox/dropbox.py stop > /dev/null 2>&1
22 * * * * /home/srvuser/.dropbox/dropbox.py stop > /dev/null 2>&1
42 * * * * /home/srvuser/.dropbox/dropbox.py stop > /dev/null 2>&1[/font]
Проверить расписание
crontab -l
При этом "> /dev/null 2>&1 " - чтобы не забивало служебной почтой (сообщения в консоли типа "You have new mail in /var/mail/srvuser").
Для очистки появившейся почты - сделать
mailx -u srvuser
и в ней, в командном режиме, использовать команды
d (удалять сообщение) и
q (выход)
===================================================
Вопросы:
1. Интересно, как-то можно задавать пароль для ssh в команде? Не нашел. В сесии по набору-вставке не с первого раза выходит как-то. Или как-то в putty можно?
2. Ядро какое-то странноватое - 2.6.32-042stab083.2 - для 12.04? Или это сборки для виртуалок?
3. Локали. Мусор остался. Буду доразбираться при случае. Может, таки проще все снести..
4. А нафига я задал пароль root? Имет ли смысл? Хотя и дал ему от всей души паролину, длинную и путанную.