ubuntu和centOS服务器环境安装的不同之处

本文基于工作需要,做的读书笔记
因为公司用阿里云、亚马逊云,然后自己有一个腾讯云,所以身为一个小前端,服务器的知识还是要一点点。因为项目需要,最近连着在不同的服务器上玩了一阵,那叫一个学习啊,总算把各种安装搞会了。让我们一起来看看吧。

前提条件:
你已经了解基本的Linux知识。

编码环境:
系统:OS X EI Capitan
版本:10.11.6

unbutuCentOS.png

ubuntu的环境安装

服务器环境:
系统:ubuntu
版本:14.04 (腾讯云)

在腾讯云服务器的控制台页面,拿到它的外网IP和生成下载SSH密钥。比如:
外网IP为:119.29.152.34
SSH密钥下载到本地文件路径:/MRain/Tencent/Season (文件名为Season)

我们使用SSH方式登录到服务器:(密码登录方式我没有仔细看,没找到)

$ sudo ssh -i /MRain/Tencent/Season ubuntu@119.29.152.34
Password: 输入你的本机密码

登录成功!将会看到类似这样的画面:

ubuntu@VM-138-153-ubuntu:~$ 

接下来开始安装环境。

1、安装node

参考网站:nodeJs官网。安装命令如下:

$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ sudo apt-get install -y build-essential

注:apt-get是Ubuntu比较常用的获取或安装方式。

2、安装nginx

(其实,如果你是跑一个nodejs,不装nginx也是可以的,不是必须的。)
参考网站:ubuntu的Nginx的安装参考
如果要运行一个nodejs的服务,那最好的选择应该是nginx,而不是apache。使用apache貌似需要设置反向代理,这里因为我不是很清楚,所以跳过。等到我真正需要apache的时候,我再去认真了解一下。
安装命令如下:

$ sudo apt-get update  //先更新服务器系统(建议)
$ sudo apt-get install nginx  
$ sudo /etc/init.d/nginx start  //测试启动

安装好了nginx后,需要知道如何配置启动。
一般来说,安装后的nginx的配置文件的路径为/etc/nginx/sites-available/default,那直接用sudo权限去编辑它。命令如下:

$ sudo vi /etc/nginx/sites-available/default

打开这个文件,你大概可以看到如下代码:

 server {
     listen 80;
     server_name example.com;
     location / {
         proxy_pass http://APP_PRIVATE_IP_ADDRESS:8080;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection 'upgrade';
         proxy_set_header Host $host;
         proxy_cache_bypass $http_upgrade;
     }
 }

那现在来改一下,记着根据你的实际端口应用,举一反三,不要照抄照搬。
编辑的时候,需要切换为英文输入,单击i转变为插入字符,编辑结束后使用:wq保存。
如果不熟悉Linux命令,可以谷歌一下。

 server {
     listen 80;
     server_name 你的域名;
     location / {
         proxy_pass 127.0.0.1:你的端口;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection 'upgrade';
         proxy_set_header Host $host;
         proxy_cache_bypass $http_upgrade;
     }
 }

配置好后,需要重启nginx服务,使用命令:

$ sudo service nginx restart

实际上这里的工作就是映射,80端口指向了你的nodejs服务端口。如果你的域名已经设置好了,并指向此服务器,那么通过域名可以直接访问你跑起来的nodejs服务了。两种访问方式都可以:

  • 域名方式访问
  • 服务器公网IP:nodejs服务端口,比如说119.29.152.34:3000

不管你是否需不需要mysql、mongodb数据库,下面扩展就来看看。

3、安装mongodb

参考网站:
Install MongoDB Community Edition on Ubuntu
在Ubuntu 14.04 64bit上安装MongoDB并测试

参照下面的命令,依次执行:

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
$ echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org  //不指定
$ sudo apt-get install -y mongodb-org=3.2.10 mongodb-org-server=3.2.10 mongodb-org-shell=3.2.10 mongodb-org-mongos=3.2.10 mongodb-org-tools=3.2.10
确认当前安装的MongoDB版本  要执行一遍
$ echo "mongodb-org hold" | sudo dpkg --set-selections
$ echo "mongodb-org-server hold" | sudo dpkg --set-selections
$ echo "mongodb-org-shell hold" | sudo dpkg --set-selections
$ echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
$ echo "mongodb-org-tools hold" | sudo dpkg --set-selections

那么,如果没有遇到错误的话,应该是正常成功安装了。
了解一下mongodb的使用吧。

$ sudo service mongod start  // 启动

Verify that MongoDB has started successfully
Verify that the mongod process has started successfully by checking the contents of the log file at/var/log/mongodb/mongod.log for a line reading
[initandlisten] waiting for connections on port <port> 
where <port> is the port configured in /etc/mongod.conf, 27017 by default.

$ sudo service mongod stop  // 停止

$ sudo service mongod restart  // 重新启动

$ sudo service mongod status  // 查看当前数据库状态

