Як прокачати скіл веб-розробника за місяць

Історія оптимізації провінційного інтернет-магазину з профітом ))

Вихідні дані

вважати себе просунутим сільським ІТ-шником - dev-ops & full stack в одному флаконі ))

Крок 1

погодитися оптимізувати інтернет-магазин знайомим знайомих: їм "зробили новий сайт" (старий пав від хакерів, але це не точно), переходів з Гуглпошуку обмаль, бо гуглові посилання ведуть в нікуди (на сайті змінилися адреси сторінок

Тю, раз плюнуть: оптимізуємо сторінки і через півроку будем в топі ))..
Маємо час і натхнення, плюс це крутий челенж, який дозволить:
- прокачати seo-скіл
- познайомитися з внутрішньою кухнею e-commerce
- покрутить налаштовану і працюючу CMS живого інтернет-магазину
..
- Профіт!!! ;)

Крок 2

отримати доступ в адмінку магазина
зрозуміти, що версія CMS магазину родом з 2012 року (упс.. а як же "новий" сайт? челенж під загрозою..)
розгуглити функціонал і бізнес-логіку даної CMS (ocStore - русифікована версія опенсорсного openCart-a)
кинутись виправляти очевидні граматичні і SEO- помилки в категоріях/товарах.. 
отримати замість адмінки пусту сторінку..
повідомити власника про баг і дізнатися, що адмін ось-ось вийде на зв'язок..

Крок 3

отримати доступ до акаунту хостинга магазина
зрозуміти, що наданий адміном акаунт хостера має віддалене відношення до магазину (колись тут жила vps-ка і була спроба налаштувати DNS для домена), дані для FTP-доступу також не працюють..
нааудитити, що домен зареєстрований у іншого хостера, а сам сайт розміщений в сусідньому від нашого акаунті адміна..
зрозуміти, що адмін давно вже не адмін для всіх, крім власника магазину..
отримати фідбек ексадміна та діючі доступи до файлів та бази даних..
офігіти зі своїм скромним сільським інтернет-доступом від 300МБ логу
локалізувати і виправити проблему з пустою адмінкою (хоть логи CMS більш-менш вміє писати і проти лома.. доступ до бази даних рулить)..
отримати від співробітників застарілий список проблем на які забив попередній адмін..
зануритися в логіку коду CMS (MVC-L, але CMF ModX зручніша), сторонніх розширень (задіяних і просто так) і т.п.
дізнатися, що пропав доступ до корпоративного поштового акаунту (зареєстрований ще на ексексадміна), що ще є SMS-оповіщення клієнтів магазину через SMS-шлюз (так, доступ лише у екса;))..
сповістити власника, що повною картиною функціонування його бізнесу володіє лише попередній адмін..

Крок 4

зрозуміти, що без переносу магазина на підконтрольний хостинг і зміни паролів всіх облікових записів продовжувати немає змісту
отримати добро власника (ризиковий товарищ)))
отримати доступ до хостера домена (так, домен і магазин хостяться в різних хостерів;) )
дізнатися, що DNS для домена у третього хостера (а чому б і ні?)))

видихнути, проаналізувати ситуацію )
змінити NS на DNS першого хостера хостингу у якого зрозумілий інтерфейс і короткий час застосування змін..
паралельно запросити "мильного" хостера відновлення доступу до корпоративного поштового акаунту, поклявшись своїм DNS-ом, що є власником..
замовити віртуальний хостинг, щоб перевірити свої сили в переносі "нєвєдомой звєрушкі"..

Крок 5

не ризикнути створити сайт з іменем домену: "такий домен вже обслуговується у нас.. для підтвердження ваших прав - зробіть запис в DNS.. старий сайт перестане працювати". Упс, права на помилку немає - дорога в один кінець..

видихнути, ще раз проаналізувати ситуацію. пофіг, пляшем ;)..
створити сайт зі схожим, але неіснуючим доменом (/etc/hosts на компі рулить), створити базу даних, перенести дані зі старого сайту (~5ГБ. Облом. Хостер самостійно, але без гарантії, переносить сайти до 1ГБ. Ексадмін, наче, намагався це зробити)..
змінити конфіг-файли CMS під новий хостинг/базу (гугл все про все знає і розповідає допитливим)))
почати тестувати роботу сайту і дізнатися, що CMS без налаштування SSL не взлітає (точніше, адмінка не працює), а в твого хостера специфічні налаштування для цього (гугл так каже..) і взагалі отримати сертифікат на неіснуючий домен важко :).. але техпідтримка хостера підказала можливість створити самопідписний сертифікат (який наче і є, але гордий браузер його не признає..) і..
дедуктивним методом з застосуванням гугління і танцями з бубном таки побачити вітрину магазину і.. пусту адмінку..
почитати логи, дізнатися, що mysql загинається від запитів з JOIN-ами (але ж на хостингу ексадміна все працює?!)..
багато гуглити, доставати техпідтримку, бубнити і.. випадково, переглядаючи файли з кодом, знайти підказку і автоматично отримати левелап по mysql (дорости до розуміння index-ів!!!)..
порадіти швидкості завантаження сайту і адмінки
видихнути..

Крок 6

пам'ятати, що маєш лише одну спробу перенести магазин
протестувати функціонал магазину, а саме процес вибору товару та оформлення заявки
отримати листи та SMS, порадіти, але.. знайти в рахунку купу лівих товарів
зрозуміти, що всі нові замовлення попадають в нульовий ордер
знайти трабл (попередній трабл з ключами до таблиць БД голосно про це натякав))) - проблема зі значенням autoincrement для таблиці бази даних
зрозуміти, що проблема в глючному переносі бази даних через хостерський phpmyadmin, який, як партизан, мовчав про проблеми під час імпортування даних в базу через їх завеликий для веб-інтерфейсу розмір..
побубнити і таки знайти спосіб впливати на ключі до таблиць бази (перенос бази по частинам)
переконатися в готовності сайту обслуговувати користувачів..

Крок 7

підготувати алгоритм переносу на папері (під час переносу вільна пам'ять не завадить;) )
переперевірити алгоритм
зробити всі підготовчі роботи для мінімізації простою магазину: відредагувати конфіги під реальний домен, синхронізувати файли, які змінилися з часу першого переносу (фото товарів)
в кінці робочого дня включити на сайті режим обслуговування, щоб не з'явилися-загубилися нові замовлення
зробити дамп таблиць бази даних, які могли змінитися за день
імпортувати дамп в базу нового сайту
переперевірити індекси, інкрементні значення ;)

тремтячими руками запросити у хостера створення сайту для реального домену
внести зміни в DNS згідно інструкції хостера
дочекатися застосування налаштувань DNS
почати панікувати, бо хостер все ще не дає створити сайт
дочекатися можливості створити сайт (старий в цей час став недоступний (і ftp також), залишилася лише база)
перейменувати директорію під реальний домен (конфіги вже були підготовлені під це)
налаштувати веб-сервер під новий домен
знову награтися з SSL і замовленням сертифікату від Lets Encrypt (в DNS, виявляється, необхідний А-запис для www)..
дочекатися застосування сертифікату
відкрити сайт в браузері і побачити відсутність частини зображень
запанікувати, загуглити, почистити всі три кеші CMS
ще кілька разів очистити кеші доки всі зображення не прогрузилися
протестувати оформлення замовлення
розслабитися..

Профіт

- прогріто ІТ-доріжки мозку незвичними ситуаціями
- проапгрейджені скіли веб-аудиту
- отримані інсайди про внутрішню кухню інтернет-магазину:
-- як налаштовано та працює CMS і порядок роботи з обслуговування магазину, клієнтів
-- які необхідні розширення
-- де взяти безкоштовну пошту на домені
-- де отримати SMS-інформування
-- як відвантажувати товари на маркетплейс Розетки (в теорії. розглядали можливість співпрацювати, але не на часі - потрібно свій сайт доробить)
-- як підключати еквайринг від Приват/Моно (хотілося б, але ні через відсутність цих елементів на сайті)
- додано до арсеналу опенсорсну CMS-ку для створення магазинів
- прокачано скіл використання хостерів
- прокачано знання в оптимізації баз даних
- зроблено все це в найкоротші терміни і найбільш ефективним способом, інвестувавши лише свій час і бажання!