如何在 Ubuntu 16.04 上使用 Nginx 安装 Grav CMS
在此页
- 先决条件
- 我们将做什么:
- 第 1 步 - 安装 Nginx Web 服务器
- 第 2 步 - 安装和配置 PHP-FPM
- 第 3 步 - 安装 PHP Composer
- 第 4 步 - 下载并安装 Grav
- 第 5 步 - 配置 Grav 虚拟主机
- 第 6 步 - 测试
- 参考资料
Grav 是一个不需要数据库的现代 Web 应用程序。它是一个基于文件的网络平台,简单、快速且需要零安装。 Grav 使用现代技术,包括用于模板的 Twig Templating、用于内容创建的 Markdown、用于简单配置的 YAML、Parsedown 和用于性能层的 Doctrine 缓存等。该工具是用 PHP 编写的,并带有强大的包管理系统,允许您管理Grav系统,包括安装和升级Grav本身,以及主题和插件。
在本教程中,我将逐步向您展示如何在 Ubuntu 16.04 上安装和配置 Grav CMS。由于 Grav 是基于 PHP web 应用程序的,我们需要在系统上安装 PHP,为了获得更高的性能,我们将使用 PHP-FPM 和 Nginx web 浏览器。
先决条件
- Ubuntu 16.04
- 根权限
我们将要做什么:
- 安装 Nginx
- 安装和配置 PHP-FPM
- 安装 PHP 编写器
- 下载并安装 Grav CMS
- 为 Grav 配置 Nginx 虚拟主机
- 测试
第 1 步 - 安装 Nginx Web 服务器
在第一步中,我们将从 Ubuntu 存储库安装 Nginx Web 服务器。在我们这样做之前,我们需要使用以下 apt 命令更新所有包和存储库。
sudo apt update
sudo apt upgrade
现在安装 Nginx Web 服务器。
sudo apt install nginx -y
安装完成后,启动该服务并使其在系统启动时启动,您可以使用以下 systemctl 命令执行此操作。
systemctl start nginx
systemctl enable nginx
Nginx Web服务器已经安装在Ubuntu 16.04上,并运行在默认的HTTP端口80上。使用netstat命令通过以下方式查看。
netstat -plntu
您将得到如下所示的结果。

第 2 步 - 安装和配置 PHP-FPM
现在我们将为我们的 Grav 安装安装和配置 PHP-FPM。使用以下命令安装 PHP 和 PHP-FPM 包(包括所有必需的扩展)。
sudo apt install -y php7.0 php7.0-fpm php7.0-cli php7.0-gd php7.0-mbstring php-pear php7.0-curl php7.0-dev php7.0-opcache php7.0-xml php7.0-zip
现在我们需要配置 PHP-FPM。
- 安装额外的扩展
这是可选的,但它最适合 Grav 性能。我们将使用 PECL 命令从 PHP 扩展存储库手动安装一些额外的扩展。
使用下面的 pecl 命令安装 apcu 扩展(以提高缓存性能)。
sudo pecl install apcu
现在在/etc/php/7.0/mods-available/ 目录下新建一个扩展配置apcu.ini。
sudo vim /etc/php/7.0/mods-available/apcu.ini
将以下配置粘贴到那里。
extension=apcu.so
保存并退出。
接下来,使用以下命令激活扩展。
sudo ln -s /etc/php/7.0/mods-available/apcu.ini /etc/php/7.0/fpm/conf.d/20-apcu.ini
sudo ln -s /etc/php/7.0/mods-available/apcu.ini /etc/php/7.0/cli/conf.d/20-apcu.ini

现在,我们将安装 YAML 扩展以进一步提高 Grav 性能。但在安装扩展之前,我们需要使用以下 apt 命令安装一些包。
sudo apt install libyaml-dev unzip -y
接下来,使用 pecl 命令安装 yaml 扩展。
sudo pecl install yaml-2.0.0
安装完成后,新建yaml.ini配置文件。
sudo vim /etc/php/7.0/mods-available/yaml.ini
将以下配置粘贴到那里。
extension=yaml.so
保存并退出。
现在激活 YAML 扩展。
sudo ln -s /etc/php/7.0/mods-available/yaml.ini /etc/php/7.0/fpm/conf.d/20-yaml.ini
sudo ln -s /etc/php/7.0/mods-available/yaml.ini /etc/php/7.0/cli/conf.d/20-yaml.ini