$ mongo  // 建立一个客户端
// 以下几个mongo操作命令,可能会告诉你一些mongodb的简单操作。
> help 显示帮助信息
> db  查看当前连接的数据库
> show dbs 显示所有数据库列表
> use mydb 切换到mydb数据库
> db 查看当前存在的数据库,
> use mydb 要创建一个新的数据库,使用下面的命令:
> 
> exit
> 或者直接按Ctrl+C中断退出

4、安装pm2

如果真的要在生产环境运行nodeJS,那就需要一个管理工具,比如forever,pm2。其中,pm2的安装方法如下:

$ sudo npm install pm2 -g  // 注意:一定是在全局环境下安装

看一下它的相关命令吧:

$ pm2 start hello.js  // 启动

$ pm2 startup ubuntu  // 自启动
// 执行后,他会返回几句命令,注意执行最后那一行sudo那句
[PM2] You have to run this command as root
[PM2] Execute the following command :
[PM2] sudo su -c "env PATH=$PATH:/opt/node/bin pm2 startup ubuntu -u sammy --hp /home/sammy"  // 跑一下这句(每个系统可能不一样,注意)
$ sudo su -c "env PATH=$PATH:/opt/node/bin pm2 startup ubuntu -u sammy --hp /home/sammy"

$ pm2 list  //  查看跑了哪些服务

$ pm2 stop example  // 关掉服务,这里的example可以是name,也可以是id

$ pm2 restart example  // 重启服务

$ pm2 info example  // 查看信息

$ pm2 monit  // 监视服务运行日志

最后一点,也是我们需要的知道的。
常常使用pm2运行生产环境的node服务,更多的时候是写了一个配置文件,比如命名为process.json,并指定运行环境为production。然后我们只要跑起这个文件就可以了,配置都写在里面。

$ pm2 start process.json --env production

来看看如何配置最简单的process.json,代码如下:

 {
   "apps" : [{
     "name"        : "AppName",   //你的APP的名称
     "script"      : "./bin/www",   //跑起node服务的命令
     "watch"       : true,   //监视
     "env": {
       "NODE_ENV": "development",
     },
     "env_production" : {
        "NODE_ENV": "production"
     },
     "instances"  : 4,    //生产环境的实例,是4个,或8个,或100个
     "exec_mode"  : "cluster"    //集群模式
   }]
 }

如果需要了解pm2配置文件的更多信息,请自行谷歌。

5、安装git

只要跑一下命令:

$ sudo npm install git -g  // 注意在全局环境下

好了,每次要部署代码,每次上传服务器使用scp命令么?好慢的吧。那么,我们使用git吧,我们的代码可以托管在github或者bitbucket,它们都是代码托管服务商。

比如使用github,我们先把本地电脑上的项目代码提交到github上,然后跑到服务器上,通过命令:

git clone https://github.com/YourGithubName/RepositoryName.git
// 需要输入密码github账号密码。

如此一来,轻松将代码放到服务器上。每次如果更新代码,只需要本地电脑使用git push,提交到github。再到服务器上,使用git pull下拉获取最新就可以啦。更新代码后,继续重启node服务喔。重启命令前面说了。

好了,想要去试试么?部署一个自己的小站点、服务接口什么,玩玩看。

centOS的环境安装

服务器环境:
系统:centOS
版本:7 (亚马逊云)

既然说的是亚马逊云服务器,那么总需要先有个账号吧,那先登录到亚马逊中国服务器。
登录网址:https://www.amazonaws.cn/

注册并登陆成功,将看到如下画面。


亚马逊aws.png

如何使用亚马逊云呢?
先去EC2里面搭建一台服务器,服务器的系统,这里选CentOS,我们现在要研究这个。

进入EC2的控制面板,在默认页面,可以看到当前创建的所有服务器实例。单击某一个已创建的服务器实例,可以看到此服务器的一般信息,这里可以查看到外网IP。然后左侧的菜单,往下看,有一项是“密钥对”,那么单击它进去,创建一个SSH密钥,并下载到本地。
ps:这里就不截图了,信息保密。比如:
外网IP为:54.223.74.164
SSH密钥下载到本地文件路径:/Mine/Project/mine.pem (ssh密钥文件名为mine.pem)

我们使用SSH方式登录到服务器:

$ sudo ssh -i ssh文件路径 服务器名称@服务器IP
// 方式一:服务器名称全称
$ sudo ssh -i /MRain/Project/fusion/fusiond.pem ec2-user@ec2-54-223-94-164.cn-north-1.compute.amazonaws.com.cn
// 方式二:服务器名称+IP
$ sudo ssh -i /MRain/Project/fusion/fusiond.pem ec2-user@54.223.94.164
Password: 输入你的本机密码
// 远程登录成功!将会看到类似这样的:
[ec2-user@ip-172-31-19-101 ~]$ 

正常来说,接下来就要安装环境。但是,你可以试试安装,如果说没有权限,就可能需要使用root权限安装。这应该是最麻烦的地方,我在这里搞了很久,不使用root权限安装环境,基本上每个都没有装成功。好一段时间不知道怎么解决。你可以试试是不是也有这个问题,还是只会在亚马逊云服务器的centOS上才会遇到。

1、如何获取root账号

1)仍然需要用前面的登录方法,远程连接到EC2服务器。
2)创建root密码,输入如下命令

