Виртуальные хосты на apache2 под Ubuntu 16.04lts

Редакция автор: stain

Ubuntu 16.04 Lts +Apache2 +Несколько доменов на одном IP + сайты в каталоге пользователя

Добавить в /etc/apache2/apache2.conf после других аналогичных записей:
sudo nano /etc/apache2/apache2.conf


  AllowOverride All
  Require all granted
 

Добавить в самом низу файла /etc/apache2/apache2.conf

ServerName localhost

Меняем очередность файлов индекса, переставляем index.php в начало списка в файле /etc/apache2/mods-available/dir.conf.
sudo nano /etc/apache2/mods-available/dir.conf


  DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm 
 

===Цикл===

//Добавляем виртуальные хосты
sudo nano /etc/hosts

127.0.0.1 localhost вашсайт

//Копируем базовый конфиг /etc/apache2/sites-available/000-default.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/вашсайт.conf

//Правим /etc/apache2/sites-available/вашсайт.conf
sudo nano /etc/apache2/sites-available/вашсайт.conf

ServerName ВашСайт 
DocumentRoot /home/YourUserName/public_html/вашсайт 

//Включаем сайт в apache2
sudo a2ensite вашсайт

//Перезапускаем apache2
sudo service apache2 reload
===/Цикл===

Права на каталог ~/public_html
sudo adduser USERNAME www-data
sudo chown USERNAME:www-data -R ~/public_html
chmod -R 775 ~/public_html
Мы добавили себя в группу www-data (поскольку от пользователя www-data группы www-data работает Apache) Сделали группу www-data группой владельца корневой папки наших сайтов. Присвоили для этой папки права чтения и записи для владельца и его группы. Это нужно для того, чтобы пользователи YourUserName (от имени которого мы заливаем файлы на сервер) и пользователя www-data (от имени которого работает веб-сервер) имели одинаковые права.

При добавлении каждого сайта над его папкой нужно будет производить эту процедуру (кроме первой команды; только не ко всей public_html, а лишь к папке нового сайта). Также нужно это делать для новых файлов, требующих изменения со стороны сервера.

===частьЦикла===

sudo chown USERNAME:www-data -R ~/public_html/вашсайт
chmod -R 775 ~/public_html/вашсайт
===/частьЦикла===

!!!Чтобы получить доступ с другого компьютера, на удаленном компьютере прописываем в файл C:\Windows\System32\drivers\etc\hosts IP-adress-servera вашсайт

P.S: При привязке git, а вернее во время передачи данных, происходит запрос в каталог ~/.config , по умолчанию у него права root (хотя может быть я что то лишнее запустил в режиме sudo) решение:
Идем на сервер через ssh в папку в домашний директорий пользователя ~/
Смотрим права:
sudo ls -la
Меняем владельца если нужно:
sudo chown USERNAME:www-data -R ~/.config

Скрипт цикла создания виртуального хоста

Скрипт создает виртуальный хост/каталог/запись в файле hosts/конфигурационный файл, изменяет в конфигурационном файле параметр ServerName и DocumentRoot перезапускает apache.
Пример запуска sudo bash createhost.sh sitename username

#!/bin/bash
#sudo bash snc.sh site user
if [ -z $1 ] ; then
echo «Do not set your domain name.»
exit 1 ; fi
if [ -z $2 ] ; then
username='im'
echo «Do not set your user name.» ; fi

mkdir -p /home/$username/public_html/$1/public_html
echo "127.0.0.1 "$1 | sudo tee -a /etc/hosts

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/$1.tmp.conf

sed -e "s!\#ServerName www.example.com!ServerName ${1}!; s!DocumentRoot /var/www/html!DocumentRoot /home/${username}/public_html/${1}/public_html!" /etc/apache2/sites-available/$1.tmp.conf > /etc/apache2/sites-available/$1.conf
rm /etc/apache2/sites-available/$1.tmp.conf

a2ensite $1
chown $username:www-data -R /home/$username/public_html/$1
chmod -R 775 /home/$username/public_html/$1

Источник из 2014

Комментариев: 0

Удаленная Адресная книга Thunderbird, выбор gContactSync vs CardBook

Редакция автор: stain

gContactSync

Внедряется в стандартную адресную книгу.
Синхронизируется с аккаунтами Google
Ограниченный поиск только по основным полям

CardBook

Самостоятельная адресная книга
Синхронизируется с CardDAV/Google/Apple
Умеет искать по телефону
Поиск работает непосредственно в письма поле Кому, подставляя вместо найденного почтовый ящик.

Добавляем удаленную адресную книгу в CardBook

Кликаем на CardBook.

Кликаем во вкладке CardBook на кнопку Меню слева.

Выбираем Адресная книга / Добавить адресную книгу.

Заполняем данные по аккаунту.

Заключение

И первое и второе вполне рабочий вариант, но после CardBook, gContactSync не станешь использовать.

Я ранее пытался написать руководство по использованию gContactSync, оставлю на него ссылку.

Комментариев: 0

И снова перенос системного раздела Debian

Редакция автор: stain

Предыдущий пост был размыт, и как оказалось был ошибочен.
Так к примеру без chroot, и переинсталяции grub вы так и оставались на старом логическом томе, хотя создавалось ощущение что вы не на нем, но невооруженным взглядом в /etc/fstab можно было увидеть где вы на самом деле. Так что этот огромный косяк я попытался исправить в этом пошаговом руководстве. Итак поехали.

Источник

sudo mkdir /mnt/source && sudo mount /dev/sdX /mnt/source 

Получатель (логический том должен быть отформатирован, и быть)

sudo mkdir /mnt/dest && sudo mount /dev/sdY /mnt/dest 

Копирование

