Как создать свой сервер на убунту

Домашний linux сервер своими руками

Хочется поделиться с хабросооществом информацией о том как я собирал домашний сервер.

Из софта на домашнем сервере будет «крутиться» следующий набор:

  • torrent клиент с web-мордой
  • DHCP — раздаем ip адреса и сетевые настройки
  • TFTP — для сетевой загрузки
  • OpenVPN — для хождения в сеть с нетбука из недоверенных сетей
  • FTP/Samba/NFS — сетевые шары для доступа с домашних машин
  • Radius — для WPA2 авторизации
  • DigiTemp — мониторинг домашней температуры

Аппаратная часть

При выборе аппаратной части, вариантов было несколько:

  • старенький комп
  • самосбор на базе mini-ITX
  • тонкий клиент HP T5000
  • тонкий клиент на базе Neoware CA2

Первый вариант был сразу же отброшен из-за шума, пыли и энергопотребления. Второй был заказан, пока шли комплектующие, я успел передумать (захотелось шум и энергопотребление свести до минимума). В итоге, на Ebay были куплены тонкие клиенты HP t5000 и Neoware CA2. Месяц спустя пришли тонкие клиенты и из двух, после долгих размышлений, был выбран Neoware CA2. В него идеально поместился 2.5′ HDD и вторая сетевая карта.

После допиливания, в буквальном смысле, Neoware CA2 я принялся ставить на него Ubuntu 9.10 с офисного TFTP сервера. Установку производил самую минимальную. Если бы не было набора для сетевой установки, ставил бы Debian с USB CD-ROM и netinstall диска. Сам я ярый фанат RHEL/CentOS, но на домашний сервер решил ставить что-то из debian семейства, для расширения кругозора.

Torrent клиент и вебморда

Теперь перейдем к установке torrent клиента и вебморды. Была выбрана связка rtorrent + rutorrent, установка из репозитариев была отметена сразу, т.к. «родной» пакет был собран без xmlrpc-c который расширяет функционал rutorrent. Ниже фактически, скрипт для авто-установки rtorrent+rutorrent+lighttpd+php.

Устанавливаем всё что необходимо для компиляции xmlrpc-c, libtorrent, rtorrent
apt-get install checkinstall subversion build-essential make autoconf autotools-dev automake libtool libcurl4-openssl-dev libsigc++-2.0-dev pkg-config libncurses5-dev
apt-get remove rtorrent libtorrent11 libxmlrpc-c3 libxmlrpc-c3-dev libxmlrpc-core-c3 libxmlrpc-core-c3-dev

Компилируем и «заворачиваем» в .deb пакет xmlrpc-c, libtorrent, rtorrent
svn co xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced xmlrpc-c
cd xmlrpc-c
./configure —prefix=/usr && make && checkinstall -D

cd ..
wget libtorrent.rakshasa.no/downloads/libtorrent-0.12.6.tar.gz
tar zxfv libtorrent-0.12.6.tar.gz
cd libtorrent-0.12.6
rm -f scripts/.m4 # для Debian
./autogen.sh && ./configure —prefix=/usr && make && checkinstall -D

cd ..
wget libtorrent.rakshasa.no/downloads/rtorrent-0.8.6.tar.gz
tar zxfv rtorrent-0.8.6.tar.gz
cd rtorrent-0.8.6
rm -f scripts/.m4 # для Debian
./autogen.sh && ./configure —with-xmlrpc-c —prefix=/usr && make && checkinstall -D

К сожалению, rtorrent не умеет работать в режиме daemon, по этому будем использовать screen
apt-get install screen -y
wget libtorrent.rakshasa.no/raw-attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh —output-document=/etc/init.d/rtorrent
chmod +x /etc/init.d/rtorrent
sed -i ‘s/»user»/»torrents»/’ /etc/init.d/rtorrent
update-rc.d rtorrent defaults
useradd -d /torrents -m torrents

Создаем конфиг и папки для сессий и готовых торрент закачек, после чего стартуем rtorrent.
mkdir /torrents/.rtorrent_session
cat >> /torrents/.rtorrent.rc

Теперь займемся вебмордой rutorrent. Для работы rutorrent необходим вебсервер и интерпретатор php.
apt-get install lighttpd php5-cgi php5-cli php5-curl curl -y
lighty-enable-mod fastcgi
echo ‘server.modules += ( «mod_scgi» )’ >> /etc/lighttpd/lighttpd.conf
cat >> /etc/lighttpd/lighttpd.conf
( «127.0.0.1» =>
(
«host» => «127.0.0.1»,
«port» => 5000,
«check-local» => «disable»
)
)
)
EOF
/etc/init.d/lighttpd force-reload

Вебсервер готов, теперь будем ставить rutorrent и несколько полезных плагинов к нему.
cd /var/www/
svn checkout rutorrent.googlecode.com/svn/trunk/rutorrent
cd /var/www/rutorrent/plugins/
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/tracklabels
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/cookies
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/autotools
svn checkout rutorrent.googlecode.com/svn/trunk/plugins/erasedata
chown -R www-data:www-data /var/www/

Теперь можно заходить по server_ip/rutorrent и начинать пользоваться.

Теперь установим DHCP сервер и создадим для него конфиг таким образом чтобы клиенты получали:
router 192.168.1.1
dns сервер 8.8.8.8
сервер времени time.nist.gov
tftp сервер 192.168.1.1
и для примера фиксированная выдача 192.168.1.100 клиенту с MAC-адресом 00:1B:FC:33:F0:25
aptitude install dhcp3-server
cat >> /etc/dhcp3/dhcpd.conf
строчки с option-150 нужны для моего VoIP телефона Cisco 7940.

TFTP и сетевая установка

aptitude install xinetd atftpd atftp

cat >> /etc/xinetd.d/tftp
Теперь проверим, работает ли tftp сервер
root@dvr:

# echo bla > /tftpboot/123
root@dvr:

# atftp 127.0.0.1
tftp> get 123
tftp>
root@dvr:

# cat 123
bla

Всё нормально, теперь создадим netinstall наборы для нескольких ОС: Ubuntu karmic, Ubuntu lucid, Debian lenny, Debian sid, Debian squeeze, Fedora 13, CentOS 5.5, Mandriva 2010.0, Suse 11.2, Slackware 13.1, Hardware Detection Tool, memtest и MHDD. Для этого предлагаю использовать слегка модифицированный скрипт который я взял с HowtoForge.
apt-get install lftp -y

wget itblog.su/tftpboot_installs.sh
bash tftpboot_installs.sh

Теперь добавим SystemRescueCd в PXE меню
wget «http://downloads.sourceforge.net/project/systemrescuecd/sysresccd-x86/1.6.3/systemrescuecd-x86-1.6.3.iso?use_mirror=citylan»
mount -o loop systemrescuecd-x86-1.6.1.iso /mnt/
cp /mnt/sysrcd.* /var/www/
cp /mnt/isolinux/initram.igz /tftpboot/
cp /mnt/isolinux/rescuecd /tftpboot/

cat >> /tftpboot/pxelinux.cfg/default
Без особого труда в это меню можно добавить продукты Acronis, инсталляцию и запуск Windows XP и прочее.

Вот так будет выглядеть наше меню:

Продолжение в следующей части. А именно:

  • OpenVPN сервер для «хождения» в сеть из не доверенных сетей (например из гостиницы)
  • FTP/Samba/NFS сетевые шары
  • Radius для авторизации wi-fi клиентов
  • DigiTemp зачатки умного дома, мониторинг температуры в квартире и за окном
  • festival — говорящий будильник
  • бакапы с хостинга

и подытожит статью скрипт который всё это установит в «два клика».

С удовольствием выслушаю замечания и дополнения.

Источник

Базовая установка и настройка веб-сервера

Содержание

Решил оформить наконец своё HOW-TO на форуме в нашей вики, т.к. это правильнее и форматирование здесь удобнее. Я постарался изложить материал кратко, намеренно упустив подробности, которые не относятся напрямую к сути (вроде того, что конфиги сервера нужно править от рута). Считаем, что читатель имеет базовый уровень работы с линукс-системами.

Просьба к редакторам тоже там отписываться

Базовая установка и настройка веб-сервера

Установка

phpmyadmin — веб-интерфейс для управления БД MySQL.

Настройка Apache

Персональные настройки

Начиная с версии Ubuntu Saucy (13.10) свои настройки следует писать в /etc/apache2/conf-available, активировать настройки следует с помощью команды a2enconf.

Выключаем автозапуск apache2 и mysql

Выключаем автозапуск Apache:

Выключаем автозапуск MySQL:

т.е. должно быть так:

Разрешаем подключение к MySQL из Мира

/etc/mysql/my.cnf

Самое простое — просто закомментировать эту строку.

Кроме этого требуется добавить пользователя, который с разных мест и из разных программ может соединяться с базой, например «admin»:

© 2018 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Источник

Установка сервера Linux + (Nginx + Apache) + PostgreSQL + PHP на VirtualBox (Ubuntu Server 16.04.3 LTS)

