Что нужно знать о хостинге сайтов на Linux (Ubuntu )

Хотелось бы поделиться своим опытом переноса сайтов на Linux VPS-хостинг. Главной причиной переезда с Windows Server для меня послужила крайне низкая скорость работы тяжелых систем управления контетом — WordPress и Joomla на сервере IIS в среде Windows Server. Конкретный Linux- хостинг — DigitalOcean, но инструкции будут применимы к любой системе Ubuntu.

Специально для того, чтобы убедиться, что инструкций в статье будет достаточно я создал новый дроплет с Ubuntu 12.10 X64 Desktop. Конечно же, тут кто-то тут же потянется за помидорами по поводу установки десктопной версии, но если мы не собираемся поднимать сто экземпляров нашего супер-масштабируемого и высоконагруженного приложения, то гораздо проще и удобнее поставить десктопную версию. Как минимум, мы получаем полноценный браузер и что-то похожее на Total Commander (Double Commander).
Хотя DigitalOcean предоставляет возможность предустановить необходимые приложения, для учебных целей разворачиваем чистую систему.

Первым делом устанавливаем веб-сервер apache

sudo apt-get install apache2
После этого должен заработать сервер по адресу localhost, а также по внешнему адресу нашего виртуального сервера.

Устанавливаем PHP сразу с модулем curl, который часто требуется.
sudo apt-get install php5 libapache2-mod-php5 php5-curl
Читать далее Что нужно знать о хостинге сайтов на Linux (Ubuntu )

WordPress на IIS — автоматическое обновление плагинов

У WordPress, работающего на сервере с Windows и IIS, есть проблема автоматического обновления плагинов. По крайней мере так было у меня при установке PHP через Microsoft Web Platform Installer. WordPress после очистки содержимого папки плагина не может удалить папку plug-in и на этом обновление прерывается.

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

  • Скачать с SourceForge новую версию php_wincache.dll
  • Заменить php_wincache.dll в каталоге %ProgramFiles%PHPv5.2ext. Для этого необходимо остановить IIS Admin Service (хотя может быть, хватит и остановки World Wide Publishing Service). Так как службы запускаются и останавливаются медленно, то проще всего сделать перезапуск IIS Admin Service и после остановки World Wide Publishing Service заменить файл DLL.

Подсветка синтаксиса MatLab в WordPress

Для подсветки синтаксиса исходного кода на сайте WordPress я остановился на плагине SyntaxHighlighter Plus . Однако, в нем нет поддержки синтаксиса Matlab, хотя бы подсветки комментариев. Но что нам стоит дом построить — сейчас  возьмем и добавим.

При просмотре папки плагина  (wp-contentpluginssyntaxhighlighter-plus) видим, что реализация подсветки для конкретного языка программирования находится в файлах c именами типа shBrushPerl.js (для Perl).

Берем за основу синтаксис Delphi, более всего похожий на Matlab. Копируем файл shBrushDelphi.js под именем  shBrushMatlab.js.

Привязка JS-кода и имен языков находится в файле syntaxhighlighter.php, начиная со строки «$this->aliases = apply_filters( ‘agsyntaxhighlighter_aliases’, array». Таким образом, мы можем легко подключить новый файл, добавив строку:

‘MatLab’  => array(‘matlab’),

Простого копирования файла с новым именем недостаточно, в JS-файле есть привязки к имени языка, нужно заменить все вхождения Delphi на Matlab внутри файла shBrushMatlab.js

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

Регулярное выражение будет следующим: %.*$

Список ключевых слов, куда я добавил несколько базовых функций Matlab, не претендует на полноту. Тем не менее, итоговый java-script код можно увидеть здесь.

Небольшая демонстрация


s = 'string literal';% подсветка строк
x = zeros(1, 4);%подсветка основных функций Matlab
z = [1 2 ; 3 4];

for i=1:length(x)
if x(i)==0
x(i) = x(i)+1;%комментарий 4%4
end
end

return 0;

function y =  myfunc(x)

y = sin(x)+5;