Если вы ранее администрировали сервер Linux, вы знакомы с широко используемым стеком LAMP (Linux, Apache, MySQL, PHP). Однако Apache, MySQL и PHP иногда могут быть ресурсоемкими и не лучшими для вашего сервера. В этом уроке мы собираемся заменить каждую часть стека, кроме Linux, на лучшую альтернативу — Nginx, MariaDB и HHVM.
Предположение
1. Это руководство выполнено на сервере Ubuntu 14.04, хотя инструкции подойдут и для любого дистрибутива на основе Debian.
2. В этом руководстве основное внимание уделяется только
Contents
Предположение
стека LEMH. Это не затрагивает аспект безопасности сервера.3. Для выполнения этого руководства у вас уже должен быть доступ по SSH к вашему серверу (или физический доступ к вашему компьютеру).
Установка Nginx
Nginx — это легкая, но мощная замена Apache. Это обратный прокси-сервер с открытым исходным кодом, а также веб-сервер, в котором особое внимание уделяется высокому параллелизму, высокой производительности и низкому использованию памяти. Обратите внимание, что Nginx несовместим с Apache, поэтому вся конфигурация Apache, особенно созданные вами файлы.htaccess, не будет работать в Nginx. Также возможно запустить Apache и Nginx на одном сервере, но это потребует некоторой сложной настройки, которую мы здесь не будем рассматривать.
Nginx находится в репозитории Ubuntu,
Установка Nginx
Чтобы получить последнюю стабильную версию, добавьте в свою систему следующий PPA:sudo add-apt-repository ppa:nginx/stable sudo apt-get update
Последняя версия Nginx на момент публикации — 1.6.2. Альтернативно, если вы хотите опробовать последнюю версию разработки, вы можете использовать этот PPA:
sudo add-apt-repository ppa:nginx/development sudo apt-get update
Последняя разрабатываемая версия на момент публикации — 1.7.8.
Чтобы установить Nginx, выполните команду:
sudo apt-get install nginx
После установки выполните следующую команду, чтобы убедиться, что она запущена:
sudo service nginx start
Затем в веб-браузере перейдите по URL-адресу «http://123.4.56.789» (замените 123.4.56.789 на IP-адрес вашего сервера), и вы должны увидеть следующее:
Установка MariaDB
На протяжении многих лет MySQL является службой управления базами данных по умолчанию для многих приложений. Поскольку компания была приобретена Oracle, многие люди начали сомневаться в ее «открытом исходном коде», и сообщество (в которое входил основатель MySQL) решило создать ответвление MySQL и назвало его MariaDB. MariaDB — это полная замена MySQL. Это означает, что она полностью совместима с базами данных MySQL и может использоваться в качестве полной замены MySQL.
Интересный факт : MySQL основана Майклом Видениусом и названа в честь его первой дочери Май. Ведущим разработчиком MariaDB также является Майкл Видениус, названный в честь его второй дочери Марии.
Если на вашем сервере ранее был установлен MySQL, лучше полностью удалить MySQL перед установкой MariaDB:
sudo apt-get remove --purge mysql-server mysql-client mysql-common sudo apt-get autoremove sudo rm -rf /var/lib/mysql sudo apt-get autoclean
Далее добавьте PPA для MariaDB:
sudo apt-get install software-properties-common sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db sudoУстановка MariaDB>'deb http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.0/ubuntu trusty main' sudo apt-get update
Обратите внимание, что вы также можете создайте свой собственный PPA здесь найти местоположение, ближайшее к вашему серверу.
Установите MariaDB с помощью этой команды:
sudo apt-get install mariadb-server
Во время установки вам будет предложено установить пароль для пользователя root.
После установки запустить MariaDB можно командой:
sudo service mysql start
Установка PHP и HHVM
HHVM не является заменой PHP. Это виртуальная машина с открытым исходным кодом, предназначенная для выполнения программ, написанных на Hack и PHP. HHVM использует подход JIT-компиляции для достижения превосходной производительности при сохранении гибкости разработки, которую обеспечивает PHP.
Прежде чем устанавливать HHVM, важно сначала установить PHP на сервер. Вместо установки полного пакета PHP5, который включает в себя кучу файлов Apache, мы установим только php5-fpm
, который затем установит необходимые зависимости PHP. Кроме того, нам понадобится php5-fpm
в качестве запасного варианта для HHVM.
sudo apt-get install php5-fpm php5-mysql php5-curl
После этого установите HHVM с помощью команд:
wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add - echo deb http://dl.hhvm.com/ubuntu trusty main | sudo tee /etc/apt/sources.list.d/hhvm.list sudo apt-get update sudo apt-get install hhvm
После установки HHVM приступаем к настройке его для Nginx командой:
sudo /usr/share/hhvm/install_fastcgi.sh
И наконец, перезапустите HHVM
sudo service hhvm restart
Чтобы проверить работу HHVM, создайте файл «phpinfo.php» в корневой папке Nginx.
sudo nano /var/www/html/phpinfo.php
и вставьте следующую строку:
<?php phpinfo(Установка PHP и HHVMt;
Нажмите «Ctrl + o», чтобы сохранить, и «Ctrl + x», чтобы выйти.
В браузере загрузите URL-адрес: http://123.4.56.789/phpinfo.php(замените 123.4.56.789 IP-адресом вашего сервера). Вы должны увидеть только слово «HipHop», чтобы показать, что HHVM работает.
Настройка сайтов для работы в Nginx и HHVM (с резервным вариантом php5-fpm)
Теперь, когда у вас все настроено, пришло время создать виртуальный хост для запуска вашего веб-сайта.
Создайте новый файл конфигурации, содержащий сведения о вашем веб-сайте:
sudo nano /etc/nginx/sites-available/my-site
и вставьте следующий фрагмент:
server { listen 80; listen [::]:80; root /var/www/html; # Add index.php to the list if you are using PHP index index.html index.htm; server_name mywebsite.com; include hhvm-with-fallback.conf; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location @fallback { # include snippets/fastcgi-php.conf; # # # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } }
Вы можете изменить server_name
, чтобы он указывал на ваш собственный домен и папку root
, в которой вы хотите хранить файлы.
HHVM имеет ошибку, связанную с периодическим сбоем без перезапуска; это приведет к сбою веб-сайта с ошибкой 500. В этом случае мы создадим резервную систему, в которой PHP5-FPM возьмет на себя управление в случае сбоя HHVM. Обратите внимание на блок location @fallback
в приведенном выше фрагменте конфигурации? Это обратный вызов в случае сбоя HHVM. Чтобы завершить уравнение, нам все еще нужно создать файл «hhvm-with-fallback.conf», который представляет собой модифицированную версию файла «hhvm.conf».
sudo nano /etc/nginx/hhvm-with-fallback.conf
Вставьте следующий фрагмент:
location ~ \.(hh|php)$ { proxy_intercept_errors on; error_page 500 501 502 503 = @fallback; fastcgi_keep_conn on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root<Настройка сайтов для работы в Nginx и HHVM (с резервным вариантом php5-fpm)
/pre>
Сохраните и закройте файл.
Наконец, проверьте настройки Nginx с помощью
sudo nginx -t
и если все в порядке, перезапустите Nginx.
sudo service nginx restart
Вот и все. Вы завершили настройку стека LEMH на своем сервере Linux.