Centos7+Nodejs+MySQL+Nginx部署

MYSQL


安装

# wget https://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

# rpm -ivh mysql-community-release-el7-5.noarch.rpm

# yum install mysql-community-server


启动服务

# service mysqld restart


设置密码

初次安装mysql是root账户是没有密码的

设置密码的方法语句以分号结束

# mysql

mysql> use mysql;

mysql> update `user` set Password=password('root') where `User`='root';

设置完后需要重启服务才会生效


登陆

mysql -u 用户名 –p


创建数据库

CREATE DATABASE 数据库名;


导入数据库

use 数据库名;

source 要导入的sql文件路径;


远程登陆

  1. 防火墙开启数据端口
  2. 登录到mysql中,为root进行远程访问的授权,执行下面的命令:
    mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "密码";
    mysql> flush privileges;
    第一句中"%"表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可,如:
    GRANT ALL PRIVILEGES ON *.* TO root@"172.168.193.25" IDENTIFIED BY "root";
    第二句表示从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
  3. 修改/etc/mysql/my.cnf,需要root用户权限。找到文件中的:
    bind-address = 127.0.0.1
    将其注释掉,保存。
  4. 重新启动MySQL服务器。
    service mysqld restart


问题

  1. mysql升级到5.6版本后,插入时间如2013-08-26T12:00:00+00:00时会报“incorrect datetime value”错误,解决方法如下:
    登陆到mysql命令行,键入命令:set global sql_mode='';


Nodejs


安装

  1. 下载
    wget https://nodejs.org/dist/latest-v8.x/node-v8.4.0-linux-x64.tar.gz
  2. 解压
    tar zxvf node-v8.4.0-linux-x64.tar.gz
  3. 重命名
    mv node-v8.4.0-linux-x64 node
  4. 配置环境变量
    vim /etc/profile
    在最后边添加
    #set for nodejs
    export NODE_HOME=/usr/local/node
    export PATH=$NODE_HOME/bin:$PATH
    按Esc,输入:wq保存并退出。
  5. 使用source命令使其生效
    source /etc/profile
  6. 使用命令查看版本
    node -v
    npm –v
    出现相应版本号则表示成功,如果报错可以重启后在尝试
  7. 设置当前运行的环境变量
    development为开发环境
    production为生产环境
    export NODE_ENV=production


Forever

Forever是Nodejs的守护进程。


安装

npm install –g forever


使用说明

// 1. 简单的启动
forever start app.js


// 2. 指定forever信息输出文件,当然,默认它会放到~/.forever/forever.log

forever start -l forever.log app.js


// 3. 指定app.js中的日志信息和错误日志输出文件,

// -o 就是console.log输出的信息,-e 就是console.error输出的信息

forever start -o out.log -e err.log app.js


// 4. 追加日志,forever默认是不能覆盖上次的启动日志,

// 所以如果第二次启动不加-a,则会不让运行

forever start -l forever.log -a app.js


// 5. 监听当前文件夹下的所有文件改动

forever start -w app.js


// 6. 显示所有运行的服务

forever list


// 7. 监听当前文件夹下的所有文件改动(不太建议这样)并自动重启

forever start -w app.js

// 8. 停止所有运行的node App

forever stopall


// 9. 停止其中一个node App

forever stop app.js


// 10. forever list 找到对应的id,然后:

forever stop [id]


// 11. 重启动所有

forever restartall


PM2


安装

npm install pm2 –g


简单使用

启动 pm2 start bin/www

删除 pm2 delete www

显示详情 pm2 show www

列出进程 pm2 list

开启API pm2 web


监听

开启监听使用参数—watch

pm2 start bin/www --watch


ES6支持

安装Babel

npm install -g babel-cli

ES6支持使用参数--interpreter babel-node

pm2 start --interpreter babel-node app.es6


多进程

多进程使用参数-i

-i后面带上要启动的进程数,如果为0或者max,则根据当前机器核数确定实例数目

