Hack and / - 你的个人服务器:博客

作者:Kyle Rankin

本专栏是关于如何在您自己的服务器上管理您自己的服务的系列文章的第三篇。在第一篇专栏中,我讨论了如何确保您的家庭网络准备好托管您自己的服务。在第二篇中,我介绍了 DNS,而在本专栏中,我将讨论人们通常放在云端但自己托管也很容易的服务之一:博客。

起初,我计划将本系列文章严格地专注于如何设置您自己的 Web 服务器,但我意识到现在大多数人不仅仅是设置 Apache 并上传一些静态 HTML。相反,大多数现代网站的构建方式都是使其内容动态生成,通常使用数据库中存储的数据。今天,如果您想在家中设置自己的 Web 服务器,您可能想要托管论坛、发布一些关于您自己的信息、分享一些图片,或者很可能管理您自己的博客,而不是仅仅一个基本的静态页面。

哪种风格最好?

存在许多不同类型的博客——从试图在 Web 上复制实体杂志功能的网站,到充当个人公共日记的网站,再到仅链接到其他有趣内容的网站。而且,Linux 下提供了同样多种不同的博客软件。每种类型的博客软件都有其优点和缺点,但为了本文的目的,我必须选择一个。我选择了 WordPress,因为它相对容易设置,并且拥有庞大的用户群,这意味着您应该更容易从社区获得支持。

我不仅要选择要介绍哪种博客软件,还要决定基础发行版。当涉及到 Apache 和 WordPress 时,尽管软件本身在主要 Linux 发行版中基本上是相同的,但软件的组织方式可能大相径庭。因为我的专栏的目标读者是以前从未设置过 Web 服务器的人,所以我将在这里使用 Ubuntu Server(特别是 10.04 LTS),因为我认为它组织 Apache 配置和 WordPress 的方式对于新的系统管理员来说是最友好的。

安装软件

该过程的第一步是安装 WordPress、Apache 以及此软件所需的所有依赖项。在现代 Linux 发行版上,这相对简单。在 Ubuntu 的情况下,只需在终端中键入以下内容

$ sudo apt-get install apache2 mysql-server wordpress

这些软件包将下载 Web 服务器软件、WordPress 将在此同一机器上访问的 MySQL 服务器以及 WordPress 本身及其所有依赖项。在安装过程中,系统将提示您为 MySQL root 用户选择密码。虽然您可以选择留空,但我建议您选择一个密码并将其记录在某处。如果您决定将其留空,您始终可以稍后为 root 用户添加密码,但在此处设置要简单得多。

Ubuntu Apache2 站点组织

Ubuntu(以及一般的基于 Debian 的发行版)下的 Apache2 具有一种有点独特的组织 Apache 配置的方式。如果您曾经在单个 Apache 实例(通常称为虚拟主机)上管理过多个网站,您就会知道有时组织每个站点的配置以及您需要 Apache 加载的所有模块是多么具有挑战性。在 Ubuntu 下,当前所有可用的虚拟主机和模块都将其文件存储在 /etc/apache2/sites-available 和 /etc/apache2/mods-available 下。任何已启用的虚拟主机或模块都设置为 /etc/apache2/sites-enabled 和 /etc/apache2/mods-enabled 下的符号链接。除了这种新的组织方式外,apache2 软件包还包含一组新工具来启用和禁用站点和模块。例如,如果您在 /etc/apache2/sites-available/foo 中添加了新的虚拟主机配置并想要启用它,您将键入

$ sudo a2ensite foo

该命令会在 /etc/apache2/sites-enabled 中为您创建必要的符号链接。同样,如果您想加载在 /etc/apache2/mods-available 下看到的名为 cgi 的模块,您将键入

$ sudo a2enmod cgi

要撤消上述两个命令,您将键入

$ sudo a2dissite foo
$ sudo a2dismod foo

虽然手动设置这些符号链接是可行的,但包含的命令无疑使它更清晰且更易于编写脚本。

设置您的 WordPress 虚拟主机

现在您已经熟悉了 Apache 如何在 Ubuntu 下组织文件,下一步是配置新的虚拟主机。事实证明,您可以通过多种不同的方式在 Apache 下配置 WordPress 虚拟主机,并且 wordpress 软件包中包含 /usr/share/doc/wordpress/example/apache.conf 下的不同方法的示例。对于本文,我选择了一种配置,它可以轻松地在同一主机上管理多个 WordPress 站点,因此创建一个名为 /etc/apache2/sites-available/wordpress 的文件,其中包含以下数据