На просторах интернета не нашел единого рецепта по установке и настройке такого, довольно нестандартного сервера. Решил написать свой рецепт.

Принцип работы следующий:


Статические данные (файлы) отдает Nginx, а динамикой занимается Apache.
Начнем.

Установим VirtualBox

    Запустим установщик VirtualBox.


Настройки оставим по умолчанию.


Установщик временно отключит нас от сети. Жмем «Yes».

  • Начинаем установку.
  • Финиш.

    Подготовим VirtualBox к установке Ubuntu Server 16.04.3 LTS

    1. Загрузим образ ubuntu-16.04.3-server-amd64.iso
    2. Создадим виртуальную машину.


    Имя: default_server
    Тип: Linux
    Версия: Ubuntu (64-bit)
    Объем оперативной памяти: 2048 МБ

    Важно: У меня 8 ГБ оперативной памяти, и в моем случае, двух гигабайт будет достаточно. У вас может быть иначе.


    Размер жесткого диска: 15 ГБ
    Другие параметры оставим по умолчанию.


    Жмем «Создать».

    Сразу настроим сеть.


    Сменим тип подключения с NAT на Сетевой мост.


    В дальнейшем, мы не будем заниматься пробрасыванием портов.
    Запускаем нашу машину.

    Установка Ubuntu Server 16.04.3 LTS

      Выберем загрузочный диск с образом Ubuntu Server 16.04.3 LTS.


    Выбираем удобный язык, у меня это русский.


    Жмем «Enter».
    Выбираем «Установить Ubuntu Server».


    Выбираем страну.

    Важно: Читайте подсказку внизу экрана.

    Я не буду определять раскладку клавиатуры, мне это не нужно.


    Выбираем страну для которой предназначена клавиатура.


    Выбираем регион раскладки.


    Выбираем комбинацию клавиш, для переключения языка. Мне удобно через CTRL+
    SHIFT.


    Введем имя компьютера, под которым он будут известен в сети.


    Вводим имя админа.


    Вводим имя учетной записи админа (Будет использоваться как логин для входа в систему).


    Вводим пароль от учетной записи админа.


    Повторяем пароль.


    Почему бы и нет.


    Выбираем часовой пояс.


    Пусть система автоматически использует весь диск.


    Диск для разметки, выбираем по умолчанию.


    Записываем изменения на диск.


    У нас нету прокси, оставляем поле пустым и продолжаем.


    Пусть система сама устанавливает обновления безопасности.


    Выбираем набор программ, которые будут установлены вместе с системой.
    Нам будет достаточно стандартного набора и OpenSSH Server.


    Установим GRUB главным.


    Отлично, почти готово.


    Нам нужно изъять диск из привода.
    Устройства -> Оптические диски -> Изъять диск из привода


    Теперь жмем продолжить.
    Прекрасно, Ubuntu Server установлена.


    Вводим логин, следом пароль, попадаем в систему, все окей.
    Выключим нашу машину:
    poweroff
    Конкретно эту машину мы оставим в покое, и будем использовать только для клонирования.
    Клонируем нашу машину:
    Вводим имя.


    Продолжаем.
    Выбираем полное клонирование.


    Жмем клонировать. У меня клонирование длилось две минуты.

    Установим PuTTY, для доступа через SSH

      Запустим установочный файл.


    Настройки оставим по умолчанию.


    Жмем «Install».
    Финиш.

    Подключение через SSH к серверу

      Запустим клон нашей машины, что бы узнать ее ip адрес.
      Напишем команду:
      ifconfig


    На скриншоте я отметил место, где будет написан ваш ip адрес. У меня это: 192.168.0.103 (может смениться, пока писал статью, у меня сменился на 192.168.0.101).
    Теперь можно выйти из учетной записи, написав:
    exit

    Переходим в PuTTY, вводим ip адрес, и имя для сохраняемой сессии.


    Жмем «Save».

    Теперь, при двойном клике по имени сохраненной сессии.


    Мы должны наблюдать следующее:


    Вводим логин, после пароль.
    SSH соединение успешно настроено, теперь можно приступать к настройке (Nginx + Apache) + PostgreSQL + PHP.

    Установка и настройка (Nginx + Apache) + PostgreSQL + PHP

    Перейдем в режим суперпользователя
    sudo su
    Перейдем в корневой каталог
    cd /
    Добавим репозиторий PostgreSQL
    wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O — | sudo apt-key add —

    sh -c ‘echo «deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main» >> /etc/apt/sources.list.d/pgdg.list’
    Добавим репозиторий PHP
    add-apt-repository ppa:ondrej/php
    Сделаем update
    apt-get update
    Сделаем upgrade
    apt-get upgrade
    У меня upgrade длился пять минут.
    У становим python, он нам позже понадобится
    apt-get install python
    Приступим к установке Apache, PHP и PostgreSQL
    apt-get install apache2 php7.2 php7.2-cli php7.2-curl php7.2-fpm php7.2-pgsql postgresql postgresql-contrib postgresql-server-dev-10 libapache2-mod-rpaf build-essential apache2-dev
    По умолчанию, в PostgreSQL нету однобайтовых и беззнаковых чисел, поэтому мы их установим.
    Есть расширение для PostgreSQL, pguint — github.com/petere/pguint
    git clone https://github.com/petere/pguint.git /pguint
    Перейдем в созданный каталог
    cd /pguint
    Теперь нам нужно скомпилировать это расширение (тут понадобится python, который мы установили ранее).
    make

    make install
    Теперь, на сервер PostgreSQL, в нужную базу данных, где хотим использовать беззнаковые и однобайтовые числа, отправим:

    Вернемся в корневой каталог
    cd /
    Установим Nginx, но перед этим остановим Apache, дабы он не занимал порт 80, иначе Nginx не установится.
    service apache2 stop
    Установка Nginx
    apt-get install nginx
    Отлично, теперь остановим и Nginx
    service nginx stop
    Настройка Apache
    a2dismod mpm_event

    a2enconf php7.2-fpm
    Сменим порт Apache
    nano /etc/apache2/ports.conf
    Заменить

    127.0.0.1 — означает то, что к Apache можно обратиться только по локальному адресу.
    8080 — можете поставить любой свободный порт.
    Перейдем в папку с доступными сайтами
    cd /etc/apache2/sites-available
    Создадим конфигурационный файл нашего сайда
    nano domain-name.local.conf
    И привести его к такому виду:

    Посмотрим, что у нас лежит в /var/www
    cd /var/www/

    ls -F
    Папка html, нам более не нужна, удалим ее вместе с содержимым
    rm -R html
    Создадим свою папку, со своим сайтом
    mkdir domain-name.local/
    Перейдем в папку с нашим сайтом
    cd domain-name.local/
    Создадим документ index.pnp
    nano index.php
    В него запишем:

    С этим пока закончили.
    Вернемся в корневой каталог
    cd /
    В apache стоит rpaf 0.6 и он не передаёт/принимает порт от nginx и не работает правильно, как надо. Поэтому его надо обязательно обновить.
    wget -O rpaf_v0.8.4.tar.gz https://github.com/gnif/mod_rpaf/archive/v0.8.4.tar.gz

    tar xvf rpaf_v0.8.4.tar

    cd mod_rpaf-0.8.4/
    Теперь скомпилируем
    make

    make install
    Выходим в корневой каталог
    cd /
    Хорошо, продолжим настройку Apache.
    nano /etc/apache2/apache2.conf
    Заменить

    Приведем в порядок rpaf.conf
    nano /etc/apache2/mods-available/rpaf.conf
    Приведем его к такому виду:

    Включим наш сайт в Apache.
    a2ensite domain-name.local.conf
    И запустим наш Apache.
    service apache2 start
    C Apache закончили.
    Настроим Nginx
    nano /etc/nginx/sites-available/domain-name.local
    Привести к такому виду:

    Теперь создадим символьную ссылку на этот файл
    ln -s /etc/nginx/sites-available/domain-name.local /etc/nginx/sites-enabled/domain-name.local
    Отредактируем /etc/nginx/sites-available/default
    nano /etc/nginx/sites-available/default
    Уберем default_server.
    И вставим перенаправление с www. и ip

    Запускаем Nginx.
    service nginx start
    Отлично, можем проверить как оно работает.
    Но перед этим отредактируем файл хоста C:\Windows\System32\drivers\etc
    Открыть файл hosts через текстовый редактор, и в самый низ вставить:
    192.168.0.101 domain-name.local
    192.168.0.101 www.domain-name.local
    Заменив ip и домен на свои.
    В браузере перейдем по domain-name.local, и если вы делали все по этому рецепту, мы должны увидеть страницу с phpinfo.
    Отлично, дело осталось за малым.
    Настроим PostgreSQL.
    Создадим нового пользователя PostgreSQL
    sudo -u postgres createuser —superuser test-user
    Войдем в СУБД
    sudo -u postgres psql
    И сменим новому пользователю пароль
    \password test-user
    Теперь новому пользователю нужно сменить тип подключения, для этого нам нужно найти pg_hba.conf файл.
    Пишем


    Покидаем СУБД
    \q
    И начинаем редактировать /etc/postgresql/10/main/pg_hba.conf
    nano /etc/postgresql/10/main/pg_hba.conf
    Ищем
    # Database administrative login by Unix domain socket
    Находим следующее:
    # Database administrative login by Unix domain socket
    local all postgres peer
    Приводим к таком виду:
    # Database administrative login by Unix domain socket
    local all postgres peer
    local all test-user md5
    Перезагрузим PostgreSQL
    service postgresql restart
    Теперь войдем в СУБД через нового пользователя
    psql test-user -h 127.0.0.1 -d postgres
    Вводим пароль, и попадаем в СУБД.
    Создадим тестовую базу данных

    И сразу перейдем в нее
    \c test_db
    Подключим расширение pguint

    И создадим тестовую таблицу

    Заполним таблицу тестовыми данными

    Посмотрим содержимое таблицы test_tb

    Теперь попробуем вывести эти данные из php.
    Закрываем соединение с СУБД
    \q
    Откроем /var/www/domain-name.local/index.php
    nano /var/www/domain-name.local/index.php
    И приведем к следующему виду:
    «; ?>

    Теперь проверим, и убедимся, что это работает


    Отлично, мы настроили (Nginx + Apache) + PostgreSQL + PHP и он исправно работает.

    Настроим FTP доступ к сайту

    Установим FTP сервер
    apt-get install vsftpd
    Остановим vsftpd перед настройкой
    service vsftpd stop
    Откроем etc/vsftpd.conf
    nano etc/vsftpd.conf
    Установить/заменить/переключить следующие параметры:

    1. listen=YES
    2. listen_ipv6=NO
    3. local_enable=YES
    4. write_enable=YES
    5. chroot_local_user=YES
    6. pam_service_name=ftp

    Создадим нового пользователя для доступа через FTP
    useradd -d /home/domain-name -s /sbin/nologin domain-name
    Установим для него пароль
    passwd domain-name
    Создадим домашнюю директорию пользователя
    mkdir -p /home/domain-name
    Установим для нее права
    chmod a-w /home/domain-name
    Создадим группу для пользователя
    groupadd ftps
    Добавим пользователя в группу
    usermod -G ftps domain-name
    Поменяем владельца каталога
    chown -R domain-name:ftps /home/domain-name
    Создадим папку нашего сайта
    mkdir /home/domain-name/domain-name.local
    Сменим у нее владельца
    chown -R domain-name:ftps /home/domain-name/domain-name.local
    Смонтируем наши каталоги, откроем файл /etc/fstab
    nano /etc/fstab
    В самый низ вставим
    /var/www/domain-name.local /home/domain-name/domain-name.local none bind 0 0
    Добавим владельца /var/www/domain-name.local
    chown www-data:domain-name /var/www/domain-name.local/ -R
    Назначим права
    find /var/www/domain-name.local -type d -exec chmod 775 <> \;
    find /var/www/domain-name.local -type f -exec chmod 664 <> \;
    И запустим vsftpd
    service vsftpd start
    Проверим, я буду использовать FileZilla.


    Все хорошо, попробуем создать каталог.


    Работает.
    Настроим защищенное FTP соединение.
    Остановим vsftpd
    service vsftpd stop
    Сгенерируем сертификат
    openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem
    Тут вводим все, что вшей душе угодно

    Country Name (2 letter code) [AU]:
    State or Province Name (full name) [Some-State]:
    Locality Name (eg, city) []:
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:
    Organizational Unit Name (eg, section) []:
    Common Name (e.g. server FQDN or YOUR name) []:
    Email Address []:

    Откроем etc/vsftpd.conf
    nano etc/vsftpd.conf
    Установим/добавим следующие параметры:

    1. ssl_enable=YES
    2. ssl_tlsv1=YES
    3. ssl_sslv2=NO
    4. ssl_sslv3=NO
    5. rsa_cert_file=/etc/ssl/private/vsftpd.pem
    6. rsa_private_key_file=/etc/ssl/private/vsftpd.key
    7. allow_anon_ssl=NO
    8. force_local_data_ssl=YES
    9. force_local_logins_ssl=YES
    10. ssl_ciphers=HIGH

    Сохраним и запустим vsftpd
    service vsftpd start
    Давайте испытаем

    Ура, все работает, можно приступать к разработке веб приложения.

    Источник

  • Mac OS X Hints
    Adblock
    detector