开始搭建新的博客的第一步
Ghost 文档还不完备,仍在继续完善中,每天可能都会有更新和改进。如果你遇到了难题或者有改进意见,请告诉我们。
Ghost 构建于 Node.js 平台之上,支持0.10.*
版本(最新稳定版)的 Node.js。
在你的本地计算机上运行 Ghost 其实很简单,前提是你已经安装了 Node.js。
Node.js 是构建快速、扩展性良好并且高效的 web 应用的开发平台。在过去的20年间,web 从一堆静态页面进化为能够支持复杂 web 应用(例如 Gmail 和 facebook)的平台。而 JavaScript 这一编程语言是这一进程的推进剂。
Node.js 让我们具有了开发服务器端 JavaScript 程序的能力。而在以前,JavaScript 只能在浏览器上运行,如果要开发服务器端的程序,就要使用 PHP 一类的编程语言了。如果能够用同一种开发语言来完成 web 应用的开发,这将是多么棒!并且,Node.js 还赋予了前端开发工程师更大的能力。
Node.js 让这一切变为可能,其原理是对 Google Chrome 浏览器所用的 JavaScript 引擎进行了包装,让它能够跨平台运行。也就是说,你能在自己的电脑上非常快速的安装 Ghost 并让它非常快捷、方便的跑起来。 接下来我们详细讲解如何在 Mac、Windows 或 Linux 上安装 Ghost,另外还介绍了如何在服务器或托管空间上部署 Ghost。
如果你厌烦了手工安装 Node.js 和 Ghost,可以试试 BitNami 团队开发的 Ghost 安装工具,它提供了对所有主流平台的支持。
Ghost 支持的平台:MAC WINDOWS LINUX 如果你决定在你的服务器或托管空间上部署 Ghost,这对我们是个非常好的消息!下面的文档可以给你详细的部署指南,从手工设置到一键安装包都有涉及。
请记住,Ghost 还非常新,它的开发小组还在非常努力的实现新的功能。如果你需要升级 Ghost 到最新版本,请参考 Ghost 升级文档。 如果遇到任何问题,请参考除错指南,如果你的问题还不能得到解决,请在 Ghost 论坛提问,这里聚集了 Ghost 核心小组的成员和社区成员,他们会非常乐意帮你解决问题。
为了安装 Node.js 和 Ghost 到你的 mac 上,你需要打开一个终端窗口。你可以通过打开 spotlight 并输入 "Terminal" 打开一个终端。
echo $PATH
检查 '/usr/local/bin/' 路径已经存在于环境变量中
注意: 如果 '/usr/local/bin' 没有添加到 $PATH 环境变量, 查阅 故障排除提示 解决这个问题。
如果你遇到了困难,可以查阅 这里
npm install --production
注意是两个 -
npm start
启动开发模式下的 Ghost127.0.0.1:2368
即可查看最新搭建的 Ghost 博客127.0.0.1:2368/ghost
并且设置管理员用户并登陆 Ghost 管理员cd Downloads/ghost-#.#.#
(替换 #
为你下载的 Ghost 的版本)。npm install --production
注意是两个 -
npm start
启动开发模式下的 Ghost。127.0.0.1:2368
即可查看最新搭建的 Ghost 博客。127.0.0.1:2368/ghost
并且设置管理员用户并登陆 Ghost 管理员。.tar.gz
存档或者是通过包管理器安装。你可以根据 这篇文章 的说明来从包管理器安装 Nodenode -v
和 npm -v
检查 Node 和 npm 是否安装成功在下载页,点击下载最新的 zip 压缩文件然后将文件解压到你想运行 Ghost 的地方 如果你以 guest 身份登陆的 linux 或者以 SSH 远程连接只有终端,那么:
$ curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
$ unzip -uo ghost.zip -d ghost
在你解压好之后,打开一个终端:
$ cd /你的 Ghost 解压目录
npm install --production
注意是两个 -
$ npm start
Ghost 将会运行在 127.0.0.1:2368
你可以在 config.js 中修改 IP 地址和端口
在浏览器中,访问 127.0.0.1:2368
即可查看最新搭建的 Ghost 博客
127.0.0.1:2368/ghost
并且设置管理员用户并登陆 Ghost 管理员准备好开始 Ghost 之旅了吗? OK !
第一个需要你做的决定就是,是否选择自己手动安装 Ghost ,还是选择从安装程序安装。
目前有以下几种使用简单的安装程序安装的方法:
你需要一个主机空间,或者可以安装 Node.js 的服务器。 这意味着着比如云空间 (Amazon EC2, DigitalOcean, Rackspace Cloud), VPS (Webfaction, Dreamhost) 或者其他拥有 SSH (terminal) 并且允许安装 Node.js 的平台。目前有很多这种比较便宜的平台。
目前还不能在 cPanel 风格的共享主机(通常用于 PHP)上运行。虽然有些(cPanel)支持 Ruby 将来也许支持 Node.js 的主机也同样不行。
不幸的是,一些 Node.js 主机提供商比如说 Nodejitsu 和 Heroku 与 Ghost 并不兼容。它们会工作,但会删除你的文件,所以你上传的图片和数据库的内容都会消失。Heroku 支持 MySQL 数据库,你可以使用它来弥补这个问题,但你仍然会丢失一些上传的图片。
以下链接包含了如何开始和运行的说明:
前面提到的启动 Ghost 使用 npm start
命令。这是一个在开发模式下启动和测试的不错的选择,但是通过这种命令行启动的方式有个缺点,即当你关闭终端窗口或者从 SSH 断开连接时,Ghost 就停止了。为了防止 Ghost 停止工作,有两种方式解决这个问题。
你可以使用 forever
以后台任务运行 Ghost 。forever
将会按照 Ghost 的配置,当进程 crash 后重启 Ghost。
npm install forever -g
安装 forever
forever
从 Ghost 安装目录运行,输入 NODE_ENV=production forever start index.js
forever stop index.js
停止 Ghostforever list
检查 Ghost 当前是否正在运行流行的 Linux 发行版——例如 Fedora, Debian 和 Ubuntu,都包含一个 Supervisor 包:一个进程控制系统,允许在启动的时候无需初始化脚本就能运行 Ghost。不像初始化脚本一样,Supervisor 可以移植到不同的发行版和版本。
apt-get install supervisor
yum install supervisor
easy_install supervisor
service supervisor start
确保 Supervisor 运行/etc/supervisor/conf.d/ghost.conf
,例如:[program:ghost]
command = node /path/to/ghost/index.js
directory = /path/to/ghost
user = ghost
autostart = true
autorestart = true
stdout_logfile = /var/log/supervisor/ghost.log
stderr_logfile = /var/log/supervisor/ghost_err.log
environment = NODE_ENV="production"
supervisorctl start ghost
supervisorctl stop ghost
详细内容请参阅 Supervisor 文档。
Linux 系统在启动的时候会运行初始化脚本。这些脚本通常存在于 /etc/init.d 。为了让 Ghost 一直运行下去甚至自动重启,你可以设置一个初始化脚本来完成这个任务。以下的例子工作在 Ubuntu ,并且在 Ubuntu 12.04 下测试通过。
$ sudo curl https://raw.github.com/TryGhost/Ghost-Config/master/init.d/ghost \
-o /etc/init.d/ghost
使用 nano /etc/init.d/ghost
命令打开文件并检查以下内容:
将 GHOST_ROOT
变量的值更换为你的 Ghost 安装路径
检查 DAEMON
变量的值是否和 which node
的输出值相同
$ sudo useradd -r ghost -U
$ sudo chown -R ghost:ghost /你的 Ghost 安装目录
$ sudo chmod 755 /etc/init.d/ghost
$ sudo service ghost start
$ sudo service ghost stop
$ sudo service ghost restart
$ sudo service ghost status
$ sudo update-rc.d ghost defaults
$ sudo update-rc.d ghost enable
为了保证你的用户可以更改 Ghost 目录里的文件和默认的 config.js ,需要将你加入 ghost 用户组中: $ sudo adduser 你的用户名 ghost
使用 forever 和如何在 ubuntu 下建立 Ghost 守护进程的文档即将发布!
如果你已经让 Ghost 一直运行了,你也可以设置一个代理服务器让你的博客可以使用域名访问。以下的示例假定你的操作系统是 Ubuntu 12.04 ,使用 Nginx 作为你的Web服务器,已经使用以上任意一种方法让 Ghost 在后台运行。
$ sudo apt-get install nginx
这个命令将会安装nginx并且设定好所有必需的目录和基础配置。
配置你的站点
/etc/nginx/sites-available
创建一个 ghost.conf
文件sudo nano /etc/nginx/sites-available/ghost.conf
) 把以下内容复制进这个文件 server {
listen 80;
server_name example.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
}
将 server_name
的值改为你的域名
sites-enabled
文件夹下:$ sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf
$ sudo service nginx restart
更新 Ghost 是非常简单的。
有几种方法可供选择。下面描述了将会发生什么,并且你要按照 点击风格 和通过一个 命令行 一步步实现。所以你可以自由选择感觉最舒适的方法。
备份! 总是在更新前执行一次备份。首先请阅读 备份指南。
Ghost 安装后,有一个与左边图片相似的文件夹结构,包括两个主要的目录 content
和 core
,和其他一些文件。
更新 Ghost 也无非就是将旧文件替换为新文件,重新运行 npm install
更新 node_modules
文件夹,然后重新启动 Ghost 使生效。
记住,Ghost 默认将所有的自定义数据,主题,图片等存储到 content
目录下,所以确保此目录安全!只替换 core
目录和根目录下的文件,一切就会正常。
/ghost/debug/
并且登录。点击蓝色的 EXPORT
按钮,将会下载下一个包含你所有数据的 JSON 文件。content/themes
和 content/images
内的文件。
注意: 如果你喜欢的话,你也可以通过复制
content/data
实现数据库的备份。但是 记住 要先停止 Ghost 后再去复制。
如何更新本地机器上的 Ghost 呢?
警告: 不要在 mac 现有的安装上复制和粘贴整个 Ghost 文件夹。在使用 Transmit 或者其他 FTP 工具上传的时候,不要选择 REPLACE 而要选择 MERGE。
core
目录替换旧的 core
目录content/themes/casper
npm install --production
备份! 总是在更新前执行一次备份。首先请阅读 备份指南 。
下面的截屏视频显示了如何按步更新 Ghost ,在从下载了 zip 文件到 ~/Downloads
并且安装 Ghost到~/ghost
的前提下。**注意:**~在 mac 和 linux 中表示用户主目录。
步骤如下:
cd ~/Downloads
- 切换到下载的最新版本 Ghost 所在的目录unzip ghost-0.3.1.zip -d ghost-0.3.3
- 解压 ghost 为 ghost-0.3.3cd ghost-0.3.3
- 进入 ghost-0.3.3
目录内ls
- 显示当前目录下所有文件和文件夹cp *.md *.js *.txt *.json ~/ghost
- 复制所有 ~/ghost
目录下的 .md .js .txt 和 .json 文件cp -R core ~/ghost
- 复制 core
目录和它包含的所有内容到 ~/ghost
cp -R content/themes/casper ~/ghost/content/themes
- 复制 casper
目录和它包含的所有文件到 ~/ghost/content/themes
cd ~/ghost
-切换到 ~/ghost
目录下npm install --production
- 安装 Ghostnpm start
- 启动 Ghosthttp://ghost.org/zip/ghost-latest.zip
wget http://ghost.org/zip/ghost-latest.zip
下载最新的 zip 文件(或者带着版本号的 Ghost 文件的 URL)unzip -uo ghost-0.3.*.zip -d path-to-your-ghost-install
解压npm install --production
安装最新的依赖包备份! 总是在更新前执行一次备份。首先请阅读 备份指南 。
http://ghost.org/zip/ghost-latest.zip
cd /var/www/
切换到 Ghost 代码库wget http://ghost.org/zip/ghost-latest.zip
(或者带着版本号的 Ghost 文件的 URL)unzip -uo ghost-0.3.*.zip -d ghost
解压chown -R ghost:ghost ghost/*
确保所有文件都拥有正确的权限npm install
安装最新的依赖包service ghost restart
重启 Ghost 使改变生效如果你最初已经从 Node.js 安装了 Node.js 了,你可以通过下载并安装最新版本的 Node.js 实现更新。这样新版本会覆盖之前安装的旧版本。
如果你使用的 Ubuntu,或者其他 linux 的发行版,你可以使用以下命令安装: sudo apt-get install nodejs
。
你不必重启服务器或者 Ghost 。
'/usr/local/bin' 没有添加到 $PATH 你可以使用以下步骤添加它:
cd ~
,切换到主目录ls -al
显示当前文件夹内所有文件,包括隐藏的文件.profile
或者 .bash_profile
的文件。如果没有,输入 touch .bash_profile
创建这个文件open -a Textedit .bash_profile
,用 Textedit 打开这个文件export PATH=$PATH:/usr/local/bin/
到这个文件的尾部并保存echo $PATH
,你可以看到 '/usr/local/bin/' 现在存在了
SQLite3 没有安装
SQLite3 包采用的预构建的二进制文件适应大多数架构。如果你使用的不常用的 linux 或者 unix 版本,你可能发现 SQLite3 报 404 错误,也就是说系统找不到这个二进制文件。可以强制编译 SQLite3 解决这个问题。这样的话需要 python & gcc ,尝试运行 npm install sqlite3 --build-from-source
。
如果你缺失 python 或者 gcc 组件,在 linux 下运行 sudo npm install -g node-gyp
, sudo apt-get install build-essential
和 sudo apt-get install python-software-properties python g++ make
然后再重新尝试从源代码编译。
更多关于构建二进制文件的信息参阅: https://github.com/developmentseed/node-sqlite3/wiki/Binaries
一旦你成功在你的平台上构建了二进制文件,按照 这里的说明 的步骤提交你的 node-sqlite 项目,这样其他的用户就不会遇到同样的问题了。
我不能上传图片 如果你在 DigitalOcean Droplet 上安装 Ghost v0.3.2 ,或者在其他平台上使用了 nginx,你可能发现不能上传图片。
实际情况是,你不能上传超过 1 MB 的图片(尝试上传小的图片),这只是一个小限制而已。
为了提高限额,你可以编辑 nginx 配置文件来调整限制。
sudo nano /etc/nginx/conf.d/default.conf
打开你的配置文件server_name
下一行,添加如下代码: client_max_body_size 10M;