Архив метки: Настройка web сервера

Ручное обновление ssl сертификата Let’s encrypt

 =============================================
 =============================================
 What would you like to do?
 1: Attempt to reinstall this existing certificate
 2: Renew & replace the cert (limit ~5 per 7 days)
 Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
 ===============================> 2
 =============================================
 =============================================
 =============================================
 =============================================
 You have an existing certificate that contains a portion of the domains you
 requested (ref: /etc/letsencrypt/renewal/ego-media.ru.conf)
 It contains these names: ego-media.ru, egomedia.ru, www.ego-media.ru
 You requested these names for the new certificate: ego-media.ru,
 www.ego-media.ru, egomedia.ru, www.egomedia.ru.
 Do you want to expand and replace this existing certificate with the new
 certificate?
 (E)xpand/(C)ancel:
 ======================> E
 =============================================
 =============================================
 =============================================
 Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
 1: No redirect - Make no further changes to the webserver configuration.
 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
 new sites, or if you're confident your site works on HTTPS. You can undo this
 change by editing your web server's configuration.
 Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
 ==============> 1
 =============================================



2019-07-11T17:42:55
Настройка web сервера

Настройка резервного копирования Rsnapshot на UBUNTU 18.04 LTS

Rsnapshot — утилита для создания копий состояния файловых систем на базе rsync. Она упрощает создание периодических копий с локальной и удаленных машин по ssh. Она использует, по возможности, жесткие связи, что позволяет существенно уменьшить объем необходимого дискового пространства.




Устанавливаем rsnapshot:




sudo apt install rsnapshot




Настройка rsnapshot




Создаем директорию в которой будем хранить наши бекапы:




sudo mkdir /files_backup




Теперь можно перейти к настройке, собственно, rsnapshot:




sudo nano /etc/rsnapshot.conf







snapshot_root - директория,которую мы только что создали и в которую вы хотите сохранять "снимки".

interval xxx yy - ххх - название  интервала (например hourly, daily), yy - количество снимков для каждого. 




Например:




interval alpha 6
interval delta 7




Означает, что мы хотим хранить 6 ежечасных копий и 7 ежемесячных. Если уже доступно указанное количество копий, rsnapshot будет заменять старую более новой.




[alpha] - ежечасный интервал
[beta] - дневной интервал
[gamma] - недельный интервал
[delta] - месячный интервал




Помните, что в конфигурационном файле недопустимы пробелы — используйте только табы.




Пробный запуск




rsnapshot hourly




Второй параметр означает интервал, который мы задали в конфигурационном файле.
Команда может выполняется продолжительное время. После выполнения, смотрим, что она создала:




Rsnapshot создает свой файл крона по адресу:




/etc/cron.d/rsnapshot 




Мы же можем использовать его или дописать задание в основной файл:




sudo crontab -e




И внести в него наши задания:




0 */4         * * *           root    /usr/bin/rsnapshot alpha
30 3          * * *           root    /usr/bin/rsnapshot beta
0  3          * * 1           root    /usr/bin/rsnapshot gamma
30 2          1 * *           root    /usr/bin/rsnapshot delta




Так же вы можете протестировать правильность настройки конфигурационного файла командой:




sudo rsnapshot configtest 



2019-05-18T22:23:27
Настройка web сервера

Автоматический бекап баз данных MySQL на UBUNTU server 18.04 LTS

Для того, чтобы ежедневно (на ваше усмотрение) создавать резервные копии баз MySQL в отдельные файлы мы должны создать на сервере простенький скрипт, например, в корне раздела:




sudo nano /backup_mysql.sh 




После чего нам нужно вставить в него следующее содержимое:




### SETUP MYSQL LOGIN ###
MUSER='root'
MPASS='*******'
MHOST="127.0.0.1"

### Set to 1 if you need to see progress while dumping dbs ###
VERBOSE=0

### Set bins path ###
GZIP=/bin/gzip
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
RM=/bin/rm
MKDIR=/bin/mkdir
MYSQLADMIN=/usr/bin/mysqladmin
GREP=/bin/grep

