Yandex.Cloud හි 1C-Bitrix හි අඩවියක් සමඟින් වැඩිවන VDS උපස්ථය

මට වෙබ් අඩවිය 2C-Bitrix වෙත උපස්ථ කිරීම අවශ්‍ය විය: අඩවි කළමනාකරණය දිනකට 1 වතාවක් (ගොනු සහ mysql දත්ත සමුදාය) සහ දින 90 ක වෙනස්කම් ඉතිහාසයක් ගබඩා කරන්න.

වෙබ් අඩවිය "7C-Bitrix: Web Environment" ස්ථාපනය කර ඇති CentOS 1 ධාවනය වන VDS මත පිහිටා ඇත. අතිරේකව, OS සැකසුම් වල උපස්ථ පිටපතක් සාදන්න.

අවශ්‍යතා:

  • සංඛ්යාතය - දිනකට 2 වතාවක්;
  • පසුගිය දින 90 සඳහා පිටපත් තබා ගන්න;
  • අවශ්ය නම්, නිශ්චිත දිනයක් සඳහා තනි ගොනු ලබා ගැනීමේ හැකියාව;
  • උපස්ථය VDS හැර වෙනත් දත්ත මධ්‍යස්ථානයක ගබඩා කළ යුතුය;
  • ඕනෑම තැනක සිට උපස්ථයට ප්‍රවේශ වීමේ හැකියාව (වෙනත් සේවාදායකයක්, දේශීය පරිගණකයක්, ආදිය).

වැදගත් කරුණක් වූයේ අතිරේක ඉඩ සහ පද්ධති සම්පත් අවම පරිභෝජනයෙන් ඉක්මනින් උපස්ථ නිර්මාණය කිරීමේ හැකියාවයි.

මෙය සමස්ත පද්ධතියම ඉක්මන් ප්‍රතිසාධනයක් සඳහා වූ ස්නැප්ෂොට් එකක් ගැන නොව, ගොනු සහ දත්ත සමුදාය සහ වෙනස්කම් වල ඉතිහාසය ගැන ය.

මූලික දත්ත:

  • XEN අථත්‍යකරණය මත VDS;
  • OS CentOS 7;
  • 1C-Bitrix: වෙබ් පරිසරය;
  • "1C-Bitrix: අඩවි කළමනාකරණය" මත පදනම් වූ අඩවිය, සම්මත අනුවාදය;
  • ගොනු විශාලත්වය 50 GB වන අතර එය වර්ධනය වනු ඇත;
  • දත්ත සමුදායේ ප්‍රමාණය 3 GB වන අතර එය වර්ධනය වනු ඇත.

සම්මත උපස්ථය 1C-Bitrix වෙත ගොඩනගා ඇත - වහාම බැහැර කර ඇත. එය සුදුසු වන්නේ කුඩා අඩවි සඳහා පමණි, මන්ද:

  • සෑම අවස්ථාවකදීම වෙබ් අඩවියේ සම්පූර්ණ පිටපතක් සාදන අතර, එක් එක් පිටපත මම ගොනු ගන්නා තරමට ඉඩක් ගනී, මගේ නඩුවේ එය 50 GB වේ.
  • උපස්ථ කිරීම PHP භාවිතයෙන් සිදු කෙරේ, එය එවැනි ගොනු පරිමාවකින් කළ නොහැකි ය, එය සේවාදායකය අධික ලෙස පටවන අතර කිසි විටෙකත් අවසන් නොවනු ඇත.
  • ඇත්ත වශයෙන්ම, සම්පූර්ණ පිටපතක් ගබඩා කිරීමේදී දින 90 ක් ගැන කතා කළ නොහැක.

සත්කාරක සමාගම ඉදිරිපත් කරන විසඳුම වන්නේ VDS ලෙස එකම දත්ත මධ්‍යස්ථානයේ, නමුත් වෙනත් සේවාදායකයක පිහිටා ඇති උපස්ථ තැටියකි. ඔබට FTP හරහා තැටිය සමඟ වැඩ කළ හැකි අතර ඔබේම ස්ක්‍රිප්ට් භාවිතා කළ හැකිය, නැතහොත් ISPManager VDS මත ස්ථාපනය කර ඇත්නම්, පසුව එහි උපස්ථ මොඩියුලය හරහා. එකම දත්ත මධ්‍යස්ථානය භාවිතා කිරීම නිසා මෙම විකල්පය සුදුසු නොවේ.

