Рубрики
Uncategorized

Десять Минут Онлайн-Функция Вычислений Играть в WordPress

Автор оригинала: David Wong.

Аннотация: Как мы все знаем, PHP является самым популярным языком программирования веб-программирования. Если кто-то скажет вам, что существует новый режим бессерверной веб-разработки PHP, вам будет любопытно и интересно? Принимая развертывание проекта WordPress в функции вычислительная среда al в качестве примера в этой статье показано, как использовать вычисления функций Aliyun для быстрого создания или переноса сети на основе PHP-фреймворка и ознакомления с новым подходом к веб-разработке серверов.

Предисловие

Эта статья подходит для всех новых разработчиков PHP, старых птиц и обезьян, которые хотят научиться разрабатывать PHP. Как мы все знаем, PHP является самым популярным языком программирования веб-программирования. Если кто-то скажет вам, что существует новый режим бессерверной веб-разработки PHP, вам будет любопытно и интересно? Прежде чем представить новую модель бессерверной веб-разработки, давайте рассмотрим преимущества создания веб-сервера PHP без сервера:

  1. Нет необходимости приобретать инфраструктуру, такую как серверы, и управлять ею
  2. Упругое расширение, динамическое расширение
  3. Не требует эксплуатации и технического обслуживания, что значительно снижает затраты на рабочую силу
  4. Оплата по требованию, низкие финансовые затраты

В этой статье рассматривается развертывание проекта WordPress в среде функциональных вычислений в качестве примера, чтобы показать вам, как использовать функциональные вычисления Aliyun для быстрого создания или переноса веб-страниц на основе PHP-фреймворка. Из этой статьи вы узнаете следующее:

  • Обзор дел
  • Традиционная серверная архитектура ПРОТИВ Бессерверной архитектуры
  • Объяснение Бессерверной Архитектуры
  • Вычисление функции выполняется по принципу PHP-фреймворка
  • Этапы настройки разработки кейса
  • Веб-настройка FC Пользовательское Доменное имя

Обзор дел

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

  • Стоимость переноса идеальной PHP – системы в FC невелика
  • FC открывает функцию VPC собственной сети. Функции пользователя могут настраивать облачные ресурсы для доступа к собственной сети, такой как MYSQL, в данном случае NAS.

Запись опыта работы с кейсами:

  • Адрес для получения опыта: http://1986114430573743.cn-ha…
  • Учетная запись: wp-тест
  • Пароль: wp-pwd

Традиционная серверная архитектура ПРОТИВ Бессерверной архитектуры

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

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

Объяснение Бессерверной Архитектуры

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

Вычисление функции выполняется по принципу PHP-фреймворка

Принцип работы традиционного сервера PHP

  • Принципиальная схема
  • Простой nginx conf

Из приведенной выше принципиальной схемы мы видим, что веб-сервер передает PHP-скрипт php-fpm в соответствии с местоположением в conf для его анализа, а затем возвращает обработанный результат на клиентский сервер.

Принципы разработки FC-движка PHP

  • Среда выполнения функциональных вычислений эквивалентна Apache/Nginx традиционных веб – сервисов
  • Пользовательские функции эквивалентны местоположениям в conf, реализующим Apache/Nginx
  • Пользователь развертывает веб-сайт на NAS, а затем подключает NAS к среде выполнения функции, такой как каталог/MNT/www, в следующем коде
  • Для WordPress код функции ввода настолько прост, я предлагаю вам сначала разобраться в среде выполнения PHP
  • Функция ввода PHP
  • Среда выполнения PHP
