RHEL 9中Hexo使用笔记
RHEL 9中安装Hexo
我的Hexo博客是运行在RHEL 9系统中,以下操作都是针对RHEL 9系统记录。文中路径使用了/var/www/html
以举例说明,请自行更新该路径参数。
安装Node.js
Hexo需要使用Node.js,所以安装前需要预先安装这两个软件:
1 |
|
安装Hexo:
1 |
|
安装git(选装)
1 |
|
初始化博客文件夹
选择一个目标文件夹,这里以/var/www/html
为例
1 |
|
执行完init命令后,Hexo会在当前路径下创立一个新的文件夹(/var/www/html/blog
)并添加如下文件或文件夹到此文件夹中
1 |
|
_config.yml
是博客的主配置文件,需要修改里面的url:
1 |
|
修改完后,就可以执行genrate命令来生成静态文件了:
1 |
|
到此为止,一个最简单的blog就创建完毕了,之后就可以设置Apache或者Nginx使它可以访问了。
配置Nginx指向public文件夹
1 |
|
配置tag和category
每篇文章里都可以在它的Front matter区域添加tags和categories属性来标识这篇文章。我使用的Fluid主题里已经包含了tags和categories页面,所以不需要额外手动创建这两个页面。每次使用hexo g
命令生成网站内容时,Hexo会自动更新这两个页面内容。对于别的主题,如果没有包含这两个页面,则需要手动创建,进行如下操作:
1 |
|
在生成的md文件里,修改下面的部分, 添加type: “tags”到内容中,添加后是这样的:
1 |
|
类似操作,添加categories页面:
1 |
|
在生成的md文件里,修改下面的部分, 添加type: “categories”到内容中,添加后是这样的:
1 |
|
RHEL 9设置public文件夹访问权限设置以解决403/404错误
RHEL 9正在运行的SELinux默认会阻止web服务器(如Nginx)从非标准目录(如/home/user/)提供内容,所以仅仅更改上面blog的public文件夹的读写权限是不够的。还需要确保SELinux策略允许web服务器访问这些文件。如果不这样做,即使文件权限正确,web服务器也可能由于SELinux策略而无法访问这些文件,导致错误,如404 Not Found。
1 |
|
这两条命令的详细解释放在文末。第一次使用时需要运行上述两条命令,之后每次执行完hexo g
之后只需运行第2条命令即可。
安装Fluid主题
默认的landscape主题很简单,网上搜索试用了一下,发现这个Fluid主题开发比较完备,界面美观,文档也比较全,因此我决定使用Fluid主题。
1 |
|
定制Fluid主题
Fluid主题的定制将在另一篇博文定制Fluid主题里详细展开。
RHEL 9设置public文件夹访问权限设置以解决403/404错误
RHEL 9正在运行的SELinux默认会阻止web服务器(如Nginx)从非标准目录(如/home/user/)提供内容,所以仅仅更改上面blog的public文件夹的读写权限是不够的。还需要确保SELinux策略允许web服务器访问这些文件。如果不这样做,即使文件权限正确,web服务器也可能由于SELinux策略而无法访问这些文件,导致错误,如404 Not Found。
1 |
|
这里稍加解释上面第1条命令:
- semanage: 这是SELinux策略管理工具的一部分,用于管理SELinux的配置。
- fcontext: 这代表 “file context”,即文件上下文。这个选项告诉 semanage 您要管理的是文件或目录的安全上下文。
- -a: 这个选项代表“添加”(add)。正在添加一个新的规则。
- -t httpd_sys_content_t: 这里指定了要应用的SELinux类型。httpd_sys_content_t 是一个特定类型,允许web服务器(如Nginx)读取内容。这是确保Nginx可以正常访问并提供这些文件的关键部分。
- “/var/www/html/blog/public(/.*)?”: 这是应用新上下文的文件或目录的路径。括号和问号构成了一个正则表达式,这意味着规则将应用于 /var/www/html/blog/public 目录及其下的所有文件和子目录。
第2条命令是用于修复或重置文件和目录的 SELinux 安全上下文的。这个命令非常有用,尤其是在更改了文件系统结构或复制了文件到新位置时,这时文件的SELinux上下文可能不再正确。以下是该命令各部分的详细解释:
restorecon: 这是一个SELinux工具,用于根据SELinux策略恢复或应用正确的安全上下文到文件和目录。它主要依据 /etc/selinux/targeted/contexts/files/file_contexts 中的规则来操作。
-R: 这个选项告诉 restorecon 递归地处理指定目录下的所有文件和子目录。没有这个选项,restorecon 仅作用于单个文件或目录。
-v: 这个“冗余”选项使命令输出更详细的信息,显示哪些文件的上下文被更改了。如果没有使用 -v 选项,restorecon 将静默执行,不显示任何输出。
/var/www/html/blog/public: 这是目标路径,restorecon 将会应用于此路径及其下所有文件和目录的正确的SELinux上下文。需根据实际情况替换成相应的路径。
这个命令通常在以下情况下使用:
- 复制或移动文件:当你复制或移动文件到一个新位置时,这些文件保留了原来的SELinux上下文标签,这可能会导致访问控制问题。使用 restorecon 可以确保这些文件获得新位置所需的正确SELinux上下文。
- 更改系统策略:当系统的SELinux策略发生更改时,可能需要更新系统文件的上下文以匹配新策略。
- 解决SELinux引起的问题:如果你遇到由于SELinux上下文不正确导致的权限问题,比如服务无法读取配置文件,restorecon 可以用来尝试快速修复这些问题。
注意:
- 在执行 restorecon 命令前,确保你了解目标文件或目录的正确SELinux上下文。错误的SELinux策略可能导致系统服务无法正常工作。
- 如果你不确定执行该命令的后果,可以先使用 -n 选项进行模拟运行。这个选项会显示哪些更改会被应用,但不实际执行它们:
1
restorecon -Rvn /var/www/html/blog/public