ඉහත සියල්ලෙන්, මට හොඳම තේරීම Yandex.Cloud (වස්තු ගබඩාව) හෝ Amazon S3 (Amazon සරල ගබඩා සේවාව) හි මගේම තත්වයට අනුව වර්ධක උපස්ථයකි.

මෙය අවශ්ය වන්නේ:

  • VDS වෙත root ප්රවේශය;
  • ස්ථාපිත ද්විත්ව උපයෝගීතාව;
  • Yandex.Cloud හි ගිණුම.

වර්ධක උපස්ථය - අවසාන උපස්ථයේ සිට වෙනස් වූ දත්ත පමණක් සංරක්ෂණය කරන ක්‍රමයකි.

ද්විත්වභාවය - rsync ඇල්ගොරිතම භාවිතා කරන සහ Amazon S3 සමඟ වැඩ කළ හැකි උපස්ථ උපයෝගිතාවකි.

Yandex.Cloud vs Amazon S3

මට මෙම නඩුවේ Yandex.Cloud සහ Amazon S3 අතර වෙනසක් නැත. Yandex Amazon S3 API හි ප්‍රධාන කොටස සඳහා සහය දක්වයි, එබැවින් ඔබට S3 සමඟ වැඩ කිරීමට ඇති විසඳුම් භාවිතා කර එය සමඟ වැඩ කළ හැකිය. මගේ නඩුවේදී, මෙය ද්විත්ව උපයෝගීතාවයයි.

Yandex හි ප්‍රධාන වාසිය රුබල් වලින් ගෙවීම විය හැකිය, දත්ත විශාල ප්‍රමාණයක් තිබේ නම්, පාඨමාලාවට සබැඳියක් නොමැත. වේගය අනුව, ඇමේසන්ගේ යුරෝපීය දත්ත මධ්‍යස්ථාන Yandex හි රුසියානු ඒවාට අනුරූපව ක්‍රියා කරයි, උදාහරණයක් ලෙස, ඔබට Frankfurt භාවිතා කළ හැකිය. මම මීට පෙර සමාන කාර්යයන් සඳහා Amazon S3 භාවිතා කළෙමි, දැන් මම Yandex උත්සාහ කිරීමට තීරණය කළෙමි.

Yandex.Cloud පිහිටුවීම

1. ඔබට Yandex.Cloud හි බිල්පත් ගිණුමක් සෑදිය යුතුය. මෙය සිදු කිරීම සඳහා, ඔබේ Yandex ගිණුම හරහා Yandex.Cloud වෙත පිවිසීමට හෝ නව එකක් නිර්මාණය කිරීමට අවශ්ය වේ.

2. වලාකුළු සාදන්න.
Yandex.Cloud හි 1C-Bitrix හි අඩවියක් සමඟින් වැඩිවන VDS උපස්ථය

3. "වලාකුළු" තුළ "නාමාවලිය" සාදන්න.
Yandex.Cloud හි 1C-Bitrix හි අඩවියක් සමඟින් වැඩිවන VDS උපස්ථය

4. "නාමාවලිය" සඳහා "සේවා ගිණුමක්" සාදන්න.
Yandex.Cloud හි 1C-Bitrix හි අඩවියක් සමඟින් වැඩිවන VDS උපස්ථය

5. "සේවා ගිණුම" සඳහා යතුරු සාදන්න.
Yandex.Cloud හි 1C-Bitrix හි අඩවියක් සමඟින් වැඩිවන VDS උපස්ථය

6. යතුරු තබා ගන්න, අනාගතයේදී ඔබට ඒවා අවශ්ය වනු ඇත.
Yandex.Cloud හි 1C-Bitrix හි අඩවියක් සමඟින් වැඩිවන VDS උපස්ථය

7. "නාමාවලිය" සඳහා "බාල්දියක්" සාදන්න, ගොනු එයට වැටෙනු ඇත.
Yandex.Cloud හි 1C-Bitrix හි අඩවියක් සමඟින් වැඩිවන VDS උපස්ථය

8. සීමාවක් නියම කර "සීතල ගබඩාව" තෝරා ගැනීමට මම නිර්දේශ කරමි.
Yandex.Cloud හි 1C-Bitrix හි අඩවියක් සමඟින් වැඩිවන VDS උපස්ථය

සේවාදායකයේ උපලේඛනගත උපස්ථ සැකසීම

මෙම මාර්ගෝපදේශය මූලික පරිපාලන කුසලතා උපකල්පනය කරයි.

1. VDS මත duplicity utility ස්ථාපනය කරන්න

yum install duplicity

2. mysql dumps සඳහා ෆෝල්ඩරයක් සාදන්න, මගේ නඩුවේ එය VDS මූලයේ /backup_db වේ.

3. bash scripts /backup_scripts සඳහා ෆෝල්ඩරයක් සාදා /backup_scripts/backup.sh උපස්ථ කරන පළමු පිටපත සාදන්න

ස්ක්‍රිප්ට් අන්තර්ගතය:

#!`which bash`


# /backup_scripts/backup.sh

# Это условие проверяет не идёт ли в данный момент процесс резервного копирования, если идёт, то на email отправляется сообщение об ошибке (этот блок можно не использовать)
if [ -f /home/backup_check.mark ];
then

DATE_TIME=`date +"%d.%m.%Y %T"`;

/usr/sbin/sendmail -t <<EOF
From:backup@$HOSTNAME
To:<Ваш EMAIL>
Subject:Error backup to YANDEX.CLOUD
Content-Type:text/plain; charset=utf-8
Error backup to YANDEX.CLOUD

$DATE_TIME
EOF

else

# Основной блок отвечающий за резервное копирование
# Если нет ощибки ставим метку и запускаем backup

echo '' > /home/backup_check.mark;


# Удаляем файлы с дампами базы оставшиеся от предыдущего backup

/bin/rm -f /backup_db/*


# Делаем дамп всех mysql баз, предполагается что доступ добавлен в файле /root/.my.cnf

DATETIME=`date +%Y-%m-%d_%H-%M-%S`;

`which mysqldump` --quote-names --all-databases | `which gzip` > /backup_db/DB_$DATETIME.sql.gz


# Добавляем данные для отправки в Яндекс.

export PASSPHRASE=<Придумайте пароль для шифрования архива>
export AWS_ACCESS_KEY_ID=<Идентификатор ключа полученный у Яндекса>
export AWS_SECRET_ACCESS_KEY=<Секретный ключ полученный у Яндекса>


# Запускаем duplicity для резервирования необходимых папок на сервере.
# Данная команда будет создавать полный backup раз в месяц и до следующего месяца добавлять инкрементальные к нему
# -- exclude это папки, которые нужно исключить, я исключаю все папки с кешем битрикса
# --include папки которые нужно резервировать в моём случае это:
# - /backup_db
# - /home
# - /etc
# s3://storage.yandexcloud.net/backup , backup это имя созданного выше бакета

# Техническая особенность и значения некоторых параметров:
# Две строки "--exclude='**'" и "/" нужны, чтобы можно было выше оперировать --include и --exclude для разных папок. Эти две строчки сначала добавляют в бэкап весь сервер "/", потом исключают его "--exclude='**'"
# --full-if-older-than='1M' - создавать полную копию каждый месяц
# --volsize='512' - максимальный размер каждого из файлов в бэкапе в мегабайтах
# --log-file='/var/log/duplicity.log' - куда писать лог файл

`which duplicity` 
    --s3-use-ia --s3-european-buckets 
    --s3-use-new-style 
    --s3-use-multiprocessing 
    --s3-multipart-chunk-size='128' 
    --volsize='512' 
    --no-print-statistics 
    --verbosity=0 
    --full-if-older-than='1M' 
    --log-file='/var/log/duplicity.log' 
    --exclude='**/www/bitrix/backup/**' 
    --exclude='**/www/bitrix/cache/**' 
    --exclude='**/www/bitrix/cache_image/**' 
    --exclude='**/www/bitrix/managed_cache/**' 
    --exclude='**/www/bitrix/managed_flags/**' 
    --exclude='**/www/bitrix/stack_cache/**' 
    --exclude='**/www/bitrix/html_pages/*/**' 
    --exclude='**/www/bitrix/tmp/**' 
    --exclude='**/www/upload/tmp/**' 
    --exclude='**/www/upload/resize_cache/**' 
    --include='/backup_db' 
    --include='/home' 
    --include='/etc' 
    --exclude='**' 
    / 
    s3://storage.yandexcloud.net/backup



# Данная команда нужна для чистки.
# Она оставляет 3 последних полных backup и ассоциированных с ними инкрементальных backup.
# Т.о. у меня остаются backup за 3 месяца, т.к. первая команда каждый месяц делает новый полный backup

`which duplicity` remove-all-but-n-full 3 --s3-use-ia --s3-european-buckets --s3-use-new-style --verbosity=0 --force s3://storage.yandexcloud.net/backup



unset PASSPHRASE
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY

# Удаляем метку об идущем backup

/bin/rm -f /home/backup_check.mark;

fi

4. පළමු වරට ස්ක්‍රිප්ට් ධාවනය කර ප්‍රතිඵලය පරීක්ෂා කරන්න, ගොනු බාල්දියේ දිස්විය යුතුය.

`which bash` /backup_scripts/backup.sh

Yandex.Cloud හි 1C-Bitrix හි අඩවියක් සමඟින් වැඩිවන VDS උපස්ථය

5. root පරිශීලකයාට දිනකට 2 වතාවක් හෝ ඔබට අවශ්‍ය පරිදි ක්‍රෝන් කිරීමට ස්ක්‍රිප්ට් එකක් එක් කරන්න.

10 4,16 * * * `which bash` /backup_scripts/backup.sh

Yandex.Cloud වෙතින් දත්ත ප්රතිසාධනය

1. ප්‍රතිසාධන ෆෝල්ඩරයක් සාදන්න /backup_restore

2. bash restore script /backup_scripts/restore.sh සාදන්න

නිශ්චිත ගොනුවක් ප්‍රතිසාධනය කිරීමේ වඩාත්ම ඉල්ලූ උදාහරණය මම ලබා දෙමි:

#!`which bash`

export PASSPHRASE=<Пароль для шифрования архива используемый при бэкапе>
export AWS_ACCESS_KEY_ID=<Идентификатор ключа полученный у Яндекса>
export AWS_SECRET_ACCESS_KEY=<Секретный ключ полученный у Яндекса>

# 3 примера, раскомментировать нужный

# Получить статус backup
#`which duplicity` collection-status s3://storage.yandexcloud.net/backup

# Восстановить index.php из корня сайта
#`which duplicity` --file-to-restore='home/bitrix/www/index.php' s3://storage.yandexcloud.net/backup /backup_restore/index.php

# Восстановить index.php из корня сайта 3х дневной давности
#`which duplicity` --time='3D' --file-to-restore='home/bitrix/www/index.php' s3://storage.yandexcloud.net/backup /backup_restore/index.php

unset PASSPHRASE
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY

3. ස්ක්‍රිප්ට් එක ධාවනය කර ප්‍රතිඵලය එනතෙක් රැඳී සිටින්න.

`which bash` /backup_scripts/backup.sh

/backup_restore/ ෆෝල්ඩරය තුළ ඔබට කලින් උපස්ථයට ඇතුළත් කර ඇති index.php ගොනුව සොයාගත හැකිය.

ඔබේ අවශ්‍යතාවයට සරිලන පරිදි ඔබට වඩාත් සියුම් වෙනස්කම් කළ හැකිය.

අඩු ද්විත්ව

ද්විත්වයට එක් අඩුපාඩුවක් ඇත - නාලිකා භාවිත සීමාවක් සැකසීමට ක්‍රමයක් නොමැත. සාමාන්‍ය නාලිකාවක් සමඟ, මෙය ගැටළුවක් ඇති නොකරයි, නමුත් DDoS-ආරක්ෂිත නාලිකාවක් සමඟ දිනකට බිල්පත් වේගයක් සමඟ, මම මෙගාබිට් 1-2 ක සීමාවක් සැකසීමට කැමතියි.

අවසාන වශයෙන්

Yandex.Cloud හෝ Amazon S3 හි උපස්ථ කිරීම වෙනත් ඕනෑම සේවාදායකයකින් හෝ දේශීය පරිගණකයකින් ප්‍රවේශ විය හැකි වෙබ් අඩවියේ සහ OS සිටුවම්වල ස්වාධීන පිටපතක් සපයයි. ඒ අතරම, මෙම පිටපත සත්කාරක පාලක පැනලයේ හෝ අමතර ආරක්ෂාවක් සපයන Bitrix පරිපාලක පැනලයේ නොපෙනේ.

වඩාත්ම අවාසනාවන්ත ප්රතිඵලය තුළ, ඔබට නව සේවාදායකයක් ගොඩනඟා ඕනෑම දිනයක් සඳහා වෙබ් අඩවිය යෙදවිය හැකිය. වඩාත්ම ඉල්ලූ ක්‍රියාකාරිත්වය වනුයේ නිශ්චිත දිනයක් සඳහා ගොනුවට ප්‍රවේශ වීමේ හැකියාවයි.

1C-Bitrix පමණක් නොව ඕනෑම එන්ජිමක ඕනෑම VDS හෝ Dedicated servers සහ sites සමඟ ඔබට මෙම තාක්ෂණය භාවිතා කළ හැක. මෙහෙයුම් පද්ධතිය Ubuntu හෝ Debian වැනි CentOS හැර වෙනත් විය හැක.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න