第15章 搭建小型网站

你见,或者不见我
我就在那里
不悲 不喜
你念,或者不念我
情就在那里
不来 不去

—扎西拉姆·多多

互联网时代有个自己的网站,就好像真实世界里有了自己的房子(服务器)和住址(域名)。如果把自己的简历放在网站上,不仅方便在求学求职的过程中展示个人风采,同时也是结交朋友的好方式。不管我本人身在何处,你见还是不见,我的网站就在那里,不悲不喜。

以前,建立一个网站并不容易,涉及诸多领域的知识和技能,门槛比较高。好在,我们有万能的R语言,做个网站就像印个名片一样稀松平常,搭建网站只需几分钟,而并不需要多少网络知识。你甚至不用懂 R 语言是什么,照本章去做就行了。

我们已经知道,R可以用来生成html的网页文件(见第7章和第14)章。那么,只要有服务器空间,把 R 制作的单个静态网页上传到空间即可。服务器空间有免费的也有收费的,后者很便宜,每年只需百十块钱。这是最简单的方案。如果你的网页不止一个文件,那么本章介绍的就是更强大的网站搭建方案。

本章提供两个示范,演示如何使用 R 语言的 blogdown 扩展包(Xie 2017),用来搭建一个个人博客54 和一个科研小组网站55。截至本文成稿之日,blogdown 含苞待放,尚未正式发布,但是已经能够正常安装使用了。我们来提前一睹她的芳容。

15.1 准备工作

R blogdown 是 R 语言的一个扩展包,是个用来制作网站的工具,可以用非常简洁的方式快速搭建静态网页构成的网站。虽然包名里有“博客”(blog)字样,但并不仅限于博客。由于 blogdown 基于 markdown 扩展语法,可以在网页中方便地插入图表、脚注、数学公式、R 代码、公式、参考文献等等元素,所以,非常适合搭建一个科研小组的展示窗口。blogdown 搭建的网站页面元素跟 第14章介绍的 bookdown 是共通的,因此,可以非常方便地把 bookdown 书写的论文、书籍、信件、散文等转化成网页展示,易于维护、迁移和备份。

本书的官方网站56 就是用 blogdown 搭建的。网站里给大家提供的 R 示例代码、试读章节、勘误表等,都是直接从书稿中拷贝粘贴到文本文件里,然后运行一下 blogdown 的指令,网站就自动更新了。

安装 blogdown

blogdown 的背景平台是 R 语言,用户界面首选 RStudio ,产生的网站框架是 Hugo ,掰手指头数一数,要安装4样东西,略显繁琐,但并不难,一劳永逸。相信你已经安装好了 R 和RStudio。运行RStudio,在左上面板的代码窗口输入并运行以下代码:

if(!require(devtools)) install.packages('devtools')
devtools::install_github('rstudio/blogdown')

由于 blogdown 目前只发布到了 GitHub 服务器上,尚未发布到CRAN,所以上面第一条代码先安装开发工具 devtools 包,第二行用这个包的install_github() 函数从 GitHub 安装。

安装好blogdown之后,就可以安装 Hugo 框架了。在 RStudio 左上面板的代码窗口输入并运行以下代码:

blogdown::install_hugo()

安装完毕。

15.2 搭建个人博客

创建示例网站

上文介绍的 blogdown 个人博客的示例57,我们看看这个博客是如何创建的。

blogdown 搭建的 Hugo 个人网站示例

图 15.1: blogdown 搭建的 Hugo 个人网站示例

首先,在你的电脑里新建一个文件夹,准备存放网站文件,假定是c:/blogdown_default,那么创建网站只需在RStudio里运行两行代码:

setwd('c:/blogdown_default')
blogdown::new_site()

示例网站搭建完毕。对,就这么简单!

c:/blogdown_default看看吧,出现了好多新文件夹。别的不用管也不用动,只注意content/public/ 这两个就行了。打开 public/index.html,这就是网站的主页。

要想在本地电脑上浏览你的新网站,可以运行:

blogdown::serve_site()

这样,就可以在 RStudio 的右下面板实时看效果了。

发布到网上

上面搭建的网站,目前只存在于本地电脑里,下面我们发布到网上。

