PyroCMS是一个基于PHP和Laravel框架的开源内容管理系统(CMS)。它是一个功能强大的CMS,使用MySQL/MariaDB作为数据库,并提供直观简便的Web管理界面,方便进行内容管理。

本教程将指导你在Ubuntu 24.04上使用LEMP技术栈(Linux、Nginx、MySQL/MariaDB和PHP-FPM)以及Composer安装PyroCMS。

前提条件

在开始之前,请确保你具备以下条件:

- 一台Ubuntu 24.04服务器。
- 一个具有管理员权限的非root用户。
- 一个已指向服务器IP地址的域名。

安装依赖项

PyroCMS是一个基于Laravel的内容管理系统,使用MySQL/MariaDB作为数据库。在安装PyroCMS之前,你需要在Ubuntu系统上安装LEMP技术栈和Composer。

首先,运行以下apt命令更新软件包索引并安装LEMP技术栈和Composer。

sudo apt update && sudo apt install nginx mariadb-server composer php-cli php-fpm php-mysql php-curl php-sqlite3 php-mbstring php-gd php-xml

输入Y确认安装。

安装依赖包

安装完成后,检查LEMP技术栈服务以确保它们正常运行。

使用以下systemctl命令检查Nginx Web服务器。

sudo systemctl is-enabled nginx
sudo systemctl status nginx

检查Nginx状态

现在使用以下命令检查MariaDB服务器状态:

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

检查MariaDB状态

接下来,运行以下命令检查PHP-FPM服务。

sudo systemctl is-enabled php8.3-fpm
sudo systemctl status php8.3-fpm

检查PHP-FPM状态

最后,使用以下命令检查Composer版本。你会看到已安装的Composer版本。

sudo -u www-data composer --version

检查Composer版本

配置PHP-FPM

安装完依赖项后,你将通过修改php.ini文件中的默认配置并重启PHP-FPM服务来配置PHP-FPM。

使用nano编辑器打开PHP-FPM的php.ini文件。

sudo nano /etc/php/8.3/fpm/php.ini

将默认配置修改为以下内容,并根据你当前的环境调整date.timezone和memory_limit选项。

date.timezone = Europe/Amsterdam
max_execution_time = 130
memory_limit = 256M
allow_url_fopen = On
allow_url_include = Off
post_max_size = 128M
upload_max_filesize = 128M
max_input_vars = 5000

完成后,保存文件并退出编辑器。

现在运行以下systemctl命令重启PHP-FPM服务,使php.ini的更改生效。

sudo systemctl restart php8.3-fpm

配置MariaDB服务器

配置完PHP-FPM后,你将保护MariaDB服务器安装并创建新的数据库和用户供PyroCMS使用。

使用以下mariadb-secure-installation命令保护MariaDB服务器安装。

sudo mariadb-secure-installation

你将被询问以下配置项:

- 切换到unix_socket认证?输入n并按回车。
- 默认的MariaDB root用户已被保护。你可以输入y启用。
- 更改root密码。输入y确认并设置新的MariaDB root密码。
- 移除匿名用户?输入y确认。
- 禁止root远程登录?输入y确认。
- 移除测试数据库?输入y确认并删除默认的test数据库。
- 最后,再次输入y重新加载所有表权限并应用新更改。

配置完MariaDB后,你将创建PyroCMS的新数据库和用户。

使用以下mariadb命令登录MariaDB服务器。出现提示时输入root密码。

sudo mariadb -u root -p

现在运行以下查询创建新数据库pyrocmsdb、新用户pyrocms@localhost,密码为passw0rd。根据需要更改数据库名、用户名和密码。

CREATE DATABASE pyrocmsdb;
GRANT ALL PRIVILEGES ON pyrocmsdb.* TO pyrocms@localhost IDENTIFIED BY 'passw0rd';
FLUSH PRIVILEGES;

创建数据库和用户

