Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii
Code

Пишем стартап на PHP: выбор и настройка production хостинга

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Exporting iCal Files into Calendar Events
Building Your Startup With PHP: Collecting and Managing User Reports and Feedback

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

Final product image
What You'll Be Creating

Этот учебник является частью серии Пишем стартап на PHP на Envato Tuts +. В этой серии я направляю вас через запуск приложения от концепции до реализации, используя приложение Планировщик встреч в качестве примера реального приложения. На каждом шаге, я делаю релиз кода планировщика собраний в качестве примеров с открытым исходным кодом, из которых вы можете узнать что-то новое. Я также рассмотрю связанные с запуском бизнес-вопросы по мере их возникновения.

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

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

Напомним, что весь код Планировщика собраний написан в Yii2 Framework для PHP. Если вы хотите узнать больше о Yii2, ознакомьтесь с нашей параллельной серией Программирование с Yii2.

Выбор хостинга

Для многих компаний AWS Amazon является новым решением. Когда AWS падает, тоже происходит многими из самых известных сервисов в Интернете. Но AWS также дорогой, часто чрезмерно сложный, и управляется компанией, которая имеет историю враждебности по отношению к сотрудникам, особенно женщинам и работникам склада. Кроме того, Amazon в одиночку нажала на быстрое развитие своего родного города Сиэтл таким образом, который навсегда изменил город, но не обязательно в лучшую сторону.

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

В ближайшей перспективе, в лучшем случае, мне понадобится сервер или две веб-службы и службы баз данных. Для этого управляемые хостинговые компании, такие как Rackspace, Linode и мой любимый Digital Ocean подходят просто отлично.

На данный момент Планировщик встреч может работать на одном сервере, но по мере его роста возможно, что мне понадобятся несколько веб-серверов и серверов баз данных. Основываясь на моем опыте, AWS упрощает реализацию этого, но опытные системные администраторы могут легко сделать это с вышеупомянутыми облачными провайдерами.

Это руководство поможет вам запустить веб-сервер и сервер баз данных в облаках Digital Ocean.

Работа с Digital Ocean

Я написал несколько руководств по Digital Ocean в Envato Tuts +, в том числе о том, как использовать их API для конфигурации сервера. Я также недавно написал о своем положительном опыте с партнерской программой Digital Ocean. Полное раскрытие информации: при запросе Digital Ocean предоставила небольшой кредитный счёт, чтобы покрыть затраты на дроплет для этой серии на срок до шести месяцев.

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

Давайте начнем настройку начального production сервера для Планировщика собраний.

Настройка нового дроплета

Создание нового дроплета

Экземпляры Digital Ocean называются дроплетами. Я уверен, что они думали назвать их головастиками или рыбой, но мы, разработчики, часто уничтожаем их, поэтому нечувствительный дроплет - лучший термин.

В меню Droplets мы выбираем Create a Droplet. Во-первых, мы выбираем Ubuntu 14.04 для нашего образа и вариант с параметром $ 10 в месяц:

Meeting Planner Hosting - Create Droplet

Затем я выбрал район San Francisco, потому что он ближе всего мне:

Meeting Planner Hosting - Choose a Region

Я также попросил Digital Ocean повторно использовать мой открытый ключ для установления логина; логин по ключу более безопасен, чем пароль. Затем я выбрал имя хоста apps.meetingplanner.io:

Meeting Planner Hosting - Choose a Hostname

Когда вы нажмете Create, вы увидите, что формируется дроплет:

Meeting Planner Hosting - Status of Your Droplet Being Created

Когда он будет готов, вам будет предоставлен IP-адрес, на который я сопоставил записи домена meetingplanner.io для начальной конфигурации:

Meeting Planner Hosting - Updating Your DNS Records to Point to the Droplet

Я подожду позже, чтобы сопоставить root meetingplanner.io домена с новым сервером.

Настройка сервера

