最近买了个阿里云服务器用于做一些小项目,系统选的是CentOS 7 ,因为是第一次配置服务器环境,并且之前也没接触过Linux系统,整个过程可以说是困难重重,好在最后配置好了。写下这篇文章用作自己以后参考,也希望能够给大家一点帮助。
PS:下面的操作都是在Windows上执行

一、登录服务器


  1. 因为我的电脑是Windows系统,所以下了个putty用于登录服务器,关于putty的用法参考这里
  2. 使用yum -y update把服务器上的程序更新一遍。
  3. 为了安全起见,最好创建一个普通权限的用户用于运行程序,可以将下面的username换成任意的名字
    user add username
  4. 给新用户分配一个密码,输入命令之后就会提示你输入新密码,然后按提示操作就好了
    passwd username

二、安装Node.js


  1. 因为是个人项目,所以我使用的是最新版本的node.js,如果需要下载特定版本,只需要把latest换成相应的版本号就可以了
    wget http://nodejs.org/dist/node-latest.tar.gz
  2. 解压下载的文件,并进入解压后的文件夹:

    1
    2
    tar zxf node-v*.tar.gz
    cd node-v*
  3. 预编译
    ./configure

  4. 编译并安装
    make && make install
  5. 等待编译完成,我当时编译用了8分钟左右,编译完成后可以用下面命令测试有没有安装成功:
    1
    2
    node -v
    npm -v

如果输出了相应的版本号就表示nodejs已经安装成功了。

三、安装Nginx

HTTP请求是80端口,但是在Linux上非root权限是无法使用1024以下端口的,并且因为安全原因,最好不要使用root权限登录服务器,所以无法直接用node.js程序监听80端口。因此我们需要使用Nginx给node.js做反向代理,将80端口指向应用程序监听的端口(如node.js默认的3000端口)。

  1. 添加Nginx仓库
    sudo yum install epel-release
  2. 下载Nginx
    sudo yum install nginx
  3. 修改Nginx配置文件
    sudo vi /etc/nginx/conf.d/default.conf
    加入下面这段代码
    1
    2
    3
    location /{
    proxy_pass http://127.0.0.1:3000;
    }

这段代码就是将所有访问http://yourdomain.com/的请求都转到3000端口

  1. 启动/重启服务器
    sudo systemctl start/restart nginx

四、安装Forever后台管理器

通常我们会使用node app.js启动应用,如果这样做,一旦我们关闭ssh连接,那么程序就会终止运行。我们可以用npm模块Forever解决这个问题。

  1. 全局安装Forever
    sudo npm install forever -g
    在这里我碰到了个问题:npm command not found
    解决方案如下(来自Stackoverflow):

    1
    2
    3
    4
    sudo ln -s /usr/local/bin/node /usr/bin/node
    sudo ln -s /usr/local/lib/node /usr/lib/node
    sudo ln -s /usr/local/bin/npm /usr/bin/npm
    sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf
  2. 开启进程
    forever start app.js
    如果是用npm start启动引用,则可以使用下面的命令,把目录换成你的项目文件夹路径或者在项目文件夹下使用 ./ 作为路径
    forever start -c "npm start" /path/to/app/dir/

  3. 查看进程
    forever list

五、免密码登录服务器


在使用ssh登录服务时,每次都需要输入密码,这样太麻烦了,好在ssh提供了公钥登录,可以省去输入密码这一步骤。
如果没有现成的公钥可以生成一个新的公钥:
ssh-keygen
运行上面的命令之后只需要一路回车就好了,不过有一个步骤是输入密钥口令,如果担心安全问题,可以设置密钥口令,如果直接回车,那么下次登录也可以直接按回车,不需要输入密码。
接下来就是将公钥传送到远程主机上了,在本机执行下面命令(windows only),将下面的C:/Users/.ssh替换成你的ssh公钥所在的路径,username替换成你的用户名,127.0.0.1替换成的你的服务器ip地址

1
2
cat C:/Users/.ssh/id_rsa.pub | ssh username@127.0.0.1 "umask 077; test -d ~/.ssh || mkdir ~/.ssh ;
cat >> ~/.ssh/aut horized_keys"

现在,node.js环境已经配置好了,现在就专注研究自己的应用吧!

参考资料: