My Nodejs And Ghost Install On CentOS7.1

今天试着在 CentOS-7.1虚拟机上安装 nodejs 的环境,安装这个环境当然是为了能运行 Ghost 博客程序了,为什么要在虚拟机上安装?那是因为我打算搞到我自己的局域网服务器环境里去。下面开始!

安装 Nginx

Nginx 主要用于反向代理,后面说明。

先安装下必备的 vim 和 wget:

yum install -y vim wget

添加Nginx的仓储地址。输入:

vim /etc/yum.repos.d/nginx.repo

接着按键盘上的 “i” 便于用vim编辑内容,把下面的内容粘贴进去。

[nginx] 
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ 
gpgcheck=0
enabled=1

编辑完成,按下 Esc,输入 :wq! 回车退出。 现在,用 yum 自动下载安装。

如果你是 CentOS 7 以上版本:

sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

如果你是 CentOS 7 以下版本:

sudo yum install nginx -y
sudo service nginx start
sudo chkconfig nginx on

最后一行是设置为开机启动。

安装 Nodejs 环境

一台崭新的虚拟机,什么都没装很干净,安全方面的内容在我其他博客上有说明,这里假设安全设置都已经完毕,编译环境还需要一些安装,至少让./configuremakesudo make install命令能正确执行。

编译环境

注意,如果你用的 nvm 来安装,那么可以直接跳过这一步,但是还是推荐你完成这一步,这在你未来编译安装任何其他软件也是有帮助的。

基础环境

运行:

yum update -y && yum install -y ncurses-devel make gcc bc

如果 sodu 不行就干脆登录 root 账号安装好了。

运行:

yum groupinstall 'Development Tools'

The Development Tools package includes the core development tools like automake, gcc, perl, python, flex, make, gdb, bison, and many more.
Update: For Fedora 20 (at least), you’ll additionally need to install gcc-c++.

安装 nodejs

方法一:源码编译或通过包管理安装

包管理安装优点在于傻瓜些,可以参考这篇文档(需翻墙),以 centos 为例,需要运行这个:

curl --silent --location https://rpm.nodesource.com/setup | bash -

再运行:

yum -y install nodejs 

缺点在于目前只能安装 v0.10 的版本,如果你要安装指定版本,请去官方下载相应的 tar.gz 源码包,然后编译安装,编译方法:

tar zxvf ***nodejs****.tar.gz

解压,然后进入解压的目录,运行:./configure=>make=>sudo make install,遇到权限问题试试 root 用户安装。

方法二:通过 nvm 安装指定版本

这里先推荐下 Github 上的一份不错的教程:https://github.com/alsotang/node-lessons

先安装 nvm:
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.2/install.sh | bash

nvm 的全称是 Node Version Manager,之所以需要这个工具,是因为 Node.js 的各种特性都没有稳定下来,所以我们经常由于老项目或尝新的原因,需要切换各种版本。
安装完成后,你的 shell 里面应该就有个 nvm 命令了,调用它试试:

$ nvm

当看到有输出时,则 nvm 安装成功。注意,安装完请重新启动终端,否则命令无效。

安装 Node.js

使用 nvm 的命令安装 Node.js 最新稳定版,现在是 v0.12.7(目前最新)

$ nvm install 0.12

关于这部分的更多内容请参考:
https://github.com/alsotang/node-lessons/tree/master/lesson0

安装 Ghost 博客系统

准备工作

安装 nodejs 后,通过 nvm 命令发现 iojs 版本是空,所以安装下 Ghost 推荐的版本:

nvm install io.js v1.2

确保在用的 nodejs 是0.12版本:nvm ls,如果不是就运行nvm use v0.12

安装 Ghost

官方网站下载最新的包:

curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip

解压到 ghost 目录下:

unzip -d ghost ghost-0.7.1.zip

到 ghost 目录下,运行:

npm install --production

如果你没有 VPN 也许会遇到因为网络不给力而导致的安装问题,那么可以去 ghost 中国去下载 full 包

以生产模式运行 Ghost

要部署,我们不能让其运行在开发模式。需要让其运行在生产模式,且当其运行进程退出时自动重启。因此我们可以使用强大的进程守护程序“pm2”达到此目的。(也可以使用Forever)

进入到刚才的Ghost安装目录,执行下面的命令安装PM2:

sudo npm install pm2 -g

我们要设置环境变量为“production”生产模式!“index.js”是程序启动的入口。最后给这个pm2的进程命名为”ghost” 于是,执行下面的命令:

NODE_ENV=production pm2 start index.js --name "ghost"

让PM2知道在开机后自动运行我们的网站:

pm2 startup centos

pm2 save

提示: pm2 kill ghost (清除所有ghost进程)

pm2 <start|stop|restart> ghost (启动|停止|重启ghost进程)

pm2 startup <centos|ubuntu|amazon> (让pm2能够在这3个系统上自动启动)

至此,pm2 已经可以守护 Ghost 博客永远在线。

配置 Nginx 的反向代理

新建一个 Nginx 代理配置文件,并将代理指向到本地的Ghost端口:

sudo vim /etc/nginx/conf.d/ghost.conf

先按下 i 键,再将如下内容拷贝到到新文件中。注意将 My-Domain-Name.com 改成你要设置的网址。在编辑完成后,按下 Esc,输入 :wq! 回车退出。

server {
    listen 80;
    server_name My-Ghost-Blog.com;
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

重新启动 Nginx 服务器,让设置生效。(这里针对 CentOS 7 使用 sudo /bin/systemctl restart nginx.service)

sudo service nginx restart

PS: 关键的工作都已做完了! 你的博客程序能够跟随操作系统自动运行了。

但是别忘了修改服务器时区哦。错误的系统时间会导致博客程序显示错误的文章发布日期。

sudo yum install -y ntp
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

Enjoy!

0%