如何在 Ubuntu 20.04 上使用 Nginx 安装 Craft CMS
本教程适用于这些操作系统版本
- Ubuntu 20.04(Focal Fossa)
- Ubuntu 18.04(仿生海狸)
在此页
- 先决条件
- 开始
- 更新您的系统
- 安装依赖项
Craft CMS 是一个免费的开源网站内容管理系统。在庞大且不断壮大的开发人员和设计人员社区的支持下,它提供了一系列创新功能和优雅的设计,使其易于使用。它还允许您控制网站开发的各个方面。
它是 WordPress 和 Drupal 的绝佳替代品,这两个是当今最流行的内容管理系统。
内容管理系统 (CMS) 是用于简化 Web 内容管理的软件,例如编辑内容或添加新页面和图片。如果您需要使用 HTML 或其他标记语言在代码中单独创建每个页面,那么运营网站可能会很困难;如果您有多个人同时在您的网站上工作,这可能会导致问题,因为可能无法就某些元素的外观或行为达成一致。
使用 CMS,您可以设置每个页面的一般结构以及特定元素,例如博客文章或产品描述;然后当其他人需要编辑该信息时,他们只需要使用 CMS。
本指南展示了如何在 Ubuntu 20.04 LTS (Focal Fossa) 上安装 Craft CMS。它将向您展示如何在您的 Ubuntu 服务器上安装 Craft CMS。如果你想使用 MySQL/MariaDB 数据库,那么本指南也将帮助你安装它。
无论您使用的是哪个发行版和版本,在 Ubuntu 上安装 Craft CMS 的过程都是相似的,因此即使您的系统略有不同,您也应该能够遵循本指南。本教程是在全新安装 Ubuntu 的情况下创建的;但是,根据您当前的服务器设置,某些步骤可能会略有不同。
先决条件
要遵循本指南,您需要做一些事情:
- 运行 Ubuntu 20.04 LTS 的服务器。
- 在您的 Ubuntu 服务器上设置具有 sudo 权限的非根用户。
入门
更新您的系统
首先,通过运行以下命令以非 root 用户身份登录到您的服务器:
ssh _instance_ip
用户名为 root,你使用 SSH 协议连接到服务器 instance_ip
your_instance_ip 是将安装 Craft CMS 的服务器的私有 IP 地址。
通过运行以下命令更新您的操作系统:
sudo apt update && sudo apt upgrade -y
运行 sudo apt update 以确保您的 Ubuntu 系统是最新的。此命令将使 Ubuntu 从 Ubuntu 存储库下载新的 Ubuntu 软件包并将它们安装在您的 Ubuntu 操作系统上。 Ubuntu 使用存储库(或更准确地说,\存储库\),这是 Ubuntu 从中获取所有应用程序的软件分发中心。
sudo apt upgrade 是一个用于更新和升级 Ubuntu 软件的 Ubuntu 命令。这会升级您的 Ubuntu 软件,包括更新 Ubuntu 核心、已安装的软件包和任何新版本的 Ubuntu 软件。
-y 是 --yes 的缩写形式。 Ubuntu 命令 apt upgrade -y 意味着 Ubuntu 将自动对任何 Ubuntu 软件更新请求说“是”。
如果在执行此命令时出现任何错误,您可能需要使用 Ubuntu 软件中心或通过终端修复错误。您可以通过键入 sudo apt-get -f install 并按照 Ubuntu 软件中心中的说明修复所有问题来执行此操作,或者您可以使用终端命令“sudo dpkg --configure -a”修复错误,然后重新- 运行上面的命令。
sudo apt-get -f install
sudo dpkg --configure -a
示例输出:
安装依赖项
通过运行以下命令安装依赖项:
sudo apt install -y curl wget vim git unzip socat
curl 用于 Ubuntu 从 Ubuntu 存储库下载 Ubuntu 更新。 wget 是 Ubuntu 和其他 Linux 操作系统支持的免费软件,用于使用 HTTP、HTTPS 和 FTP 协议获取文件。
vim 是一种流行的基于 Unix 的文本编辑器,几乎可以在所有 Unix 系统和 Microsoft Windows 上运行。
Ubuntu 使用 unzip 从 ZIP 文件中提取文件。
Ubuntu 使用 socat,一个基于命令行的实用程序,在使用标准输入和输出流或文件时打开两个不同应用程序之间的连接。
示例输出:
安装 LEMP 服务器
Craft CMS 是用 PHP 编写的,使用 MySQL/MariaDB 作为数据库引擎。我们将配置 Ubuntu 以使用“LEMP 堆栈”一起使用它。 LEMP 堆栈是 Linux、Nginx 网络服务器、MySQL/MariaDB 数据库引擎和 PHP 编程语言的首字母缩写词。
首先,通过在终端中运行以下命令来安装 Nginx 和 MariaDB 服务器:
sudo apt-get install nginx mariadb-server -y
示例输出:
两者安装完成后,您可以通过在终端中运行以下命令来安装 PHP:
sudo apt-get install php php-cli php-fpm php-common php-curl php-gd php-imagick php-json php-mbstring php-mysql php-pgsql php-zip php-intl php-xml -y
php-cli是PHP的命令行界面,过去默认的包名是“php5”。现在它重命名为 \php\。
php-fpm 是 php-cgi 的 -wait 版本。它可以很好地处理并发请求,并且在代理服务器后面使用很有用。
php-common 用于其他模块所需的公共库,例如,当我们安装 \php\ 时,会自动安装 php-json。
php-curl 是一个通过 cURL(发送 HTTP 请求的命令行工具)访问 URL 的模块。
注意:Ubuntu 使用 Ubuntu 软件中心来安装 Ubuntu 软件。但是,Ubuntu 软件中心无法下载或安装 Craft CMS 所需的某些 Python 包(virtualenv 等)等第三方软件。在 Ubuntu 软件中心,您需要手动将此处找到的命令复制并粘贴到终端窗口中,然后按照说明进行操作。
安装所有包后,编辑 Ubuntus 目录 etc/php/7.4/fpm 中的 php.ini 文件:
sudo nano /etc/php/7.4/fpm/php.ini
更改文件中的以下配置:
memory_limit = 512M post_max_size = 32M upload_max_filesize = 32M date.timezone = Asia/Kolkata
craft CMS 需要 memory_limit=512M,在 Ubuntu 20.04 LTS 中,PHP 无法自行更改 memory_limit,因此我们应该在 php.ini 文件中手动更改它。
通过CMS上传图片文件需要post_max_size=32M和upload_max_filesize=32M,Ubuntu 20.04 LTS在Ubuntu的php.ini文件中默认将post_max_size和upload_max_filesize设置为16M,Craft CMS需要32M。
Craft CMS 还需要 date.timezone=Asia/Kolkata 才能在 Ubuntu 20.04 LTS 中正确显示时间。 Ubuntu 20.04 LTS 默认使用 UTC-5 作为时区,Craft CMS 要求时区为 UTC+05:30(印度标准时间)。
编辑 php.ini 文件后,保存并关闭文件,然后重启 Ubuntu 的 PHP-FPM 服务:
sudo systemctl restart php7.4-fpm
要检查 Ubuntu 的 PHP-FPM 服务的状态,请输入以下命令:
sudo systemctl status php7.4-fpm
示例输出:
现在您已准备好 LEMP 服务器,我们将进行下一步。
创建数据库
现在我们将为 Craft CMS 创建一个数据库。打开 Ubuntu 的 MySQL 控制台:
sudo mysql -u root -p
-p 表示密码。如果你想通过 root 用户连接,只需要写 -u root 然后按 Enter 键而不输入任何其他特定信息。
输入您在安装 Ubuntu 时设置的密码。然后执行以下命令创建一个名为 craftdb 的数据库:
CREATE DATABASE craftdb;
GRANT ALL ON craftdb.* TO 'craftuser' IDENTIFIED BY 'mypassword';
FLUSH PRIVILEGES;
EXIT;
要使用这个数据库,我们需要连接到它。所以我们创建了一个名为 craftuser 的用户。我们使用 IDENTIFIED BY 而不是 VALUES 因为我们告诉 MySQL 只使用数据库而不是任何其他数据。用您选择的安全密码替换单词 mypassword。
FLUSH PRIVILEGES 是丢弃本次会话中所有未提交的事务。
安装 Craft CMS
要安装Craft CMS,我们首先需要安装最新版本的Composer。因为 Ubuntu 不支持在其系统中使用 gem。我们只能使用 Composer 安装 Craft CMS。运行以下命令来安装 Composer:
sudo curl -sS https://getcomposer.org/installer -o composer-setup.php
-s 打开静默模式。默认情况下,curl 不显示输出,因为它沿着 -s,您可以传递要解析的 url。在这种情况下,我们告诉 curl 获取 URL https://getcomposre -s,我们添加标志以下载文件(即 https://getcomposer.org/installer)并保存 URL,即 -o 标志告诉 curl 将下载的文件写入 composer-setup.php
接下来,通过运行以下命令安装 Composer:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
需要 php 命令来告诉计算机您要执行此 PHP 脚本 sudo composer-setup.php --install-dir=/usr/local/bin --filename=composer
install-dir 是 Composer 的目标路径。在本例中是 /usr/local/bin。如果您不希望所有用户都可以访问该文件,请使用 ./ 或 ./。此外,此目录必须具有执行权限。
--filename 标志是 Composer 将被安装的文件的名称。
如果您不知道放在哪里,可以将文件复制到您选择的任何目录或在 --filename 之后指定它
安装 Composer 后,使用以下命令验证安装的版本:
composer --version
示例输出:
接下来,为您的 Craft CMS 项目创建一个目录。我们在 /var/www/html/ 目录下创建一个名为 craft 的目录。我们将使用此目录作为我们的 Web 根目录。也就是说,我们创建的所有文件或 Craft CMS 提供的所有页面都将从 Web 根目录访问。
mkdir /var/www/html/craft
接下来,进入 craft 目录并使用 Composer 安装 Craft CMS:
cd /var/www/html/craft
composer create-project craftcms/craft
注意:如果您使用的 Craft 版本低于 0.97,请将 create-project 替换为 install。
警告:这将覆盖目录中的任何现有文件。
如果您想为您的 Craft CMS 使用不同的目录,您可以指定选项 --prefer-dist。
如果您的托管服务提供商不允许将文档根目录更改为 /var/www,那么强烈建议将 Craft 安装到 webroot 的子目录中,例如:mkdir craft 并运行 composer create-project craftcms/craft craft。
示例输出:
您将被要求提供数据库详细信息、用户名和管理密码。
您必须为 MYSQL 数据库提供一些用户凭据,以便 Craft 可以设置其内部安全密钥!主机名是 localhost,用户名是 craftuser,密码是您在上面创建 MySQL 数据库时选择的密码。
此时,Composer 应该能够在您的 webroot 结构 /var/www 中名为 craft 的目录中编译和安装 Craft。默认情况下,除非您启用了 HTTP 访问,否则无法通过 Internet 访问它。
接下来,为新安装的 Craft 目录设置适当的所有权:
chown -R www-data:www-data /var/www/html/craft
配置 Nginx
Nginx 用于处理来自直接发送给它的客户端的请求。它提供了一些额外的好处,例如很好地提供静态文件、缓存页面以及对这些页面进行 gzip 压缩。
sudo nano /etc/nginx/conf.d/craft.conf
使用以下行填充文件:
server {
listen 80;
server_name craft.example.com;
root /var/www/html/craft/web;
index index.php;
location / {
try_files $uri/index.html $uri $uri/ /index.php?$query_string;
}
location ~ [^/]\.php(/|$) {
try_files $uri $uri/ /index.php?$query_string;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTP_PROXY "";
}
}服务器名称:这是您服务器的域名或 IP 地址,客户端将使用它来解析他们需要从谁那里请求文件(在我们的例子中是 craft.example.com)。
文档根目录:这是 Craft CMS 核心资产所在的位置,包括 /var/www/html/craft 下的 web 和核心文件夹。您在此处看到的路径可能会有所不同,具体取决于您使用的 craft 版本或文件夹结构是否已更改。
Try_files $uri $uri/$uri :对于像 http://craft.example.com/index.php 这样的相对 URI 的任何请求,它将返回 index.php 文件,该文件通常位于您的 craft 安装的文档根目录中。
Location ~ [^/]\.php(/|$) :PHP 文件的正则表达式基本上意味着搜索以 .php 结尾的任何请求或匹配除/和 $之外的所有内容(它递归搜索)。
PHP-FPM 套接字位置:这是 Craft CMS 核心资产请求使用的,此值应与主配置文件 /etc/php/7.4{5,6}-fpm.conf 中的 php-fpm 套接字文件名相对应
保存并关闭文件,然后通过运行验证它是否正常工作:
sudo nginx -t
示例输出:
如果没有任何错误,您可以使用以下命令重新启动 Nginx:
sudo systemctl reload nginx
访问 Craft CMS
现在文件已配置,我们可以访问我们的 Craft CMS 安装。将浏览器指向 http://craft.example.com,您应该会看到欢迎屏幕:
单击转到您的控制面板,填写您的管理员详细信息,然后单击“登录”。您应该会看到默认仪表板。
如果您遇到这样的消息“503 Unavailable”:
确保您拥有最新的 Craft、Craft 主题和 Craft 插件更新。如果这没有帮助,请尝试接下来的步骤:确保 Crafts 文件夹权限是正确的,如本文所述。这些文件应归 root 所有,craft 不应对其任何文件夹具有写入权限。
结论
恭喜!现在您已经在 Ubuntu 20.04 上成功安装了 CraftCMS。让我们做一些网站!一如既往,请不要犹豫,在下方留下评论或建议。