### Setup dump directory ###
BAKRSNROOT=/backup_mysql

#####################################
### ----[ No Editing below ]------###
#####################################
### Default time format ###
TIME_FORMAT='%Y.%m.%d_%H:%M:%S%P'

### Make a backup ###
backup_mysql_rsnapshot(){
local DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
local db="";
[ ! -d $BAKRSNROOT ] && ${MKDIR} -p $BAKRSNROOT
${RM} -f $BAKRSNROOT/* >/dev/null 2>&1
[ $VERBOSE -eq 1 ] && echo "*** Dumping MySQL Database ***"
[ $VERBOSE -eq 1 ] && echo -n "Database> "
for db in $DBS
do
if [ $db = "information_schema" ]
then :
elif [ $db != "performance_schema" ]
then


local tTime=$(date +"${TIME_FORMAT}")
local FILE="${BAKRSNROOT}/${db}-${tTime}.sql.gz"
[ $VERBOSE -eq 1 ] && echo -n "$db.."
${MYSQLDUMP} -u ${MUSER} -h ${MHOST} -p${MPASS} $db | ${GZIP} -9 > $FILE

fi
done

[ $VERBOSE -eq 1 ] && echo ""
[ $VERBOSE -eq 1 ] && echo "*** Backup done [ files wrote to $BAKRSNROOT] ***"
}

### Die on demand with message ###
die(){
echo "$@"
exit 999
}

### Make sure bins exists.. else die
verify_bins(){
[ ! -x $GZIP ] && die "File $GZIP does not exists. Make sure correct path is set in $0."
[ ! -x $MYSQL ] && die "File $MYSQL does not exists. Make sure correct path is set in $0."
[ ! -x $MYSQLDUMP ] && die "File $MYSQLDUMP does not exists. Make sure correct path is set in $0."
[ ! -x $RM ] && die "File $RM does not exists. Make sure correct path is set in $0."
[ ! -x $MKDIR ] && die "File $MKDIR does not exists. Make sure correct path is set in $0."
[ ! -x $MYSQLADMIN ] && die "File $MYSQLADMIN does not exists. Make sure correct path is set in $0."
[ ! -x $GREP ] && die "File $GREP does not exists. Make sure correct path is set in $0."
}

### Make sure we can connect to server ... else die
verify_mysql_connection(){
$MYSQLADMIN  -u $MUSER -h $MHOST -p$MPASS ping | $GREP 'alive'>/dev/null
[ $? -eq 0 ] || die "Error: Cannot connect to MySQL Server. Make sure username and password are set correctly in $0"
}

### main ####
verify_bins
verify_mysql_connection
backup_mysql_rsnapshot




В этом содержимом нужно обязательно заменить два параметра:




MPASS='*****' - заменяем звездочки на ваш пароль root пользователя mysql
BAKRSNROOT=/backup_mysql - заменяем /backup_sql на вашу директорию для архивов mysql




Создаем указанную выше директорию для бекапов mysql:




sudo mkdir /backup_mysql




После чего можно для теста запустить скрипт из консоли:




sudo sh /backup_mysql.sh




После чего можно проверить, создались ли резервные копии:




sudo ls -l /backup_mysql 




В ответ на эту команду в консоли вы должны увидеть список созданных архивов бд вида:




DB_NAME-YYYY.MM.DD_HH_MM_SSpm.sql.gz
....
DB_NAME2-YYYY.MM.DD_HH_MM_SSpm.sql.gz 




где DB_NAME — имя базы данных




а YYYY.MM.DD_HH_MM_SSpm — время создания резервной копии




Автоматизируем создание бекапов созданием задания в кроне:




sudo crontab -e




Вставляем соответствующее задание, например:




0 3 * * *       sh      /backup_mysql.sh




В итоге мы получим ежедневное создание бекапов mysql в три часа ночи в папку /backup_mysql.




Правильным будет сделать ещё перенос файлов на внешние сервера и удаление слишком старых копий, но этот моменты мы разберем когда-нибудь потом =)



2019-05-18T12:07:45
Настройка web сервера

Подключаем Яндекс.Диск при помощи davfs2 & WEBDAV на UBUNTU 18.04 LTS сервере

Одним из способов выгрузки ежедневных (и не только) бекапов баз данных с серверов я использую смонтированный по webdav яндекс диск. Просто, надежно, и довольно быстро настраивается.




WebDAV (Web Distributed Authoring and Versioning) — это протокол для передачи данных и работы с ними, построенный поверх HTTP 1.1. Здесь следует заметить, что передача может быть как защищенной, так и незащищенной. В самом протоколе защищенность отсутствует, но она может быть добавлена через реализацию аутентификации на веб-сервере и шифрование посредством SSL, следовательно, в таком случае будет использоваться не HTTP, а HTTPS.

Изначально DAV разрабатывался для совместного создания и редактирования веб-страниц, но в процессе использования он нашел применение в качестве сетевой распределенной файловой системы, эффективной для работы в высоконагруженной среде и поддерживающей неустойчивое соединение. Таким образом, DAV подходит для управления файлами на веб-серверах, иными словами, реализации облачных хранилищ информации, где и был применен. С его помощью можно выполнять основные операции над файлами, содержащимися на сервере, проводить расширенные операции, как то: блокировка, получение метаданных, контроль версий и другие. Этот протокол стал заменой для старого доброго FTP, чье время подошло к концу.




Не стоит забывать, что при удалении по WebDAV файлы не попадают в корзину яндекс диска, а сразу удаляются с серверов Яндекса. Если вы удалили файлы по WebDAV, восстановить их уже не получится!




Подклюаем Яндекс.Диск как файловую систему




Установим пакет davfs2:




sudo apt install -y davfs2




После чего у нас выскакивает вопрос вида




Должны ли непривилегированные пользователи иметь возможность монтировать ресурсы WebDAV?




Смело выбираем NO




Монтируем WebDAV с помощью davfs2




Создадим точку монтирования:




 mkdir /mnt/yandex.disk 




Примонтируем наш диск, введя логин и пароль от Яндекса:




mount -t davfs https://webdav.yandex.ru /mnt/yandex.disk/




Вводим логин и пароль. После этого переходим в папку яндекс диска и проверяем, что он работает:




cd /mnt/yandex.disk/




Проверяем список файлов и папок:




ls -l




Проверить можно ещё одним способом:




Если видим наши папки и файлы из диска, то все подключено правильно.




df -h /mnt/yandex.disk/




Вывод должен быть примерно следующим:




Filesystem                Size  Used Avail Use% Mounted on
https://webdav.yandex.ru   84G   39G   46G  47% /mnt/yandex.disk




Автоматическое монтирования Яндекс.Диска




Для начала нам нужно добавить возможность авторизации:




sudo nano /etc/davfs2/secrets 




В конц файла вставляем следующую строку:




https://webdav.yandex.ru YOUR_username YOUR_password 




Где:




YOUR_username - ваш логин от яндекса 
YOUR_password -ваш пароль от яндекса




Сохраняем.




Открываем fstab:




sudo nano /etc/fstab 




И вставляем в конец файла следующее содержимое




https://webdav.yandex.ru   /mnt/yandex.disk   davfs   rw,users,_netdev    0   0




Перезагружаем машину командой reboot и снова проверяем, доступен ли наш раздел после перезагрузки.




df -h /mnt/yandex.disk/ 




Вывод должен быть примерно следующим:




Filesystem                Size  Used Avail Use% Mounted on
https://webdav.yandex.ru   84G   39G   46G  47% /mnt/yandex.disk 



2019-05-18T02:50:53
Настройка web сервера

Как проверить работу HTTP/2 & ALPN

https://tools.keycdn.com/http2-test



2019-05-15T08:03:47
Настройка web сервера

Как проверить работу HTTP/2 Push Test

https://http2-push.io/






2019-05-15T08:01:23
Настройка web сервера