NameVirtualHost *:80

<VirtualHost *:80>
    UseCanonicalName Off
    VirtualDocumentRoot /var/www/%0
    Options All
</VirtualHost>

现在,启用这个新站点并禁用 Apache 可能包含的任何默认虚拟主机

$ sudo a2ensite wordpress
$ sudo a2dissite default

在我的示例中,我使用了 Apache 选项 VirtualDocumentRoot,以便我可以更轻松地管理多个 WordPress 站点。不幸的是,允许该功能的模块默认情况下未启用,因此我也需要启用 vhost_alias 模块才能使该功能工作

$ sudo a2enmod vhost_alias

我设置 WordPress 的方式是,您从此服务器托管的每个 WordPress 站点都将在 /var/www/<domainname> 下拥有自己的文档根目录。当您添加新站点时,您需要在 /var/www/ 下创建一个以您的域名命名的符号链接,该链接指向已安装的 WordPress 软件。在我的例子中,我想创建一个名为 www.example.org 的站点,所以我将键入

$ sudo ln -s /usr/share/wordpress /var/www/www.example.org

不要使用 www.example.org,而是放入您将用于站点的完全限定域名。同时,如果您尚未在 DNS 服务器上设置指向您的新站点的 A 记录,那么现在是好时机。如果您按照我之前的专栏中的步骤设置了自己的 DNS 服务器,您应该已经为 www 设置了一个条目。只需更改 IP 地址以指向您将用于 Web 服务器的外部公共 IP 地址,然后重新加载 bind9 服务。

创建符号链接后,我使用 apache2ctl Apache 管理工具重新加载 Apache

$ sudo apache2ctl graceful

注意:apache2ctl 程序是您将在机器上用于管理 Apache 服务的主要命令行程序。除了 graceful 参数(它告诉 Apache 安全地重新加载您已更改的任何新配置,例如当您添加新站点时)之外,您还可以使用以下命令。

通过强制停止现有进程并重新启动它们来重新启动 Apache

$ sudo apache2ctl restart

如果 Apache 完全停止,则启动 Apache

$ sudo apache2ctl start

硬停止 Apache(即使当前进程仍在处理用户请求,也杀死所有当前进程)

$ sudo apache2ctl stop

优雅地停止 Apache(它只会在进程完成当前请求后才杀死进程)

$ sudo apache2ctl graceful-stop
为 WordPress 配置 MySQL

与现在许多动态站点一样,WordPress 从数据库后端获取数据:在本例中为 MySQL。wordpress 软件包包含一个不错的小型 shell 脚本,您可以使用它在 /usr/share/doc/wordpress/examples/setup-mysql 处自动为您的站点设置 MySQL 数据库。您只需传递 -n 选项并告诉它您要使用的 MySQL 用户名和数据库名称即可。在我的例子中,我使用用户名“wordpress”并将数据库命名为我的站点 www.example.org。

$ sudo bash /usr/share/doc/wordpress/examples/setup-mysql 
 ↪-n wordpress www.example.org

注意:此命令尝试 ping 您列出的域名,因此如果您尚未在 DNS 中设置域名,则需要在运行上述命令之前执行此操作。同样,请确保您的域名指向您将用于站点的公共 IP 地址。

Hack and / - Your Own Personal Server: Blog

图 1. 默认 WordPress 配置页面

一旦您到达这一点,您的博客实际上应该可以使用了。您只需访问 http://www.example.org(在您的情况下,您将访问您为博客设置的 URL),您应该会看到如图 1 所示的初始 WordPress 配置页面。从那时起,您只需输入博客的标题和您想要使用的联系电子邮件。WordPress 将向您展示管理员用户名和临时密码。从那里,您可以登录并开始调整、创建帖子和更改您的主题。

Kyle Rankin 是旧金山湾区的系统架构师,也是许多本书的作者,包括 The Official Ubuntu Server BookKnoppix HacksUbuntu Hacks。他目前是 North Bay Linux Users' Group 的总裁。

加载 Disqus 评论