接下来,运行以下查询验证用户pyrocms@localhost的权限。你会看到pyrocmsdb数据库可被用户pyrocms@localhost访问。

SHOW GRANTS FOR pyrocms@localhost;

查看数据库权限

最后,输入quit退出MariaDB服务器。

下载PyroCMS源代码

创建Composer和PyroCMS的新目录,进入/var/www/pyrocms,然后将新目录的所有权更改为用户www-data。在这种情况下,/var/www/pyrocms将用作PyroCMS的文档根目录。

mkdir -p /var/www/{.config,.cache,pyrocms}; cd /var/www/pyrocms
sudo chown -R www-data:www-data /var/www/{.config,.cache,pyrocms}

现在运行以下composer命令下载PyroCMS源代码,并安装和更新PHP依赖。

sudo -u www-data composer create-project pyrocms/pyrocms .
sudo -u www-data composer update

以下是通过composer命令安装PyroCMS的过程:

通过Composer下载安装PyroCMS

安装完成后,继续下一步。

设置Nginx服务器块

在本节中,你将为PyroCMS安装创建新的Nginx服务器块配置。确保你有一个已指向Ubuntu服务器IP地址的域名。本例中使用域名howtoforge.local。

使用nano编辑器创建新的Nginx服务器块配置文件/etc/nginx/sites-available/pyrocms.conf。

sudo nano /etc/nginx/sites-available/pyrocms.conf

复制并粘贴以下配置,确保将server_name更改为你的域名。

server {
    listen 80;
    server_name howtoforge.local;

    index index.php index.html;
    root /var/www/pyro/public;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php-8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
    }
}

完成后,保存并退出文件。

现在运行以下命令创建pyrocms.conf文件的符号链接到/etc/nginx/sites-enabled目录,并验证Nginx语法。

sudo ln -s /etc/nginx/sites-available/pyrocms.conf /etc/nginx/sites-enabled/
sudo nginx -t

配置Nginx

如果Nginx语法正确,你将看到输出"test is successful - syntax is ok"。

最后,运行以下systemctl命令重启Nginx Web服务器使更改生效。

sudo systemctl restart nginx

使用Let's Encrypt为PyroCMS配置HTTPS

为了保护PyroCMS安全,你将通过Let's Encrypt实现HTTPS。为此,你需要安装Certbot来生成SSL/TLS证书并自动在PyroCMS安装中实现HTTPS。

使用以下命令安装certbot和python3-certbot-nginx软件包。输入Y确认安装。

sudo apt install certbot python3-certbot-nginx

现在运行以下certbot命令生成SSL证书并使用HTTPS保护PyroCMS。

sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email admin@example.com -d example.com

过程完成后,你的证书将保存在/etc/letsencrypt/live/domain.com目录中,PyroCMS现已通过HTTPS保护。

使用Web安装程序安装PyroCMS

打开Web浏览器并访问你的域名(例如https://howtoforge.local/)。你将看到PyroCMS安装页面:

PyroCMS安装页面

- 选择"I Agree"接受PyroCMS的许可证。
- 输入数据库名、用户和密码。
- 输入新的管理员用户、电子邮件地址和密码。
- 输入站点详细信息,如域名、语言和时区。
- 点击"Install"确认安装。

安装完成后,你将看到以下页面:

安装完成

点击"View Site"访问PyroCMS首页。你将看到PyroCMS的默认首页。

PyroCMS默认首页

点击"Login"进入PyroCMS登录界面。输入管理员用户名和密码,然后点击"Login"。

PyroCMS登录页面

如果成功,你将看到PyroCMS管理仪表盘。

PyroCMS管理仪表盘

总结

恭喜!你已完成在Ubuntu 24.04服务器上安装PyroCMS。你已经使用LEMP技术栈安装了PyroCMS,并通过Composer下载了PyroCMS,同时通过Certbot和Let's Encrypt为PyroCMS配置了HTTPS安全连接。