Статьи

Как развернуть ваше первое приложение в PHP Cloud

Для разработчиков доступно все больше опций « Платформа как услуга» , поэтому неудивительно, что Zend присоединился к этой партии. На данный момент PHP Cloud является общедоступным предварительным просмотром, но он уже предлагает ключевые функции, такие как: доступ к MySQL, управление исходным кодом через Git, развертывание в других облачных сервисах и доступ по SFTP.

В этой статье я покажу вам, как настроить установку CakePHP в контейнере приложения в PHP Cloud. Попутно вы узнаете, как получить доступ к MySQL, развернуть код и использовать SFTP из вашего FTP-клиента для доступа к контейнеру приложения.

Сначала получите учетную запись на Zend.com и приглашение на phpcloud.com.

Вам нужно будет создать учетную запись на zend.com (это бесплатно), если у вас ее еще нет. Тогда вам нужно будет запросить приглашение . Обычно Zend отправляет вам приглашение в течение 24 часов.

Ключи доступа

После того, как вы получили приглашение и создали учетную запись, в первую очередь необходимо настроить ключи доступа (из меню слева после входа в систему). Если у вас уже есть пара RSA, вы можете загрузить свой существующий открытый ключ. Если нет, или если вы хотите создать его только для PHP Cloud, вы можете использовать опцию для генерации новой пары ключей:

создать пару ключей

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

Создать контейнер

Чтобы создать контейнер, нажмите «Мои контейнеры» в меню слева после входа в систему. Появится форма, запрашивающая основную информацию о контейнере, который вы хотите настроить:

создание контейнера

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

резервов

Это все, что нужно для создания контейнера.

Несколько слов о доступе по SSH / Shell

На момент написания статьи не предусмотрено доступа к оболочке. Доступ к SSH ограничен. Вы можете получить доступ к своему экземпляру MySQL или Zend Studio для удаленной отладки. Кажется, что с этим есть проблема, я столкнулся с множеством проблем с подключением по SSH, в основном из-за:

Connection timed out during banner exchange

Имейте в виду, что это предварительная сборка на данный момент, поэтому обязательно возникнут проблемы с прорезыванием зубов. Мы можем обойти эту проблему сейчас.

Доступ к базе данных

Другой способ получить доступ — через установленную установку phpMyAdmin. В контейнере приложения выберите управление -> управление базой данных:

управление базами данных

Это предоставит ссылку на phpMyAdmin:

управление базами данных

Теперь вы можете работать как обычно с MySQL, импортируя данные, создавая таблицы и так далее. Чтобы иметь возможность подключиться к вашей базе данных через ваш код, вам потребуется следующее:

  • Хост базы данных: mycontainer-db.my.phpcloud.com
  • Порт базы данных: 3306
  • Имя схемы базы данных: mycontainer
  • Пользователь базы данных: mycontainer
  • Пароль базы данных: ваш пароль контейнера

Git Access

Вы можете работать со своим источником напрямую через Git:
Гит
Кнопка предоставит URL для хранилища, которое вы можете клонировать:

 cd ~/sites
git clone https://[email protected]/git/container-root.git myproject

Очевидно, вам необходимо изменить каталог, в котором вы хотите хранить свой код, а также добавить имя контейнера, которое вы использовали вместо mycontainer .

Доступ к SFTP

Если вы используете FTP-клиент, который поддерживает STFP, вы также можете получить доступ к своему контейнеру. Вам понадобится следующая информация:

  • Имя пользователя: mycontainer
  • Имя хоста: mycontainer.my.phpcloud.com
  • Порт: 22 (это порт SFTP по умолчанию, и обычно нет необходимости указывать это)
  • Закрытый ключ RSA: путь к вашему файлу закрытого ключа

Путь к закрытому ключу должен указывать на файл .pem, который вы создали ранее, или на ваш существующий закрытый ключ.

Как только вы подключитесь, вы увидите файловую структуру, подобную этой:

SFTP

Ваш код предназначен для перехода в общую папку. Вы увидите, что я добавил файлы и папки, которые относятся к установке CakePHP.

Вы можете работать через Git или загружать через SFTP, выбор за вами.

Попробуйте — простое приложение CakePHP

Мы установим CakePHP и создадим простое приложение для блога, чтобы доказать, что все работает на Zend Cloud.

Обычная установка CakePHP требует, чтобы вы изменили разрешения для определенных папок и файлов. Поскольку PHPCloud не имеет доступа к оболочке, вам нужно будет получить доступ к установке через SFTP.

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

1. Измените права доступа — app / tmp

Затем измените разрешения для папки app / tmp на 777 (чтение и запись), используя предпочитаемый (S) FTP-клиент. Cake использует эту папку для хранения данных сеанса, журналов, кэша и результатов теста.

2. Обновите app / config / core.php

Прокрутите вниз до строки 182 и измените соль безопасности на свою собственную. Также измените значение cipherSeed на случайную числовую строку.

3. Добавьте настройки вашей базы данных

Настройки базы данных, которые вы использовали для phpMyAdmin, должны быть добавлены в app / config / database.php (вам нужно будет переименовать файл в database.php.default).

4. Протестируйте свой сайт

Зайдите на ваш сайт, нажав на ссылку в контейнере приложения:

CakePHP установлен

И если повезет, вы увидите что-то вроде скриншота выше.

4. Добавить таблицу в базу данных

Войдите в свой экземпляр phpMyAdmin в контейнере, щелкните имя базы данных в левой части окна, а затем скопируйте и вставьте следующий код SQL в текстовое поле на вкладке SQL. Нажмите кнопку «Перейти», и ваша таблица будет создана:

 /* First, create our posts table: */
CREATE TABLE posts (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(50),
    body TEXT,
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

/* Then insert some posts for testing: */
INSERT INTO posts (title,body,created)
    VALUES ('The title', 'This is the post body.', NOW());
INSERT INTO posts (title,body,created)
    VALUES ('A title once again', 'And the post body follows.', NOW());
INSERT INTO posts (title,body,created)
    VALUES ('Title strikes back', 'This is really exciting! Not.', NOW());

создать таблицу

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

Клонировать ваш репозиторий

Я собираюсь предположить, что у вас установлен Git, и вы знаете, как его использовать. Вернувшись в свой контейнер, вы можете найти URL клона здесь:

Git клон URL

Откройте свой терминал / консоль и перейдите в каталог, где вы хотели бы сохранить свой проект. Затем клонируйте репозиторий:

 git clone https://your_container.my.phpcloud.com/git/container-root.git myproject

Время для некоторого кода

Мы начнем с создания кода для обработки сообщений в блоге.

1. Создайте модель поста

Создайте новый файл в app / Model с именем Post.php и добавьте следующий код:

 <?php
class Post extends AppModel {
    public $name = 'Post';
}

2. Создайте контроллер сообщений

Мы создадим общую схему для нашего контроллера:

 <?php
class PostsController extends AppController {
    public $name = 'Posts';
    public $helpers = array('Html', 'Form');
}

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

 public function index() {
        $this->set('posts', $this->Post->find('all'));
    }

3. Добавить файл просмотра

Создайте новый файл в app / views / Posts с именем index.ctp и добавьте следующий код:

 <!-- File: /app/View/Posts/index.ctp -->

<h1>Blog posts</h1>
<table>
    <tr>
        <th>Id</th>
        <th>Title</th>
        <th>Created</th>
    </tr>

    <!-- Here is where we loop through our $posts array, printing out post info -->

    <?php foreach ($posts as $post): ?>
    <tr>
        <td><?php echo $post['Post']['id']; ?></td>
        <td>
            <?php 
                echo $this->Html->link($post['Post']['title'],
                    array('controller' => 'posts', 'action' => 'view', $post['Post']['id'])); 
            ?>
        </td>
        <td><?php echo $post['Post']['created']; ?></td>
    </tr>
    <?php endforeach; ?>

</table>

4. Проверка прогресса

Кажется, проблема в том, как PHP Cloud в настоящее время обрабатывает файлы .htaccess. Чтобы все заработало, перейдите в app / config / core.php и сделайте так, как советовали здесь:

 /**
 * To configure CakePHP *not* to use mod_rewrite and to
 * use CakePHP pretty URLs, remove these .htaccess
 * files:
 *
 * /.htaccess
 * /app/.htaccess
 * /app/webroot/.htaccess
 *
 * And uncomment the App.baseUrl below:
 */
    Configure::write('App.baseUrl', env('SCRIPT_NAME'));

Теперь вы можете посетить свой сайт по адресу: http://my-container.my.phpcloud.com/index.php/posts/index:

CakePHP запущен и работает

5. Добавление действия просмотра

Вы заметите, что нажатие на ссылки вызывает ошибку. Это потому, что у нас нет действия view в контроллере posts и связанного файла view.

Поэтому в app / Controller / PostsController.php добавьте необходимое действие:

 public function view($id = null) {
        $this->Post->id = $id;
        $this->set('post', $this->Post->read());
}

Затем в app / View / Posts добавьте view.ctp:

 <!-- File: /app/View/Posts/view.ctp -->
<h1><?php echo $post['Post']['title']?></h1>
<p><small>Created: <?php echo $post['Post']['created']?></small></p>
<p><?php echo $post['Post']['body']?></p>

Теперь вы можете нажимать на ссылки для просмотра отдельных сообщений.

В заключение…

Итак, вы увидели, как запустить простое приложение на PHP Cloud. Есть еще некоторые проблемы, но как только они будут решены, это, несомненно, будет сильное решение облачного хостинга.

Возможность входа через SFTP важна, но отсутствует доступ к оболочке. Однако, благодаря phpMyAdmin, Git и возможности развертывания в других облачных сервисах, PHP Cloud уже может многое предложить.