sudo cp -xpr /mnt/source/* /mnt/dest 

, где то видел что при копировании используют ключи -rfvp
-xpr oneFileSystem/preserve/recursive
-rfvp recursive/force/verbose/preserve

Изменение fstab на новом разделе

Заменяем в точке монтирования корня sdX на sdY

Подготавливаем Chroot

sudo mount -t proc none /mnt/dest/proc/
sudo mount -t sysfs sysfs /mnt/dest/sys/
sudo mount -o bind /dev/ /mnt/dest/dev/
sudo mount -o bind /run/ /mnt/dest/run/
sudo chroot /mnt/dest

update-grub && grub-install /dev/sda
exit 

Перезагружаемся

Проверяем что в нашей системе в fstab правильные данные.

Комментариев: 0

Анализ дискового пространства хостинга через ssh

Редакция автор: stain

Покажет информацию о текущем каталоге, в виде папок/файлов отсортированных по размеру занятого ими места на диске.

du -s * | sort -nr

Просто размер занимаемый содержимым текущей папки.

du -hs

Комментариев: 0

Docker-CE Шаблоны

Редакция автор: stain

Официальный способ установки, но на виртуалке не все так гладко как описано.

Установка докера.

Для Ubuntu 16.04 lts server

1. Удаляем старое.

sudo apt-get remove docker docker-engine docker.io

2. Устанавливаем для 14.04 allow Docker to use the aufs storage drivers. Для 16.04 не требуется.

sudo apt-get update && sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

2.1 Устанавливаем для allow apt to use a repository over HTTPS.

sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

3. Прописываем ключи к репозиторию.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && sudo apt-key fingerprint 0EBFCD88

4. Добавляем репозиторий напрямую в с помощью редактора/etc/apt/sources.list.

deb https://download.docker.com/linux/ubuntu xenial stable

5. Устанавливаем докер.

sudo apt-get update && sudo apt-get install docker-ce

Первый блин

Создаем каталог для контейнеров.
Создаем каталог для первого блина, допустим это UBUNTU16.
создаем файл Dockerfile

FROM ubuntu:16.04 #Указывает образ обычно сторонний на котором будет строиться вся ваша кухня. 
ADD можно добавить каталог
WORKDIR рабочий директорий, для выполнения комманд из RUN.
RUN тут можно что то установить или выполнить допустим sudo apt-get update && sudo apt-get install LAMP
CMD только единожды может быть в докерфайле, служит чтобы что то выполнить или просто вывести сообщение посредством echo.
ENV описывает переменные окружения и позволяет их модифицировать для контейнера например переменная path

после того как файл готов, заходим в дирректорию контейнера
и пробуем в консоли запустить создание контейнера
docker build -t меткаконтейнеравашегоприложения .
Пробуем запустить ваш контейнер временно (-rm) интерактивно(-it)
docker run -ti --rm -p 5000:8080 меткаконтейнеравашегоприложенияв данном случае вы попадете внутрь контейнера в командный интерпретатор как в случае с chroot и что бы вы там не поменяли изменится это только внутри контейнера например новые файлы появятся в контейнере и когда вы закончите работу с ним то по завершении работы контейнера они бы остались в каталоге контейнера(если бы не был использован ключ -rm ).
Изменения останутся только если выйти из контейнера через exit, и провести подобную операцию docker commit -m "What did you do to the image" -a "Author Name" container-id repository/new_image_name

Уничтожение контейнера

docker rm хешконтейнера
Где взять хеш контейнера docker ps -a, самая левая колонка.

Крадем золотое руно.

Идем на DockerHub
Или из консоли docker search что-то, но прочесть дополнительную информацию о контейнере проще будет через браузер
Ищем интересующий вас инструмент например этот
создаем каталог контейнера На самом деле если вам не нужны надстройки, просто docker pull чей-то-образ
создаем короткий Dockerfile
FROM greyltc/lamp
Создаем котейнер docker build -t меткаконтейнеравашегоприложения .

Запускаем контейнер docker run --name lamp -p 80:80 -p 443:443 -d greyltc/lamp
Накручиваем что надо поверх.

На закуску, образы хранятся не в каталогах контейнеров а все вместе имена у них в виде хешей.
В общем нужно еще указывать где будет лежать ваш контент.

Касательно команд тут все более менее актуально, но по инсталяции самого докера информация устарела.

Копипастим через SSH

Основной трабл консольного сервера на виртуальной машине. Невозможности копипаста
а потому будем ходить через Putty и для этого:
Добавляем еще один сетевой интерфейс в режиме "Виртуальный адаптер хоста"

sudo apt-get update && sudo apt-get install ssh
sudo nano /etc/network/interfaces

Добавляем в низ файла:
auto enp0s8
iface enp0s8 inet static
    address 192.168.56.10
    netmask 255.255.255.0

Сохраняем файл, перезагружаемся: sudo reboot

первая дефолтная сетка начинается с 192.168.56.XXX

Комментариев: 0

Как нуб жесткий диск спасал

Редакция автор: stain

Объект: диск SSHD имеет сразу 2 а то и 3 проблемы, при этом нагло пишет в смарте что он в хорошем состояниии.
1. Может не включиться, включиться плохо, или включиться в нормальный режим (из которого выпадает если обращаться к разделам через систему).
2. Отсюда крайне вероятно помер встроенный SSD на 8 гигов.
3. Нечитаемые сектора, которые не убираются, и не перемещаются (их немного но они мешают).

При возвращении из сна диск может включиться наличие его в списке устройств можно проверить (slax не умеет спать)
ls /dev/sd* |grep sd
sudo fdisk -l |grep sd.
Состояние жесткого диска можно проверить
hdparm /dev/sda
тут должен быть ваш диск эта команда может ничего не показать, показать что у диска проблемы с вводом выводом, или же просто 4 строки о том что он в рабочем режиме если последнее то можно попытаться поблочно скопировать данные, для того чтобы ими сразу можно было воспользоваться Копируем на другой носитель, убедитесь что указываете первым диск откуда а вторым диск куда будет заливаться поток блочных данных.

# ddrescue --force --direct --synchronous /dev/sdc /dev/sdd /root/ddrescue.log

Источники по работе с ddrescue 1 2

!!!По завершении переноса данных работаем с вторым диском с помощью testdisk можно проанализировать данные на диске и попытаться сохранить правильно разделы, выставить им тип, и прочие атрибуты и после сохранения и перезапуска жесткого диска, проверки утилитами на логические ошибки файловых систем разделов.

Ньюансы.
1. ddrescue не нашлась в установщике убунту, но зато я более детально познакомился с дистрибутивом SLAX, чтобы его установить на флешку, надо просто скачать и скинуть его папку slax на диск fat32(может и на другую но точно не ntfs), и запустить скрипт(для линукс систем или для windows) из каталога boot, скрипт сделает диск загрузочным.
1.2 Когда поблочно переносишь данные не в образ а сразу на другой диск, тот должен быть больше или такой же по размеру(В моем случае последние байты одного из системных разделов не влезли, жесткий диск приемник был чуть чуть меньше).
2. clonezilla не подходит когда диск отваливается.

Комментариев: 0