如果你像我一样,已经有了自己租用的服务器,上面有了WordPress博客,那最简单,在服务器的public_html/文件夹下面创建一个新文件夹,例如叫做test,那么只需将刚刚在本地新建的博客或科研网站的 public文件夹里所有文件上传到服务器的test 文件夹即可。访问你的域名/test,就可以看到新网站了!

如果你没有自己的服务器,那么最简单的是在 netlify58 免费注册个账号,然后按提示将你本地的 public/ 文件夹拖进去,会自动布署,等几分钟,就可以访问了。你可以免费申请一个 netlify 子域名,也可以买个自己的域名绑定上去。我的个人科研网站59就是这样做的。

那么,如何将自动生成的网站更新成自己的,并添加新内容呢?

网站更新

前文提醒你注意,新建的网站文件夹里有个content/文件夹。这里就是更新网站内容的地方。你只需用记事本或RStudio,打开其中的.md.Rmd 文件,修改成自己的内容后保存,然后在 R 里运行建站函数:

blogdown::build_site()

这样,public/ 就自动更新了,再发布到网上即可。

.md.Rmd 文件使用扩展的 markdown 语法,见本书附录。

如果要发表新帖子,那么有两种方式最简单:

  • 方法一:将原有的.md.Rmd拷贝粘贴,改一下文件名和文件内容即可;
  • 方法二:在RSudio代码窗口点击 Addins – New Post, 按提示填写即可。

写完保存,运行建站函数,上传。完毕。

自动同步

也许你嫌每次更新上传太麻烦。我们当然可以选择自动同步。

如果网站搭建在Netlify,那么只需做三件事:

  1. 下载并安装 GitHub 客户端,申请个免费账号,并创建一个项目,例如叫做myweb,将前面我们举例的c:/blogdown_default 文件夹设为项目的文件夹,并同步到云端。
  2. 在你的Netlify设置里,设为自动跟你的GitHub里的myweb项目同步,同步的 Branch 设为 ‘master’,Build command 设为’hugo_0.19’, Publish directory 设为 ‘public’。
  3. 以后每次更新并运行完建站函数后,在GitHub客户端同步一下即可。

15.3 搭建科研网站

上文说到,我申请了一个Netlify免费账号,并且创建了自己的科研网站。这个科研网站的构架比个人博客复杂,有简介、新闻、发表论文、科研项目等基本模块,还可以根据需要新增,并且可以设置多种语言,非常适合作为科研小组的展示窗口。

这个网站的搭建也很简单,跟个人博客类似。在你的电脑里新建文件夹,比如 c:/blogdown_academic,在RStudio里运行两行代码:

setwd('c:/blogdown_default')
blogdown::new_site(theme='gcushen/hugo-academic')

c:/blogdown_academic 看看吧,科研网站搭建完毕!

blogdown 搭建的 Hugo 科研网站示例

图 15.2: blogdown 搭建的 Hugo 科研网站示例

其他的发布、更新、同步,跟前文讲述的一致,这里不再赘述。需要特别指出的是,科研网站示例的首页,个人信息需要在前面提到的config.toml里的[params] 修改。

这里的科研网站示例,使用的是Hugo-academic主题。Hugo还有很多其他主题可以使用。我们相信,只要深入研究一下,一定可以搭建让人更合心意的网站。同时,blogdown 也在进一步完善中,让我们期待她的盛装绽放吧!

15.4 课外活动:搭建自己的网站

互联网技术日益成熟完善,现在搭建一个个人网站,有很多简单易行的方案,并不需要多少网络知识。本章介绍的 blogdown 是搭建静态个人网站最优秀的方案之一,快捷易用成本低。此外,还可以用 WordPress,搭建动态网站。我以前用的是后者,后来用前者创建了新网站。动态网站和静态网站各有所长,初学者不必在选择上过于纠结,从任何一种开始都可以。用得久了,才会实际体会到哪种更好,到时候再更改也不迟,因为有很多工具都可以在两者之间迁移转换。

快快动手,选一个你喜欢的方式,为你自己或者你的工作小组、单位搭建一个网站吧!

References

Xie, Yihui. 2017. Blogdown: Create Blogs and Websites with R Markdown. https://github.com/rstudio/blogdown.