getAttribute("requestURI");
    $uriArr = explode("?", $uri);

    // default php / or /wp-admin/
    if (preg_match('#/$#', $uriArr[0]) && !(strpos($uri, '.php'))) {
        $uriArr[0] .= "index.php";
        $uri = implode($uriArr);
        if (startsWith($uri, "/2016-08-15/proxy/share/wp-func/wp-admin/")) {
            // wordpress admin entrypoint
            $request = $request->withAttribute("requestURI", $uri);
        }
    }

    $proxy    = $GLOBALS['fcPhpCgiProxy'];
    $root_dir = '/mnt/www';
    
    //php script
    if (preg_match('#\.php.*#', $uri)) {
        $format = '%s.%s.fc.aliyuncs.com';
        $host   = sprintf($format, $context['accountId'], $context['region']); // maybe user define domain
        $resp   = $proxy->requestPhpCgi($request, $root_dir, "index.php",
            ['SERVER_NAME' => $host, 'SERVER_PORT' => '80', 'HTTP_HOST' => $host],
            ['debug_show_cgi_params' => false, 'readWriteTimeout' => 15000]
        );
        return $resp;
    } else {
        // static files, js, css, jpg ...
        $filename = $root_dir . explode("?", $uri)[0];
        $handle   = fopen($filename, "r");
        $contents = fread($handle, filesize($filename));
        fclose($handle);
        $headers = [
            'Content-Type'  => $proxy->getMimeType($filename),
            'Cache-Control' => "max-age=8640000",
            'Accept-Ranges' => 'bytes',
        ];
        return new Response(200, $headers, $contents);
    }
}

Вычисление функций предоставляет пользователям объект $GLOBAL [‘fc Php Cgi Proxy’] для взаимодействия с php-fpm и анализа PHP-файлов в PHP-инженерии. Объект предоставляет два важных интерфейса:

  • запрос Php Cgi
  requestPhpCgi($request, $docRoot, $phpFile = "index.php", $fastCgiParams = [], $options = [])
  • $запрос: соответствует параметрам записи PHP HTTP invoke.
  • DocRoot: Корневой каталог веб-проекта
  • Php Файл: Параметр по умолчанию для сращивания SCRIPT_FILENAME в параметрах CGI
  • Параметры FastCGI: Вычисление функции внутренне пытается построить параметры CGI по умолчанию для вас на основе запроса$. Но если вы этого не хотите, вы можете переопределить некоторые параметры с помощью параметров $FastCGI (ссылка: cgi)
  • Параметры: тип массива, необязательный параметр, значение debug_show_cgi_params равно true, которое выводит PHP для каждого запроса Параметр CGI для синтаксического анализа по умолчанию равен false; тайм-аут чтения и записи по умолчанию устанавливает время синтаксического анализа в 5 секунд

Этапы настройки разработки кейса

Подготовка

Поскольку IP-адрес среды выполнения функции не является фиксированным, вам необходимо установить RDS, чтобы разрешить доступ по всем IP-адресам. Но есть риск, и это не рекомендуется. В этом уроке мы создадим базу данных RDS MYSQL и разместим ее в собственной сетевой среде VPC. Вычисление функций поддерживает функции VPC. Пользователи могут безопасно получать доступ к ресурсам в VPC с помощью авторизации (включая NAS в этом примере).

  1. Создайте базу данных MYSQL RDS, настройте VPC, обратитесь к доступу к экземпляру RDS через VPC
  2. Создайте точку подключения NAS, настройте VPC (Примечание: Здесь используется тот же VPC, что и RDS), и вычислите пример NAS с использованием определенной справочной функции.
  3. Необязательная операция для создания журнала в области функции подготовки к отладке функций, расчет конкретной справочной функции для настройки службы журналов

Создать функцию

  1. Создайте службу (при условии общего доступа), настройте конфигурацию VPC подготовки, конфигурацию NAS и службы журналов, такие как Конфигурация службы для работы с обращениями, как показано ниже:
  1. Загрузите WordPress и переместите проект WordPress на NAS с указанной выше конфигурацией. www представляет корневой каталог проекта WordPress
|-- index.py
|-- www

Index.py код:

# -*- coding: utf-8 -*-
import logging  
import os

file = "/mnt/www/2016-08-15/proxy/share/wp-func"

def mkdir(path):
  folder = os.path.exists(path)
  if not folder:                  
    os.makedirs(path)           
      