$ sudo passwd root

3)然后会提示你输入new password。那么你就设置一下密码。这里需要输入2次,后面那次是验证是否一致。那这样,密码建立好了。
4)切换到root,输入如下命令

$ su root

注意:如果你不需要使用root直接登陆服务器,那么你不需要执行后面的这几步。
你只需要普通SSH登录后,需要安装的话,使用su root切换过去。不安装再切换回来,就可以了。
我是这样的,没有去设置使用root直接登陆。
如真需设置,你可以参考下面这几步。
5)那学会了切换,如何使用root直接登陆服务器呢。去修改PasswordAuthentication字段,默认为no,把no改成yes。修改配置文件,输入如下命令:

$ vim /etc/ssh/sshd_config

6)修改保存后,需要重新启动下sshd。输入如下命令

$ su ec2-user  //先切换回去
$ sudo /sbin/service sshd restart

7)然后再切换到root身份

$ su root

8)再为原来的”ec2-user”添加登录密码。输入如下命令:

$ passwd ec2-user

9)同样输入两次密码。之后你可以通过root登录服务啦。

好了好了。现在可以真正开始安装环境了。
不用root权限安装,掉坑里,走很多弯路的。

警告:以下安装均需要切换到root权限下安装!!!!

2、安装node[root权限下]

参考网站:Installing Node.js via package manager
安装命令如下:

$ curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
$ yum -y install nodejs

注:yum是centOS比较常用的安装方式

3、安装nginx[root权限下]

参考网站:
How To Set Up nginx Virtual Hosts (Server Blocks) on CentOS 6
How To Install Nginx on CentOS 7
安装命令如下:

$ sudo yum install epel-release
$ sudo yum install nginx
// 安装后测试启动
$ sudo /etc/init.d/nginx start

安装好了nginx后,我们需要知道如何配置启动。
一般来说,安装后的nginx的配置文件的路径为/etc/nginx/...

这一块的配置,和前面ubuntu的安装配置,是不一样的。

因为在centOS系统里,安装后的nginx,是缺少2个文件夹的。
他们是sites-available和sites-enabled,你需要自己创建他们。
使用如下命令:

$ su root  //这一步你应该在安装前已经切换,这里提示你一下,不需要执行的
$ cd /etc/nginx
$ mkdir sites-available
$ mkdir sites-enabled

接着,我们需要复制文件夹conf.d的默认配置文件,到新建的2个文件夹。命令如下:

$ cp ./conf.d/virtual.conf ./sites-available/default.conf
$ cp ./conf.d/virtual.conf ./sites-enabled/default.conf

紧接着,我们要去修改一下配置文件,命令如下:

$ sudo vi /etc/nginx/nginx.conf
// 在显示的文件内容中,找到下面这句
  ... 
  include /etc/nginx/conf.d/*.conf;
  ...

在它的后面插入一句,目的是为了将新的配置文件引入,是它变为并保存:

  ... 
  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
  ...

接着,我们需要去修改那2个文件的default.conf,接近尾声了。大概编辑成下面这个样子,具体你可能需要查阅其它文献。我也需要更深入学习nginx的配置。所以,这里如果给你挖了个坑,望见谅。我是如下这么设置的。

// 文件 /sites-available/default.conf
server {
    listen 80;
    server_name 54.223.74.164;
    location / {
#        root   html;
#        index  index.html index.htm;
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
// 文件 /sites-enabled/default.conf
server {
    listen 80;
    server_name 54.223.74.164;
    location / {
#        root   html;
#        index  index.html index.htm;
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

最后重启服务器,命令如下;

$ sudo /etc/init.d/nginx restart

实际上这里的工作就是映射,80端口指向了你的nodejs服务端口。如果你的域名已经设置好了,并指向此服务器,那么通过域名可以直接访问你跑起来的nodejs服务了。两种访问方式都可以:

  • 域名方式访问
  • 服务器公网IP:nodejs服务端口,比如说119.29.152.34:3000

不管你是否需不需要mysql、mongodb数据库,下面扩展就来看看。

4、安装mysql[root权限下]

参考网站:Install a MySQL server on CentOS

$ sudo yum install mysql-server 
$ sudo /sbin/service mysqld start
$ sudo /usr/bin/mysql_secure_installation
// 一路回车enter
//To apply some reasonable security to your new MySQL server answer yes to all the prompts.

简单的mysql使用命令,可以谷歌一下。

5、安装pm2[root权限下]

安装很简单,命令如下:

$ sudo npm install pm2 -g

具体pm2的使用方法,请去阅读文章前面内容。

6、安装git[root权限下]

注意,下面这个命令是不行的,错误的,不要执行。
$ sudo npm install git -g

正确的安装方式,是下面这个命令:

$ sudo yum install git
$ git --version

具体git的使用方法,请去阅读文章前面内容。

后记

如果你不想使用pm2,想去用forever.js的话,安装和使用也很简单。

// 安装
$ sudo npm install forever -g
// 启动一个服务
$ sudo forever restart index.js

到这里,就先结束了。


学习是一条漫漫长路,每天不求一大步,进步一点点就是好的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容