Как преобразовать сайт PHP в кучу статических файлов в Unix

  • Автор темы Wizard2
  • Обновлено
  • 14, May 2024
  • #1
Привет. Мне удалось создать автоматизированный способ компиляции простого PHP-приложения в кучу статических файлов, и я делюсь этим, надеюсь, что некоторые из вас найдут это полезным. Это имеет некоторые преимущества:
  • Безопасность: отсутствие кода — лучший код.
  • Скорость: более быстрое время отклика и лучшая масштабируемость.
  • Цена: хостинг сайта обойдется дешевле.
  • Стабильность: чем меньше вещей работает, тем меньше шансов, что что-то сломается.


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

Скомпилировать скрипт Я предполагаю, что у PHP-приложения красивые URL-адреса, все они заканчиваются символом «/». Прежде всего, установите две записи в /etc/hosts, указывающие на 127.0.0.1 (example.home и example.sandbox). Как только приложение PHP запускается на http://example.home

, я выполняю рекурсивную загрузку с помощью wget с и --adjust-расширение параметры. Это загрузка полных сайтов и вложений index.html завершение каждой страницы. Следующее, что нужно сделать, это заменить доменное имя в случае, если вы используете базовый href HTML-тег. Следующее, что нужно сделать, это заменить доменное имя в случае, если вы используете базовый href HTML-тег.

Упаковка всего этого в небольшой скрипт:

 
for i in `find example.sandbox -name "*html"`; do sed -i 's/example.sandbox/example.com/g' $i ; done
rsync -czrpgoD --rsh="ssh" example.sandbox/* server:/htdocs/example.com
ssh server "sh ~/wwwsync.sh"


Код (разметка): Загрузить скрипт

После проверки работоспособности example.sandbox измените ссылку example.sandbox на example.com и загрузите ее на сервер:

  rm -rf example.sandbox wget -r --adjust-extension [URL='https://lumtu.com/yti/bwbbwbWVodHRwOi8vZXhhbXBsZS5oSZs']http://example.home[/URL] mv example.home example.sandbox for i in `find example.sandbox -name "*html"`; do sed -i 's/example.sandbox/example.com/g' $i; done 


Код (разметка): последняя строка выполняет сценарий для синхронизации второго сервера для обеспечения избыточности.

Статья по теме: Пол Викси «Иди статично или иди домой».

Wizard2


Рег
21 Apr, 2011

Тем
70

Постов
204

Баллов
624
  • 21, May 2024
  • #2
Это выглядит устрашающе, если вы не понимаете, что вам нужно только изучить то, что вы используете. Я использую Emacs около двадцати лет и до сих пор знаю лишь небольшую часть его возможностей.

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

То, что я использую регулярно, я делаю, не задумываясь об этом.

Текстовый редактор — это то место, где вы живете, и я пойму, если вы не захотите его изменить; это как повар и его ножи, личные. Гэри
 

Dgryxalzqo


Рег
01 Jan, 2011

Тем
69

Постов
201

Баллов
566
  • 21, May 2024
  • #3
Я пытаюсь, но безуспешно, придумать рациональный вариант использования вашего решения. SSI будет обрабатывать шаблоны низкого уровня. Или, если уж на то пошло, режим организации Emacs. см. здесь, включает в себя

. Подробнее см. Руководство организации

, особенно раздел экспорта. Режим организации является неотъемлемой частью текстового редактора Emacs. Гэри
 

Moneypetr2012


Рег
30 Dec, 2011

Тем
61

Постов
192

Баллов
507
  • 22, May 2024
  • #4
Я просмотрел ссылку, но она кажется мне слишком сложной (я никогда не использовал emacs), я просто хочу написать простой HTML с помощью любого текстового редактора и автоматически отформатировать контент на веб-сайте.

Одним из преимуществ PHP является то, что он предназначен для Интернета и содержит множество полезных функций и библиотек.

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

Для меня это помогло, я удивлен, что вы не находите это полезным (по крайней мере, для определенных случаев использования). Я считаю очень удобным иметь локально динамический сайт и время от времени «зависать» и загружать его в производство.
 

Барис09


Рег
19 Apr, 2012

Тем
58

Постов
203

Баллов
503
  • 04, Jun 2024
  • #5
Хотя это вполне подходит для очень простых приложений, зачем вам вообще нужен PHP для таких простых веб-сайтов? В ту минуту, когда вам понадобится доступ к базе данных, динамический контент и т. д., ваше решение не будет работать - и если вам не нужен какой-либо динамический контент, вы все равно можете просто закодировать его в простом HTML/CSS.
 

Sayler1


Рег
27 Mar, 2014

Тем
61

Постов
188

Баллов
533
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно