Эта учебная статья, из нескольких частей (Часть 1\3), предполагает что вы уже умеет входить на сервер через SSH, поэтому в местах про "заходим/выходим/перезаходим на сервер" говориться именно про вход через SSH. Мы будем проделывать все манипуляции на сервере от DigitalOcean.com за 5$, таким образом все смогут протестировать и убедиться в пользе данной статьи.
И так мы запустили сервер на ubuntu 14.04
Теперь, пока всё свежо - освежим всё до идеала!))
apt-get update apt-get upgrade apt-get autoremove
Когда попросить подтверждения для продолжения жмём на "Y", затем ENTER. (Хотя в целом должно работать на любом из ubuntu 11 и больше) И первым делом надо настроить файл локали и времени.
У DigitalOcean есть причуда настраивать локали по вашей стране. Ну к примеру я сидя в Азербайджане, поглядывая на первые европейские олимпийские игры, и запуская новый сервер могу получить в локалях вот такие параметры.
# Created by cloud-init v. 0.7.5 on Mon, 15 Jun 2015 07:30:59 +0000 LANG="en_US.UTF-8"
И если их не изменить (на дефолтные английские) то в будующем при установке базы
данных PostgreSQL может появиться небольшой неприятный глюк о котором может
потом расскажу. Выглядеть глюк в терминале мог бы примерно так:
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = "en_US:en", LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
Что бы этого избежать, делаем следующее.
> /etc/default/locale
">" - очищает файл полностью (не волнуйтесь, в самом начале работы сервера это неопасно).
Откроем файл locale следующей командой
nano /etc/default/locale
Копируйте следующие данные в этот файл:
LANGUAGE=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 LANG=en_US.UTF-8 LC_NUMERIC=en_US.UTF-8 LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=en_US.UTF-8 LC_ADDRESS=en_US.UTF-8 LC_TELEPHONE=en_US.UTF-8 LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=en_US.UTF-8
Теперь обязательно перезайти на сервер!
reboot
Проверяем текущий часовой пояс, установленный на машине. Для этого выполняем команду date. На экране появится что-то типа:
Tue Jun 16 00:38:33 EDT 2015
В данном случае EDT и есть наш текущий часовой пояс.
Если вы хотите изменить время на сервере:
1. Зайдя в директорию /usr/share/zoneinfo мы увидим список регионов, из которых можно выбрать наиболее подходящий для нас. Допустим, мы хотим переключиться на часовой пояс Баку. Для этого нам нужно использовать файл Baku, находящийся в поддиректории Asia.
2. На всякий случай делаем резервную копию файла с текущими настройками:
mv /etc/localtime /etc/localtime-old
3. Создаем символическую ссылку на нужный нам timezone:
ln -sf /usr/share/zoneinfo/Asia/Baku /etc/localtime
4. Устанавливаем аппаратные часы, выполнив команду:
/sbin/hwclock --systohc
Аппаратные часы - это те часы, которые работают на вашем компьютере даже тогда, как питание компьютера отключено. Это возможно благодаря наличию в современных компьютерах литиевой батареи или батареи другого типа в более старых компьютерах.
Мы можем увидеть различие между аппаратными и системными часами
hwclock --show
Вы увидите что-то вроде следующего:
Tue 16 Jun 2015 08:10:31 AM AZST -0.224429 seconds
Теперь добавим нового пользователя на наш сервер, сидеть под root пользователем крайне опасно.
adduser username
Запросит новый пароль для пользователя, введите и запомните его. Он попросит дополнительную информацию для пользовательского профиля, но она не существенна поэтому можете пропустить все остальные пункты просто нажимая ENTER
Вместо username можете использовать любое удобное вам имя НО, оно должно сответствовать следующему регулярному выражению
^[a-z][-a-z0-9]*$
Не пугайтесь, сейчас всё объясню. По стандартам международным, Вам дозволено вписать любое имя включающее в себя следующие символы
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 . _ -
Но вот по стандартам(рекомендациям) UBUNTU, к которым я рекомендую прислушаться, Вам дозволены следующие символы
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 -
и первый символ обязательно буква в нижнем регистре.
Если подумать это не большие жертвы.
Добавим этому пользователю некоторые права что бы мы могли использовать команду sudo
usermod -a -G sudo username
Перезагрузите сервер в случаи если какие либо новые установки этого требуют.
reboot
Как создать публичный ключ SSH. (Эту статью я ещё не написал, но скоро))) вы можете и загуглить.
Если вы уже создавали публичный ключь SSH.
Откройте новое окно терминала на вашем компютере.
С ВАШЕГО КОМПА на сервер скопируйте публичный SSH ключ к пользователю username(любое ваше имя пользователя что вы поставили) следующей командой
ssh-copy-id -i ssh_key.pub username@0.0.0.0
вместо username имя пользователя которого вы создали, вместо нулей впишите ip сервера. Вас попросят ввести пароль.
Теперь мы можем подключиться к серверу через ssh без ввода пароля!
Отредактируем конфигурационный файл sshd_config
sudo nano /etc/ssh/sshd_config
Ctrl+w это поиск по файлу
PermitRootLogin no - запрет для входа под root пользователем
PasswordAuthentication no - чтоб не входили только лишь по паролю (незабывайте убрать # в начале строки)
X11Forwarding no - отключаем возможность перенаправлять вывод содержимого окна в другое место
AllowUsers username deploy – Если не найдёте эту строчку просто впишите её в конец файла.
Вместо 'deploy' можно любое имя, мы будем использовать этого пользователя для запуска нашего rails приложения. Мы создадим его чуть позже.
Закроем и сохраним файл
CTRL+X
Y
ENTER
Прежде чем пойдём дальше, проведём быстрый тест на верное заполнение файла, если в редактируемом нами файле обнаружиться ошибка мы просто не сможем войти обратно и придётся использовать консольный доступ к серверу (на digitalocean.com он существует) и поправлять ошибки, а это отнимает время.
Следующая команда выведет нам конфигурации в окно терминала
sudo sshd -T
Найдите там следующие строки (примерно 10-12 строчки с конца)
allowusers username
allowusers deploy
Если они есть всё ок. Произведём перезапуск демона чтоб подобрал новые конфигурации
sudo service ssh restart
Теперь настроем firewall-а. UFW - Uncomplicated FireWall
sudo ufw logging on && sudo ufw allow ssh && sudo ufw allow www && sudo ufw allow https
запускаем firewall
sudo ufw enable
Жмём Y и ENTER
проверить статус допущенных портов если интересно
sudo ufw status
Бонус!
Можно добавить swap-память (это как запасной объем оперативной если сервер уж слишком слаб. При генерировании JavaScript файлов лишняя оперативка не помешает). Как это сделать на Убунту 16.04 (и других версий) можно найти тут