Установка VPS на Ubuntu 18.04⚓︎
Пакеты обновлений⚓︎
На этом этапе вы можете либо настроить локальную запись /etc/hosts
, чтобы дать IP-адресу удобное понятное имя, такое как {{ page.header.localname }}
. Так вам будет проще подключиться к серверу по SSH с помощью ssh root@{{ page.header.localname }}{% if ssh_port %} -p{{ ssh_port }}{% endif %}
.
После успешного подключения по SSH к вашему серверу как root первое, что вам нужно сделать, это обновить и обновить все установленные пакеты. Это гарантирует, что вы используете самую свежую версию:
Просто ответьте Y
, если будет предложено.
Прежде чем идти дальше, удалим Apache2, который мы заменим Nginx:
Возможно, это не установлено. Но лучше перестраховаться!
Далее вам нужно будет установить несколько важных пакетов:
# apt install vim zip unzip nginx git php-fpm php-cli php-gd php-curl php-mbstring php-xml php-zip php-apcu
Это установит полный редактор VIM (а не мини-версию, которая поставляется с Ubuntu), веб-сервер Nginx, команды GIT и PHP 7.2.
Конфигурация PHP7.2 FPM⚓︎
После установки php-fpm необходимо внести небольшое изменение в конфигурацию для более безопасной установки.
Найдите cgi.fix_pathinfo
. По умолчанию это будет закомментировано и установлено значение «1».
Это крайне небезопасный параметр, поскольку он сообщает PHP, что нужно попытаться выполнить ближайший файл, который он может найти, если запрошенный файл PHP не может быть найден. Это в основном позволит пользователям создавать PHP-запросы таким образом, чтобы они могли выполнять скрипты, которые им не разрешалось выполнять.
Раскомментируйте эту строку и измените «1» на «0», чтобы она выглядела так
Сохраните и закройте файл, а затем перезапустите службу.
Настройка пула подключений Nginx⚓︎
Nginx уже установлен, но вы должны настроить его так, чтобы он использовал пул соединений PHP для конкретного пользователя. Это обеспечит вашу безопасность и позволит избежать любых потенциальных разрешений на файлы при работе с файлами в качестве учетной записи пользователя и через веб-сервер.
Перейдите в каталог пула и создайте новую конфигурацию grav
:
В Vim вы можете вставить следующую конфигурацию пула:
[grav]
user = grav
group = grav
listen = /var/run/php/php7.2-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
Ключевыми вещами здесь являются user
и group
, устанавливаемые для пользователя с именем grav
, и сокет прослушивания, имеющий уникальное имя из стандартного сокета. Сохраните и выйдите из этого файла.
Теперь нам нужно создать специального пользователя grav
:
Задайте надежный пароль и оставьте другие значения по умолчанию. Затем нам нужно создать подходящее место для Nginx для обслуживания файлов, поэтому давайте сменим пользователя и создадим эту папку, а также создадим пару тестовых файлов:
Создайте простой index.html
с содержимым:
..и файл с именем info.php
с содержимым:
Теперь мы можем выйти из этого пользователя и вернуться к root, чтобы настроить конфигурацию сервера Nginx:
Затем просто вставьте эту конфигурацию:
server {
#listen 80;
index index.html index.php;
## Begin - Server Info
root /home/grav/www/html;
server_name localhost;
## End - Server Info
## Begin - Index
# for subfolders, simply adjust:
# `location /subfolder {`
# and the rewrite to use `/subfolder/index.php`
location / {
try_files $uri $uri/ /index.php?$query_string;
}
## End - Index
## Begin - Security
# deny all direct access for these folders
location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
# deny running scripts inside core system folders
location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
# deny running scripts inside user folder
location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
# deny access to specific files in the root folder
location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }
## End - Security
## Begin - PHP
location ~ \.php$ {
# Choose either a socket or TCP/IP address
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# fastcgi_pass unix:/var/run/php5-fpm.sock; #legacy
# fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
## End - PHP
}
Это стандартный файл nginx.conf
, который поставляется с Grav с двумя изменениями. 1) root
был адаптирован к нашему пользователю/папке, которую мы только что создали, а опция fastcgi_pass была установлена на сокет, который мы определили в нашем пуле grav
. Теперь нам просто нужно правильно связать этот файл, чтобы он был включен:
Вы можете проверить конфигурацию с помощью команды nginx -t
. Он должен вернуть следующее.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Теперь все, что нам нужно сделать, это перезапустить Nginx и процесс php7-fpm и протестировать, чтобы убедиться, что мы правильно настроили Nginx и пул соединений PHP:
Теперь укажите в браузере свой сервер: http://{{page.header.localname}}
, и вы должны увидеть текст: Working!
Вы также можете проверить, что PHP установлен и правильно работает, указав в браузере: http://{{page.header.localname}}/info.php
. Вы должны увидеть стандартную информационную страницу PHP с перечисленными APCu, Opcache и т. д.
Установка Grav⚓︎
Это легкая часть! Сначала нам нужно вернуться к пользователю Grav, поэтому либо SSH как grav@{{page.header.localname}}
, либо su - grav
от имени пользователя root, затем выполните следующие действия:
$ cd ~/www
$ wget -O grav.zip https://getgrav.org/download/core/grav/latest
$ unzip grav.zip
$ rm -Rf html
$ mv grav html
Теперь, когда все готово, вы можете подтвердить установку Grav, указав в браузере ссылку http://{{page.header.localname}}
, и вы должны увидеть страницу Grav is Running!.
Поскольку вы тщательно следовали этим инструкциям, вы также сможете использовать такие команды, как:
$ cd ~/www/html
$ bin/grav clear
Clearing cache
Cleared: cache/twig/*
Cleared: cache/compiled/*
Touched: /home/grav/www/html/user/config/system.yaml
и команды GPM: