如何在Ubuntu 16.04上使用Nginx安装Grav CMS
Grav是一个不需要数据库的现代Web应用程序。 这是一个基于文件的网络平台,简单,快速,需要零安装。 Grav使用现代技术,包括用于模板的Twig Templating,用于内容创建的Markdown,用于简单配置的YAML,用于性能层的Parsedown和Doctrine缓存等。该工具是用PHP编写的,带有强大的包管理系统,允许您管理Grav系统,包括安装和升级Grav本身,以及主题和插件。
在本教程中,我将逐步向您展示如何在Ubuntu 16.04上安装和配置Grav CMS。 由于Grav是基于PHP web应用程序的,我们需要在系统上安装PHP,为了获得更多性能,我们将使用带有Nginx网页浏览器的PHP-FPM。
先决条件
- Ubuntu 16.04
- 根特权
我们将要做什么:
- 安装Nginx
- 安装和配置PHP-FPM
- 安装PHP Composer
- 下载并安装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/
现在回到根本原则,并将组织所有者更改为“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安装已成功完成。