def lsDir():
  os.system("ls -ll /mnt/www/2016-08-15/proxy/share/wp-func/")

def handler(event, context):
  mkdir(file)  
  os.system("cp -r /code/www/* /mnt/www/2016-08-15/proxy/share/wp-func/")
  print(lsDir())
  return 'ok'

Создайте функцию move-wp-nas на основе приведенного выше кода, выполните эту функцию и переместите пакет проекта WordPress в каталог NAS/mnt/www/2016-08-15/proxy/share/wp-func.

Почему Q1: создал такой странный каталог/2016-08-15/proxy/share/wp-func?

Ответ: Из-за триггера HTTP формат доступа к функциям выглядит следующим образом: http:/${account_id}. ${регион} fc.aliyuncs.com/2016-08-15/proxy/$(имя пользователя}/{имя функции}/. Для того, чтобы убедиться, что при переходе с одной страницы на другую вы можете автоматически вывести/2016-08-15/прокси/$(имя_службы}/{имя_функции}/. Нам нужно создать такой каталог и задать параметры, связанные с C. Число достигает правильной задачи автоматического перехода в рамках PHP.

Вопрос 2: Можете ли вы избежать такого странного каталога, как/2016-08-15/proxy/share/wp-func?

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

  1. Создайте функцию входа wp-func (соответствующую/mnt/www/2016-08-15/proxy/share/wp-func на приведенном выше шаге), установите триггер HTTP для функции, введите анонимный, выберите тип.
  getAttribute("requestURI");
      $uriArr = explode("?", $uri);

      // default php / or /wp-admin/
      if (preg_match('#/$#', $uriArr[0]) && !(strpos($uri, '.php'))) {
          $uriArr[0] .= "index.php";
          $uri = implode($uriArr);
          if (startsWith($uri, "/2016-08-15/proxy/share/wp-func/wp-admin/")) {
              // wordpress admin entrypoint
              $request = $request->withAttribute("requestURI", $uri);
          }
      }

      $proxy    = $GLOBALS['fcPhpCgiProxy'];
      $root_dir = '/mnt/www';
      
      //php script
      if (preg_match('#\.php.*#', $uri)) {
          $format = '%s.%s.fc.aliyuncs.com';
          $host   = sprintf($format, $context['accountId'], $context['region']); // maybe user define domain
          $resp   = $proxy->requestPhpCgi($request, $root_dir, "index.php",
              ['SERVER_NAME' => $host, 'SERVER_PORT' => '80', 'HTTP_HOST' => $host],
              ['debug_show_cgi_params' => false, 'readWriteTimeout' => 15000]
          );
          return $resp;
      } else {
          // static files, js, css, jpg ...
          $filename = $root_dir . explode("?", $uri)[0];
          $handle   = fopen($filename, "r");
          $contents = fread($handle, filesize($filename));
          fclose($handle);
          $headers = [
              'Content-Type'  => $proxy->getMimeType($filename),
              'Cache-Control' => "max-age=8640000",
              'Accept-Ranges' => 'bytes',
          ];
          return new Response(200, $headers, $contents);
      }
  }
  1. Посетите домашнюю страницу непосредственно по URL-адресу, при первом посещении вам будет предложено установить WordPress, базу данных, администратора и другую соответствующую информацию, подготовленную перед процессом установки. После успешной установки вы можете успешно посетить домашнюю страницу и войти в фоновый режим для управления сайтом WordPress.
http://${account_id}.${region}.fc.aliyuncs.com/2016-08-15/proxy/$(seevice_name}/{function_name}/

for example:
http://1986114430573743.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/share/wp-func/

Веб-настройка FC Пользовательское Доменное имя

Незавершенное обновление…

резюме

Вычисление функций имеет следующие преимущества:

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

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

Автор этой статьи:песня

Прочитайте исходный текст

Эта статья является оригинальным контентом сообщества Юньци, который не может быть воспроизведен без разрешения.