阿里云centos搭建nodejs服务器(一)

趁着双十一阿里云搞活动,三年299,加团就可以购买,顺便学习一下,做一个笔记。
选的的centOS

image.png

1. 更多/修改远程密码
2. 更多/重置密码 是重置的root密码
3. 远程链接

进入以后,输入root,password是你刚刚设置的密码。重设密码以后需要重启服务器。


image.png
root
useradd [yourname] // 创建一个用户明
passwd [yourname] // 确认用户名
//结下来会提示你输入密码
// 再次输入密码就完成了

image.png

在你本地输入:ssh yourname@ip地址(公)就能连上你的服务器啦。

接下来就可以愉快的在本地操作了。
首先安装nodejs(注意是nodejs ,不带js会找不到包)


image.png

这样是因为还没有给自己的用户添加root权限

su
密码:// 输入root密码
visudo
按 i 键进入, 找到 root ALL=(ALL) ALL 然后下面添加 [Yourname] ALL = (ALL) ALL
root ALL=(ALL) ALL
[yonghuming] ALL = (ALL) ALL
:wq  //保存退出
su [用户名]
sudo yum install nodejs -y
node -v
npm -v //检查是否安装成功 

使用NVM安装多版本

NVM(Node version manager)是Node.js的版本管理软件,使用户可以轻松在Node.js各个版本间进行切换。适用于长期做 node 开发的人员或有快速更新node版本、快速切换node版本这一需求的用户。

安装步骤:

直接使用git将源码克隆到本地的~/.nvm目录下,并检查最新版本。

yum install git
git clone https://github.com/cnpm/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`

激活NVM。

echo ". ~/.nvm/nvm.sh" >> /etc/profile
source /etc/profile

如果报没有权限,先切换到root用户,输入

chmod +x /etc
// 若是还没有解决 chmod 777 /etc/profile
// 然后再切换到自己用户

列出Node.js的所有版本。

nvm list-remote

安装多个Node.js版本。

nvm install v6.9.5
nvm install v10.13.0

运行 nvm ls 查看已安装Node.js版本,当前使用的版本为v6.9.5。返回结果如下所示。

[root@iZXXXXZ .nvm]# nvm ls
      v6.9.5
->       v7.4.0
      system
stable -> 7.4 (-> v7.4.0) (default)
unstable -> 6.9 (-> v6.9.5) (default)

运行 nvm use v7.4.0 切换Node.js版本至v7.4.0。返回结果如下所示。

[root@iZXXXXZ .nvm]# nvm use v7.4.0
Now using node v7.4.0

NVM的更多操作请参考帮助文档:

nvm help

部署测试项目
新建项目文件example.js。

cd ~
touch example.js

使用vim编辑器打开项目文件example.js。

yum install vim
vim example.js //无权限就加sudo 

输入 i,进入编辑模式,将以下项目文件内容粘贴到文件中。使用 Esc 按钮,退出编辑模式,输入 :wq,回车,保存文件内容并退出。

项目文件内容:

const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

运行项目。

node ~/example.js``

说明 您也可以使用命令 node ~/example.js & 将项目置于后台运行。
使用命令查看项目端口是否存在。
netstat -tpln

  1. 登录ECS管理控制台,并在安全组中 添加安全组规则 放行端口(如本示例中为TCP 3000端口)。

    image.png

    image.png

    image.png

    image.png

    image.png

  2. (可选)如果您的实例中开启了防火墙,必须添加端口的入站规则(如本示例中为TCP 3000端口)。

  3. 在本地机器的浏览器中输入 http://实例公网IP地址:端口号 访问项目。

    image.png

pm2

全局安装

sudo npm install pm2@latest -g

用法

最简单的启用一个应用: pm2 start app.js
停止: pm2 stop app_name|app_id
删除:pm2 delete app_name|app_id
重启:pm2 restart app_name|app_id
停止所有:pm2 stop all
查看所有的进程:pm2 list
查看所有的进程状态:pm2 status
查看某一个进程的信息:pm2 describe app_name|app_id
参数说明
--watch:监听应用目录源码的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件
-i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目,可以弥补node.js缺陷
--ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts"
-n --name:应用的名称。查看应用信息的时候可以用到
-o --output <path>:标准输出日志文件的路径,有默认路径
-e --error <path>:错误输出日志文件的路径,有默认路径
--interpreter <interpreter>:the interpreter pm2 should use for executing app (bash, python...)。比如你用的coffee script来编写应用

 pm2 start ~/example.js --watch 
// 完整参数命令:
// 可用来替代刚刚的 node  ~/example.js 
image.png

Mongodb

文档

cd /etc/yum.repos.d/
touch mongodb-org-4.0.repo
vim mongodb-org-4.0.repo

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

sudo yum install -y mongodb-org
sudo service mongod start
sudo vim /etc/mongod.conf // 查看配置  将127.0.0.1改为0.0.0.0可在本地访问(不推荐)
sudo chkconfig mongod on   //开机自启
sudo service mongod stop  //停止
sudo  service mongod restart // 重启

// 卸载 没有权限请加sudo 
service mongod stop  // 停止
yum erase $(rpm -qa | grep mongodb-org) // 删除安装包
rm -r /var/log/mongodb // 删除日志
rm -r /var/lib/mongo // 删除数据
image.png

nginx

yum install gcc-c++
yum install -y openssl openssl-devel
wget -c https://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
./configure
// 为了后期https配置 方便,这里最好./configure  --with-http_ssl_module  注释1
make
make install
whereis nginx
cd /usr/local/nginx/sbin/
sudo ./nginx   //    启动

image.png
image.png

image.png

将80端口转发到3000

cd ..
cd  conf
sudo vim nginx.conf
//   增加proxy_pass 
cd ..
cd sbin
sudo ./nginx -s reload
image.png

image.png

image.png

可以通过scp命令将本地文件上传至服务器 -r 是文件夹, pwa可以查看你服务器上文件的位置

image.png

scp -r 本地文件拖进来 用户名@ip 服务器路径
image.png

nginx 静态文件配置

user root
location /book/js {
            alias /home/zhenping/book/js/_book/;
            index index.html;
 }
image.png

image.png

image.png

配置https

第一步,一定要去阿里云吧443端口放开啊,血一样的教训。
若是报错 nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_
首先回到nginx注释一
./configure --with-http_ssl_module 然后 make
备份原nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
然后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态)
cp ./objs/nginx /usr/local/nginx/sbin/
在linux环境下,cert应该和nginx.conf在同一个目录下,并且要用相对路径
否则会报错nginx: [emerg] BIO_new_file
修改nginx.conf,重启nginx

server {
        listen 443;
        server_name imzzp.com;
        ssl on;
        root html;
        index index.html index.htm;
         ssl_certificate   cert/imzzp.pem;
        ssl_certificate_key  cert/imzzp.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
           proxy_pass http://localhost:3000;
        }
        location /book/js {
            alias /home/zhenping/book/js/_book/;
            index index.html;
        }
    }
image.png

接下来,将http重定向到https,要注意的是静态文件在谷歌浏览器上会有缓存,可以换一个浏览器或者换一台设备查看

 listen       80;
 server_name  imzzp.com;
 rewrite ^(.*)$  https://$host$1 permanent;
//或者
 listen  80;
 server_name [imzzp.com](http://imzzp.com);
 return 301 https://$server_name$request_uri;

待续

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

推荐阅读更多精彩内容