pm2 start app.js -i max


使用配置文件

建立一个文件app.json

{
  "apps" : [{
    "name"        : "school",                   //进程名字
    "watch"       :  ["./app"],                  //监听的路径,如果为true则监听全部
    "ignore_watch" : ["./app/public"],  //忽略监听的路径
    "script"      : "./bin/www",               //要运行的脚本
    "interpreter" : "babel-node",          //支持ES6
    "instances" : "max",                        //由核数决定进程数
    "exec_mode" : "cluster"                  //开启集群模式
  }]
}

启动 pm2 start app.json


Redis


安装

新建目录

mkdir /usr/redis

cd /usr/redis

下载

wget http://download.redis.io/releases/redis-4.0.2.tar.gz

解压

tar xzf redis-4.0.2.tar.gz

编译

cd redis-4.0.2

make

cd src

make install


部署

创建目录

mkdir -p /usr/local/redis/bin

mkdir -p /usr/local/redis/etc

移动文件

mv /usr/redis/redis-4.0.2/redis.conf /usr/local/redis/etc

cd /usr/redis/redis-4.0.2/src

mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server /usr/local/redis/bin

设置后台运行

cd /usr/local/redis/etc

vim redis.conf

将daemonize no 改为daemonize yes

运行服务

redis-server /usr/local/redis/etc/redis.conf

可运行客户端测试部署结果

redis-cli


Nginx


安装

wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

建立nginx的yum仓库

# rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm

下载并安装nginx

# yum install nginx

启动nginx服务

systemctl start nginx


配置

默认的配置文件在 /etc/nginx/conf.d目录下的default.conf,使用该配置已经可以正确地运行nginx;如需要自定义,可以在conf.d目录下增加相应的配置文件即可。


反向代理

进入 /etc/nginx/conf.d 目录

添加一个配置文件

Vim node.conf

输入下面的内容:

server {
    listen 80;
    server_name localhost;
    access_log /www/logs/packets.log; #需配置,日志文件
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ttf|woff)$
    {
        root /www/app/public; #需配置,文件目录
        expires 30d;
    }
    location ~ .*\.(js|css)?$
    {
        root /www/app/public; #需配置,文件目录
        expires 1h;
    }
    location /
    {
        #反向代理的具体配置
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        #proxy_set_header X-Nginx-Proxy true;
        proxy_set_header Connection "";
        proxy_pass http://localhost:3000;
    }
}

重启Nginx


开启SSL

开启SSL必须先去申请SSL证书,SSL证书申请的时候需需要提供验证方式,一种是DNS解析验证,一种是文件方式验证。

申请完SSL后,把下载好的证书放到服务器上,然后加上如下配置:

server {
    listen 443;
    server_name localhost;
    access_log /www/logs/packets.log; #需配置,日志文件
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ttf|woff)$
    {
        root /www/app/public; #需配置,文件目录
        expires 30d;
    }
    location ~ .*\.(js|css)?$
    {
        root /www/app/public; #需配置,文件目录
        expires 1h;
    }
    ssl on; #打开SSL功能
    ssl_certificate /etc/nginx/cert/214329605540164.pem; #CA证书位置
    ssl_certificate_key /etc/nginx/cert/214329605540164.key; #CA证书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_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        #proxy_set_header X-Nginx-Proxy true;
        proxy_set_header Connection "";
        proxy_pass http://localhost:3000;
    }
}

实用命令


查找被占用的端口

netstat -tln

netstat -tln | grep 80

netstat -tln 查看端口使用情况,而netstat -tln | grep 80 则是只查看端口80的使用情况


查看端口属于哪个程序

lsof -i :80


杀掉占用端口的进程

kill -9 进程id


查看进程动态

ps aux | grep node

-A 列出所有的进程

-w 显示加宽可以显示较多的资讯

-au 显示较详细的资讯

-aux 显示所有包含其他使用者的行程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值