Galan小屋

welcome my blog

nodejs项目部署到腾讯云详细步骤

By galan99

发表于 2018-07-17

项目完整地址

1、登录服务器

下载putty登录链接服务器

输入ip地址和默认port:22

输入服务器账号默认root

输入服务器密码链接

2、安装nodejs

1.从nodejs官网获取下载对应操作系统的连接

wget https://nodejs.org/dist/v8.10.0/node-v8.10.0-linux-x64.tar.xz

wget命令下载Node.js安装包。 下载完成后可以看到服务器目录下有了nodejs的安装包。

解压该安装包

tar xvf node-v8.10.0-linux-x64.tar.xz

node默认安装在/root/node-v8.10.0-linux-x64/目录下, 将node安装到其他目录

mkdir -p /opt/node/
mv /root/node-v8.10.0-linux-x64/* /opt/node/

2.创建软链接,使node和npm命令全局有效。通过创建软链接的方法,使得在任意目录下都可以直接使用node和npm命令:

ln -s /opt/node/bin/node /usr/local/bin/node
ln -s /opt/node/bin/npm /usr/local/bin/npm

3、安装cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org 

配置环境变量,全局命令

ln -s /opt/node/bin/cnpm /usr/local/bin/cnpm

这时 输入 node -v 就会看到版本信息了



3、安装pm2

pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载。


我们在本地运行node项目,只是node serve.js 就可以跑起来了,但是如果关掉,项目就不能运行了,pm2解决了这一问题,使进程常驻。

安装pm2

npm install pm2@latest -g


创建软链接,使pm2命令全局有效

ln -s /opt/node/bin/pm2 /usr/local/bin/pm2

输入 pm2 -v 可以看到版本信息了

4、安装Nginx

yum install nginx

真正部署到服务器的时候,我们肯定不会让大家输入域名:3000这样的方式让大家访问。所以需要用Nginx监听80端口,把访问我们指定域名的请求引导转发给Koa服务端。

在服务器etc/nginx/conf.d文件夹创建一个nodejs.conf

nginx引入这个文件夹下的配置

#目录 ect/nginx/nginx.conf


http{
  sever{

  }

  #引入配置
  include /etc/nginx/conf.d/*.conf;
}


    #目录 ect/nginx/conf.d/nodejs.conf
    upstream nodejs {  
      server 127.0.0.1:3000;  
    }  
    server {  
            listen       80;  
            server_name  www.galan.cn;  
                  
            #缓存30
            location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
                access_log   off;
                expires      30d;
                proxy_pass   http://nodejs;
            }

            #代理3000端口
            location / {  
                proxy_pass   http://nodejs;  
                index  index.html index.htm;  
            }       
    } 
}



配置一下Nginx的Gzip,能让请求的JS\CSS\HTML等静态文件更小,响应速度更快些

目录 ect/nginx/conf.conf

  #目录 ect/nginx/conf.conf
  http {
      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

      access_log  /var/log/nginx/access.log  main;

      sendfile            on;
      tcp_nopush          on;
      tcp_nodelay         on;
      keepalive_timeout   65;
      types_hash_max_size 2048;

      include             /etc/nginx/mime.types;
      default_type        application/octet-stream;
    

      gzip on;
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      #gzip_http_version 1.0;
      gzip_comp_level 2;
      gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/javascript;
      gzip_vary off;
      gzip_disable "MSIE [1-6]\.";


      include /etc/nginx/conf.d/*.conf;

      server {
          listen       80 default_server;
          listen       [::]:80 default_server;
          server_name  _;
          root         /usr/share/nginx/html;

          # Load configuration files for the default server block.
          include /etc/nginx/default.d/*.conf;

          location / {
          }

          error_page 404 /404.html;
              location = /40x.html {
          }

          error_page 500 502 503 504 /50x.html;
              location = /50x.html {
          }
      }


  }

之后重启Nginx

service nginx reload

5、安装mysql

// 添加可以用于安装数据库系统的MySQL存储库
yum localinstall -y https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

//安装 
yum install -y mysql-community-server

//启动
systemctl start mysqld



修改root密码


//查看初始密码 
grep 'temporary password' /var/log/mysqld.log

2017-10-12T02:37:57.483675Z 1 [Note] A temporary password is generated for root@localhost: **6uRg%NmxG9

mysql -u root -p 回车输入以上查询的密码登录

//关闭密码强度校验
set global validate_password_policy=0;
set global validate_password_length=1;

//修改初始密码换成123456
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
//刷新权限
FLUSH PRIVILEGES;



配置远程访问

//备份
cp /etc/my.cnf /etc/my.cnf_bk

//编辑
vi /etc/my.cnf

//在最后面加上一行
bind-address = 0.0.0.0

//重启
service mysql restart



创建远程访问用户


//-添加一个用户名是root且密码是123456的远程访问用户
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
//如果创建用户提示密码强度不够,则用第2步中的方法关闭密码强度校验

//赋予远程访问权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

//刷新权限
FLUSH PRIVILEGES;

6、项目上传到服务器

后端传到/www/koa-vue/目录下 前端vue项目也build后,传到此目录下的dist文件夹

然后进入/www/koa-vue目录下pm2运行app.js

pm2 start app.js

在浏览器中打开前端项目,就开看到网站可以访问了

最后再放上本文项目的Github地址,如果这个项目对你有帮助,希望大家可以fork,给我提建议,如果再有时间,可以点个Star那就更好啦~