Вот что вы увидите при первом заходе на сервер:

Digital Ocean предлагает широкий выбор полезных руководств. Я создал нового пользователя для своих основных учетных записей без учета учетной записи и развертывания, используя этот мануал.

Я также отредактировал конфигурацию SSH, чтобы исключить вход в корневой каталог и настроить порт SSH по умолчанию от 22.

Затем я установил на сервере типичный UAMP-сервер (Ubuntu, Apache, PHP и MySQL). Возможно, что я просто создал новый дочерний акроним LAMP.

Затем я настроил свой часовой пояс по умолчанию. Планировщик встреч запускается внутри страны в стандартном стандарте Pacific (PST). Я редактировал php.ini:

И я добавил следующее:

Теперь пришло время получить нашу кодовую базу на сервере.

Миграция базы кода и ресурсов

Установка Git

Во-первых, я установил git:

Затем, как deployment пользователь, я создал новый ключ SSH для установления безопасного соединения с GitHub:

Вы также должны вставить ключ в свои настройки учетной записи Git.

Установка Composer

Затем я установил Composer:

Я очень люблю Composer, потому что он экономит так много времени, но есть дни, когда он меня раздражает, когда он перестает работать из ниоткуда - например, как Yii Framework требует, чтобы вы установили плагин fxp/composer-asset для правильного использования:

Установка кода планировщика собраний

По общему признанию, я использовал GitHub для синхронизации последнего кода, пока не запомнил, что на самом деле Yii2 настраивает множество файлов, которые GitHub игнорирует, включая index.php. Существуют также файлы локальных ключей и загруженные изображения профиля пользователя. Итак, я использовал tar для сжатия активной кодовой базы:

Затем я использовал SCP для перемещения файлов на новый сервер, а затем я извлек их:

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

Теперь переместим базу данных.

Перемещение базы данных MySQL

Во-первых, я сбросил существующую базу данных в файл:

Затем я переместил его на новый сервер с помощью scp:

На новом сервере я создал новую базу данных с новыми деталями и настроил некоторые разрешения для Apache:

Наконец, я импортировал файл sql в новую базу данных:

Тогда пришло время настроить Apache.

Настройка веб-сервера

Я создал файл .conf на новом сервере:

Мне удалось извлечь большую часть из существующего файла .conf:

Затем я активировал сайт и перезагрузил Apache:

Как я упоминал ранее, я должен был убедиться, что локальные файлы с ключами и пути среды были правильными на новом сервере.

В конечном счете, все собралось вместе.

Миграция DNS

Наконец, я повторно отобразил DNS для основного URL планировщика собраний. Вскоре после этого появился новый сервер:

Startup Series - Meeting Planner Home Page

Вы можете заметить, что я использовал свой недавний учебник об удивительном шифровании Let's Encrypt: я установил https для планировщика собраний, прежде чем снимать скриншот выше.

Обновление задач cron

Планировщик встреч и Let's Encrypt полагаются на cron для запуска ключевых процессов в фоновом режиме. Итак, я перенес свои настройки crontab со старого сервера:

Прочтите это, если вам интересно, почему я отношусь к cron во всех строчных.

Что дальше?

Планировщик собраний добился огромного прогресса в последние несколько месяцев. Я запланировал деловые встречи, и несколько личных дат решили назначить мне вторую дату с помощью приложения. Тем не менее, все еще есть много недостатков - и обратная связь с ранними пользователями имеет жизненно важное значение. Итак, в следующем учебном пособии я собираюсь создать систему для сбора отзывов от пользователей, помогая им получать ответы на общие вопросы и учиться, насколько я могу, чтобы сделать службу лучше, прежде чем объявлять MVP и альфа-запуск.

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

Пожалуйста, не стесняйтесь добавлять свои вопросы и комментарии ниже; Я вообще участвую в обсуждениях. Вы также можете связаться со мной в Twitter @reifman.

Ссылки по теме

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.