今天试着在 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 环境
一台崭新的虚拟机,什么都没装很干净,安全方面的内容在我其他博客上有说明,这里假设安全设置都已经完毕,编译环境还需要一些安装,至少让./configure,make,sudo 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!