首先查看PageKit CMS-清洁,可扩展,快速,但...
Pagekit CMS 1.0 版本评测:轻量级博客引擎的潜力与不足
Pagekit CMS 最近发布了 1.0 版本,作为一名关注个人博客引擎的用户,我决定对其进行一番测试。虽然 Pagekit 的功能远不止博客,但将其作为测试平台已足够。
核心要点
- Pagekit CMS 提供了一个简洁、可扩展且快速的平台,适用于个人博客及更多用途,并拥有用户友好的界面和开发者友好的生态系统。
- 安装过程流畅,平台原生支持 Markdown,内置博客扩展,并提供扩展和主题的市场。
- Pagekit 的安全性严重依赖于服务器设置,缺乏内置的 PHP 端安全检查,这可能会限制其跨平台适应性,除非进行重大修改。
- 尽管 Pagekit 拥有诸多优点,但目前仍缺乏数据导出功能,限制了内容的可移植性,其市场也仍处于发展初期。
安装
注意:我们将使用 Homestead Improved 作为测试环境。所有命令(如有)都将基于此环境列出。如有必要,请根据您自己的操作系统进行调整。
安装方法是下载并解压其存档文件,然后将 Web 服务器指向新创建的文件夹。Pagekit 将立即显示安装界面。
经过简短但极其流畅的安装过程后,我们将进入仪表板。
从仪表板,我们可以访问网站的其他所有部分,例如管理用户、配置新页面和路由、安装主题和扩展、处理小部件等等。
默认情况下,权限/角色子系统功能有限,仅支持已认证用户、管理员和访客,但这对于我们在此测试的博客来说已经足够了。如有需要,以后可以在“角色”屏幕中添加更多角色。
Pagekit 博客设置
自定义页面
首先,让我们设置一个“关于”页面。如果我们进入“站点”,然后进入“页面”,就可以设置一个新页面。方便的是,Pagekit 原生支持 Markdown,因此我们可以用它来编写内容。
页面(以及指向它的链接)将立即出现在我们网站的首页:
博客
然后,要设置博客,我们需要安装博客扩展。幸运的是,它已作为默认扩展存在,并可在主菜单中访问。其中还有一个示例帖子:“Hello Pagekit”。
作为开发者,我需要编写大量代码片段,因此查看这些代码片段在帖子中的显示方式至关重要。让我们修改示例帖子,加入一些技术内容和一两张图片。我将使用之前发表在 SitePoint 上的一篇帖子。
看起来不错——比默认主题的预期效果要好得多——但只有内联代码似乎被高亮显示了。其余部分是纯文本。让我们看看如何解决这个问题。
扩展
Pagekit 配备了一个很棒的市场,虽然目前还比较空,但扩展/主题的安装/下载过程非常完善。它简单易用,而且相对容易开发,不会将开发的包变成一团糟的意大利面条代码。
方便的是,市场中已经有一个 Highlight 扩展,显然是为开发者从第一天就开始准备的。
安装很简单,而且让每个 PHP 开发者都高兴的是,它是通过 Composer 完成的。
只需刷新博客帖子的渲染,即可看到它的作用——它会自动启用!
好多了!
自定义主题
不过,默认主题有点太标准了。它很漂亮,但是随着越来越多的人使用 Pagekit,网站开始看起来很相似,变得有点太容易识别了——就像“Bootstrap 瘟疫”一样。让我们安装另一个主题。最小化主题看起来很棒,所以让我们使用它。
不到一分钟,整个过程就完成了——主题已安装并激活,刷新网站即可看到效果。
当然,它远不如演示版漂亮,但是当内容差异如此之大的时候,人们很难期待这一点。一些小的修改就能解决这个问题。
漂亮网址
在未激活重写模块的 Apache 服务器和 Nginx 上,Pagekit 网址默认为包含 index.php 的丑陋网址。要在 Apache 上获得漂亮的网址,需要启用该模块——请参阅您的服务器设置文档。在 Nginx 中,Homestead Improved 的默认设置将支持漂亮的网址(即它们将工作),但是 Pagekit 默认情况下不会在内部启用它们,因为它无法检测到它们已启用。为了欺骗它,我们可以向服务器配置中添加一个自定义值:
<code>fastcgi_param HTTP_MOD_REWRITE On;</code>
一旦我们使用 sudo service nginx restart 重启服务器,这将使 Pagekit 认为 Apache 的重写模块已启用,这反过来又会在整个系统中激活漂亮的网址。下面是一个完整的示例服务器配置:
<code>server { listen 80; listen 443 ssl; server_name pagekit.app; root "/home/vagrant/Code/pagekit"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } access_log off; error_log /var/log/nginx/pagekit.app-error.log error; sendfile off; client_max_body_size 100m; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTP_MOD_REWRITE On; fastcgi_intercept_errors off; fastcgi_buffer_size 16k; fastcgi_buffers 4 16k; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; } location ~ /\.ht { deny all; } }</code>
安全性
奇怪的是,Pagekit 违背了最佳实践,将应用程序的入口点 (index.php) 放入根文件夹而不是公共子文件夹中。在 Nginx(以及不读取本地 .htaccess 文件的 Apache)上,这具有严重的安全隐患,因为它允许任何人通过 URL 栏访问关键文件(例如 pagekit.db——网站的整个数据库),只需键入 mypagekit.com/pagekit.db 即可。
为了解决这个问题,我们需要使用几乎逐字从它们的 .htaccess 文件中提取的一行非常原始的代码进一步修改服务器脚本。在 location ~ .php$ { 之上添加以下内容:
<code>location ~ /(composer.lock|pagekit.db|installed.json|composer.json|package.json|bower.json|CHANGELOG.md|README.md|gulpfile.js|webpack.config.js|pagekit) { deny all; }</code>
这是一个极其原始和老式的解决方案,但它有效。我们只能希望 Pagekit 团队在不久的将来能够摆脱这种文件夹结构。
部署 Pagekit 网站
鉴于 Pagekit 默认使用 SQLite 作为数据库,并且数据库文件保存在同一文件夹中,因此部署 Pagekit 网站就像上传静态网站一样简单。可以使用 Laravel Forge 和原始 DigitalOcean Github 方法在此处找到完整的操作指南,您可以选择其中一种!
结论
乍一看,Pagekit 似乎是其他 CMS 的一个不错的替代品。用户界面很棒,其开发者生态系统非常友好,其插件系统构建良好,并且经久耐用。它包含一些很不错的默认功能,例如帖子复制、Markdown、UI 中的 VueJS、网站和博客/评论方面的足够默认设置,以及当前设置中缺少的所有内容都可以轻松地使用扩展添加。
但是,它也并非没有缺点。
首先,其安全性依赖于用户对服务器的设置情况,这意味着如果没有进行大量的修改,它就不像应该的那样具有跨平台性——我们都知道 Nginx 和 Apache 配置文件并不是最直观的编辑文件。此外,内置的 PHP 服务器实际上不能用于正确测试它,这限制了某些机器上的“试用”因素,并且在开发生产就绪的 PHP 原生服务器方面肯定削弱了应用程序的功能,如果它真的被开发出来的话。Pagekit 团队绝对应该加入一些 PHP 端安全检查,并避免尝试使用 .htaccess 文件。
其次,目前无法从数据库导出数据。这使得在用户对 SQLite 感到厌倦后将应用程序移植到 MySQL 变得不切实际,并且限制了内容的可移植性——想象一下,在 SQLite 中本地设置所有内容并编写帖子,然后将数据上传到使用 MySQL 的实时应用程序中。
最后,我们还可以列出无法设置完全自定义存储(目前仅在本地保存静态文件——但这可以通过扩展来完成)和较短的会话生命周期(这可以通过简单的 keepalive ping 来解决),但这确实是很小的抱怨。
市场仍然相当空,但我毫不怀疑,一旦事情开始发展,它就会迅速发展——我们即将推出的教程一定会对此有所帮助——但它是一个“WordPress 杀手”吗?还不是。它肯定比 Ghost 等竞争者更有潜力,但它需要专注于完善 MVP,而不是为了取悦大众而从 MVP 中删除 M。我们需要一个功能更少、易于扩展但默认状态下运行完美的 CMS。
您尝试过 Pagekit 吗?您对它有什么看法?请在评论中告诉我们!
关于 Pagekit CMS 的常见问题
Pagekit CMS 与其他 CMS 平台有何不同?
Pagekit CMS 因其简洁性、可扩展性和速度而脱颖而出。它使用 Vue.js 和 Symfony 组件等现代技术构建,这使其成为开发人员的强大工具。它还具有简洁直观的界面,使非技术用户也能轻松管理其内容。此外,Pagekit 是开源的,这意味着它会不断得到开发人员社区的改进。
如何安装 Pagekit CMS?
安装 Pagekit CMS 非常简单。您可以从官方网站或 GitHub 存储库下载它。下载后,将文件解压到您的 Web 服务器目录。然后,导航到您的网站 URL,安装向导将引导您完成设置过程。您需要提供您的数据库详细信息并创建一个管理员帐户。
我可以将 Pagekit CMS 用于电子商务吗?
是的,您可以将 Pagekit CMS 用于电子商务。虽然它没有内置的电子商务功能,但您可以将其与 Snipcart(一个强大的电子商务解决方案)集成。使用 Snipcart,您可以向您的 Pagekit 网站添加购物车,并管理您的产品、订单和客户。
如何自定义我的 Pagekit 网站的外观?
Pagekit CMS 支持主题,允许您自定义网站的外观。您可以从 Pagekit 市场提供的各种免费和付费主题中进行选择。此外,如果您了解 HTML、CSS 和 JavaScript,则可以创建您自己的主题。
我可以使用 Pagekit CMS 构建哪些类型的网站?
Pagekit CMS 功能多样,可用于构建各种网站,从博客和作品集到企业网站和在线商店。其可扩展性允许您通过模块向网站添加功能,其强大的内容管理功能使您可以轻松管理您的内容。
Pagekit CMS 安全吗?
是的,Pagekit CMS 是安全的。它使用现代技术构建,并遵循最佳安全实践。它包括 CSRF 保护、密码哈希和安全 Cookie 等功能。但是,与任何其他 CMS 一样,务必保持更新并遵循良好的安全实践以保护您的网站。
如何扩展我的 Pagekit 网站的功能?
您可以通过安装扩展来扩展 Pagekit 网站的功能。扩展就像插件一样,可以向您的网站添加新功能。您可以在 Pagekit 市场找到各种扩展,从 SEO 工具和社交媒体集成到联系表单和图库。
Pagekit CMS 是否支持多语言网站?
是的,Pagekit CMS 支持多语言网站。您可以创建多种语言的内容,并使用内置的多语言支持轻松管理它。您还可以安装语言包来翻译管理界面。
我可以将我的现有网站迁移到 Pagekit CMS 吗?
将现有网站迁移到 Pagekit CMS 可能是一个复杂的过程,具体取决于您当前使用的平台。没有内置的迁移工具,因此您需要手动移动您的内容并配置您的新 Pagekit 网站。但是,Pagekit 的简洁性和灵活性可能会使这项工作值得付出。
Pagekit CMS 是否有社区或支持?
是的,有一个充满活力的开发人员和用户社区支持 Pagekit CMS。您可以在官方网站、GitHub 存储库和社区论坛上找到帮助和资源。在线还有许多教程和指南可以帮助您开始使用 Pagekit。
以上是首先查看PageKit CMS-清洁,可扩展,快速,但...的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

PHP8.1中的枚举功能通过定义命名常量增强了代码的清晰度和类型安全性。1)枚举可以是整数、字符串或对象,提高了代码可读性和类型安全性。2)枚举基于类,支持面向对象特性,如遍历和反射。3)枚举可用于比较和赋值,确保类型安全。4)枚举支持添加方法,实现复杂逻辑。5)严格类型检查和错误处理可避免常见错误。6)枚举减少魔法值,提升可维护性,但需注意性能优化。

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。