为 Grav 添加了新的附加 PHP 扩展。
- 为 Grav 配置 PHP-FPM 池
在创建新的 PHP-FPM 池配置之前,我们需要向系统添加一个名为 grav 的新用户,您可以使用 useradd 命令来完成此操作。
useradd -m -s /bin/bash grav
passwd grav
现在转到 /etc/php/7.0/fpm/pool.d 目录并备份默认的 www.conf 配置。
cd /etc/php/7.0/fpm/pool.d/
mv www.conf www.conf.bak
接下来,为 Grav 创建新的 PHP-FPM 池配置 - grav.conf。
vim grav.conf
将以下配置粘贴到那里。
[grav]
user = grav
group = grav
listen = /run/php/php7.0-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 = /
保存并退出。

重新启动 PHP-FPM 服务并使其在系统启动时启动。
systemctl restart php7.0-fpm
systemctl enable php7.0-fpm
PHP-FPM 现在正在 php7.0-fpm.sock 文件下运行 - 使用 netstat 命令按以下方式检查它。
netstat -pl | grep php
你应该得到如下所示的结果。

笔记:
如果要检查 apcu 和 yaml 扩展,可以使用以下 php 命令。
sudo php -m | grep apcu
sudo php -m | grep yaml

PHP-FPM 的安装和配置已经完成。
第 3 步 - 安装 PHP Composer
Composer 是 PHP 的应用程序级包管理器。它用于管理 PHP 依赖项。
使用以下命令安装 PHP Composer。
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
安装完成后,尝试通过以下方式运行composer命令。
composer --version
PHP Composer 已安装。

第 4 步 - 下载并安装 Grav
我们将以 grav 用户身份安装并运行该工具。用户是在前面的步骤之一中创建的。
首先,以 grav 用户身份登录。
su - grav
现在,创建一个新的 www 目录。
mkdir -p ~/www
cd ~/www
使用 wget 下载最新的 grav 版本并为文件名添加 .zip 扩展名。
wget https://getgrav.org/download/core/grav/latest
mv latest latest.zip
提取 latest.zip 文件并将 grav 目录重命名为 html。
unzip latest.zip
mv grav/ html/
现在回到 root 权限并将组所有者更改为 www-data。
exit
cd /home/grav/www
sudo chown -R grav:www-data html/
Grav 现在由 grav 用户下载并安装在 /home/grav/www/html 目录中。
第 5 步 - 配置 Grav 虚拟主机
在这一步中,我们将为 Grav 配置 Nginx 虚拟主机。我们将在 sites-available 目录中创建一个名为 grav 的新虚拟主机文件,然后激活 Grav 虚拟主机。
转到 /etc/nginx 配置目录并使用 vim 编辑器创建一个新文件 grav。
cd /etc/nginx
vim sites-available/grav
将以下 Grav Nginx 虚拟主机配置粘贴到那里。
server {
## Define Index
#listen 80;
index index.html index.php;
## Web root and Domain Name
root /home/grav/www/html;
server_name grav.hakase-labs.co;
## Begin - Index
# for subfolders, simply adjust the rewrite:
# to use `/subfolder/index.php`
location / {
try_files $uri $uri/ /index.php?$query_string;
}
## End - Index
## Begin - PHP-FPM Configuration
location ~ \.php$ {
# Choose either a socket or TCP/IP address
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
# 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
## Begin - Security
# deny all direct access for these folders
location ~* /(.git|cache|bin|logs|backups)/.*$ { return 403; }
# deny running scripts inside core system folders
location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
# deny running scripts inside user folder
location ~* /user/.*\.(txt|md|yaml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
# deny access to specific files in the root folder
location ~ /(LICENSE|composer.lock|composer.json|nginx.conf|web.config|htaccess.txt|\.htaccess) { return 403; }
## End - Security
}
保存并退出。
接下来,激活虚拟主机并测试 nginx 配置。
ln -s /etc/nginx/sites-available/grav /etc/nginx/sites-enabled/
nginx -t
注意:确保在测试配置后没有出现 Nginx 错误。
现在重启 Nginx 和 PHP-FPM 服务。
systemctl restart nginx
systemctl restart php7.0-fpm

Nginx Grav 虚拟主机的配置已经完成。
第 6 步 - 测试
打开您的网络浏览器并输入您的 Grav 站点域名,我的是 http://grav.hakase-labs.co/
您将获得默认的 Grav 主页,如下所示。

在 Ubuntu 16.04 上使用 PHP-FPM 和 Nginx Web 服务器安装 Grav Flat CMS 已成功完成。
参考
- https://learn.getgrav.org/