Як брати термінові замовлення на фріланс-біржі

Термінові замовлення на фріланс-біржах бувають досить часто. В заголовках ще пишуть слово ТЕРМІНОВО капслоком, а в описі "тут роботи максимум на годину". Зазвичай, мова йде про помилки на сервері, падіння сайту та інше непередбачене жахіття. Але трапляється, що в людей горить крайній термін. Доводиться шукати виконавців в останній момент за подвійну ціну. В цей момент з'являєтеся ви, весь такий в білому й з питанням, а в чому тут річ.

Припустимо, що ви пообіцяли замовнику швидко зробити декілька правок інтернет-магазину. Часу обмаль, тому замовник просить не морочитися й тестувати всі зміни прямо на робочому сайті. Дуже приваблива пропозиція, вона здається такою логічною та природною в цій ситуації. Ніколи так не робить. Заспокойтесь, глибоко вдихніть та скопіюйте собі потрібні файли або створіть дочірню тему. Працювати й тестувати правки ви будете на своєму комп'ютері, а не на робочому сайті замовника. Це навіть не правило, а швидше за все принцип або якась норма, відхилення від якої несе тільки тлін і розчарування.

Тепер згадаємо про головне - про час. Скільки треба хвилин для будування магазину в локальному робочому середовищу? Чесно кажучи, не так вже й багато, за умови, що вже налаштований веб сервер з базою даних і встановлені потрібні php-модулі. Та якщо ні, що робити? Як не витрачати час на налаштування, а докласти зусиль на розв'язання проблеми?

Вигадано багато універсальних пристосувань та інструментів для розгортання робочого середовища. Перші обирають Docker, другі Vagrant, треті встановлюють залежності типовим способом на окремому комп'ютері. Проте, нам важлива швидкість початку роботи над завданням. Потрібна така собі чарівна коробочка, що нагадує капелюха фокусника, щоб без зайвих заклинань діставати звідти всякі необхідні в розробці смаколики. Раз смаколик, два смаколики, три смаколики й так далі. Коли в мене потреба швидко дістати смаколика... тьху, коли треба швидко що-небудь затестити або запустити, то я обираю Scotchbox.

Що всередині Scotchbox

Scotchbox - це спеціальний vagrant box з Ubuntu та вже налаштованим LAMP стеком. У цій скриньці лежать усілякі інструменти, щоб задовольнити потреби веб-розробника:

  • PHP 5.x або 7.x
  • Apache
  • MySQL
  • MongoDB
  • Ruby
  • Composer
  • NPM (Bower, Gulp, Yeoman, Browser-Sync)
  • Mailcatcher
  • Laravel и WordPress
  • Vim
  • Git
  • ... та багато чого ще

Зазвичай у фрілансера багато проєктів у роботі. З часом нагромадження файлів і баз даних стає проблемою, якщо це все не систематизувати. Технології віртуалізації створюють окреме середовище для розробки кожного з проєктів. Файли й бази даних у такому разі не перетнуться й не стануть конфліктувати одне з одним. Vagrant дозволяє перемикатися між проєктами за лічені секунди за допомогою команд vagrant suspend та vagrant up.

Створити нове середовище розробки дуже легко. Потрібно завантажити собі git репозиторій Scotchbox і запустити Vagrant:

git clone https://github.com/scotch-io/scotch-box my-project
cd my-project
vagrant up

Тепер каталог public, який знаходиться всередині my-project, доступний за адресою http://192.168.33.10 в браузері. Складайте туди файли проєкту та починайте працювати.

Ніяких танців з бубном

  • Бажаєте запустити середовище розробки з PHP 5 замість PHP 7, але не хочете копирсатися у налаштуваннях й тримати обидві версії поруч? Візьміть та запустіть попередню версію Scotchbox, в якій PHP 5 працює як бджілка. Версія 2.5 прописується в Vagrantfile:
config.vm.box_version = "2.5"
  • Чи може треба швидко запустити стару версію інтернет-магазину Prestashop? Скажімо, нас цікавить Prestashop ver. 1.6.1.15. Створимо поруч із Vagrantfile простісінький скрипт bootstrap.sh з таким вмістом:
#!/usr/bin/env bash

timezone=Europe/Chisinau  # Change it
version=1.6.1.15  # Set version

mkdir /var/www/public/tmp
cd /var/www/public/tmp
wget --progress=bar:force https://download.prestashop.com/download/old/prestashop_$version.zip
echo "Download Prestashop successfully!"

unzip -o prestashop_$version.zip -d /var/www/public > /dev/null
cd /var/www/public && rm -rf tmp *.html *.php
rsync -r prestashop/ .
echo "Unzip Prestashop successfully!"

mv admin adminprestashop
echo "Admin panel is available at http://192.168.33.10/adminprestashop"

echo "Install Prestashop"
php install/index_cli.php --timezone=$timezone --domain=192.168.33.10 --db_name=scotchbox --db_user=root --db_password=root --email=admin@admin.admin --password=password  --newsletter=0
echo "Prestashop $version installed"

echo "Remove installation folder and zip"
rm -rf install prestashop/
echo "Done"

echo "Now open http://192.168.33.10 or http://192.168.33.10/adminprestashop"
echo "Your login - admin@admin.admin and password - password"

Додамо до Vagrantfile два рядки - шлях до нашого скрипту й номер версії Scotchbox з PHP 5 на борту (тому що змусити Prestashop 1.6 працювати з PHP 7 непросте завдання, а нам потрібно розгорнути середовище розробки дуже швидко й без танців із бубном):

config.vm.provision :shell, path: "bootstrap.sh"
config.vm.box_version = "2.5"
  • Знадобилося запустити фреймворк Laravel? Виконайте команди по черзі, а після додайте .vagrant до файлу .gitignore:
git clone https://github.com/scotch-io/scotch-box laravel-project
cd laravel-project
vagrant up
vagrant ssh
cd /var/www
laravel new project # Patience, let it download and do its thing...
rm -rf README.md .gitignore public/ # Removing conflicting files
mv project/* project/.[^.]* . # Put Laravel files in right spot
rm -rf project # All done
  • Як швидко імпортувати дамп бази даних? Покладіть ваш dump.sql до каталогу зі Scotchbox та додайте до Vagrantfile рядки:
config.vm.provision "shell", inline: <<-SHELL
    mysql -u root -proot scotchbox < /var/www/dump.sql
SHELL

Потім запустіть команду vagrant provision

Замість підсумку

Брати термінові замовлення на біржі й встигати до дедлайну вийде в кожного. Як бачите, можна без зайвих рухів запускати локальне середовище для тестування або розробки. Це ніякий не фокус, а звичайна спритність рук.

Ще більше прикладів роботи з Scotchbox ви знайдете в документації проєкту.

Коментарів:

Коментарі неавторизованих користувачів перед публікацією проходять премодерацію