• EBIM部署文档


    初始化环境配置:

    sudo yum -y install net-tools wget vim epel-release psmisc telnet-server xinetd bind-utils sysstat ntpdate
    sudo yum group install "Development Tools" "Development Libraries"

    sudo yum -y install gcc make gcc-c++ openssl openssl-devel wget vim
    sudo yum -y install ntpdate sysstat epel-release net-tools psmisc
    sudo yum install cairo cairo-devel cairomm-devel libjpeg-turbo-devel pango pango-devel pangomm pangomm-devel giflib-devel
    #时间同步设置
    */30 * * * * /usr/sbin/ntpdate us.pool.ntp.org |logger -t NTP
    #开启firewalld
    firewall-cmd --permanent --add-port=3000/tcp
    firewall-cmd --permanent --add-service=http
    #设置允许某个ip或网段访问某个端口或服务
    firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.0.8" port port="80" protocol="tcp" accept'

    firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" port port="80" protocol="tcp" accept'
    firewall-cmd  --permanent --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" accept'
    firewall-cmd --reload

    EBIM环境配置:

    1). NODEJS安装(两种方式:源码安装和nvm版本管理工具安装,推荐1.2安装方式

    1.1)Node.JS(6.10.3):

    yum -y install gcc gcc-c++ openssl-devel   ##确认服务器有node.js编译及依赖相关软件
    yum -y install nodejs npm  ##(EPEL-release安装)
    wget https://nodejs.org/dist/v6.10.3/node-v6.10.3.tar.gz ##(以下步骤为源码安装)
    sudo tar zxvf node-v6.10.3.tar.gz && cd node-v6.10.3 && sudo ./configure --prefix=/usr/local/node && sudo make && sudo make install
    vim /etc/profile
    [root@BobServerStation node-v0.10.24]# vim /etc/profile
    #set nodejs env
    export NODE_HOME=/usr/local/node
    export PATH=$NODE_HOME/bin:$PATH
    export NODE_PATH=$NODE_HOME/lib/node_modules:$PATH
    [root@BobServerStation node-v0.10.24]# source /etc/profile  ##重启生效
    View Code

     1.2)nvm: nodejs版本管理

    
    
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash   ##nvm安装 
    ## 安装完成后,会发现使用nvm install stable 安装node速度很慢。使用国内镜像快速安装node: 把环境变量 NVM_NODEJS_ORG_MIRROR, 加入到 .bash_profile 文件中:
    ## nvm export NVM_NODEJS_ORG_MIRROR
    =https://npm.taobao.org/mirrors/node
    ## nvm 使用参考https://github.com/creationix/nvm
    # 设置 npm 淘宝镜像
    npm install -g pm2 --registry=https://registry.npm.taobao.org

     1.3)Linux添加字体(点击这里

    2).MongoDB(集群方式参考MongoDB副本集原理、搭建、应用(5)):

    systemLog:
        quiet: false  
        path: /data/mongodb/logs/mongom.log  
        logAppend: false
        destination: file
        logRotate: rename
    
    processManagement:  
        fork: true  
        pidFilePath: /data/mongodb/dbm/mongod.pid  
    net:  
        bindIp: 127.0.0.1  
        port: 27017  
        maxIncomingConnections: 65536
        wireObjectCheck: true  
        ipv6: false   
    storage:  
        dbPath: /data/mongodb/dbm
        indexBuildRetry: true  
        journal:  
            enabled: true  
        directoryPerDB: true
        engine: wiredTiger  
        syncPeriodSecs: 60   
        wiredTiger:  
            engineConfig:  
               # cacheSizeGB: 8  
                journalCompressor: snappy  
                directoryForIndexes: false    
            collectionConfig:  
                blockCompressor: snappy  
            indexConfig:  
                prefixCompression: true  
    operationProfiling:  
        slowOpThresholdMs: 100  
        mode: all
    security:  
        #authorization: enabled  
        #clusterAuthMode: keyFile  
        #keyFile: /usr/local/mongodb/conf/keyfile  
        javascriptEnabled: true  
    setParameter:   
        enableLocalhostAuthBypass: true  
        authenticationMechanisms: SCRAM-SHA-1
    replication:  
        oplogSizeMB: 4096
       #replSetName: ebim
    MongoDB3.4 mongo_template.conf
    sudo wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.8.tgz
    sudo wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.4.tgz
    sudo wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.9.tgz sudo tar zxvf mongodb-linux-x86_64-rhel70-3.4.4.tgz
    && sudo mv mongodb-linux-x86_64-rhel70-3.4.4 /usr/local/mongodb && sudo cd /usr/local/mongodb && sudo mkdir conf 创建启动配置文件: mkdir -p /home/mongodb/data/dba mkdir -p /home/mongodb/logs vim conf/mongoa.conf #以下内容为mongoa.conf配置文件内容 port=27017 dbpath=/home/mongodb/data/dba logpath=/home/mongodb/logs/mongoa.log journal=true logappend=true storageEngine=wiredTiger #auth=true fork=true nohttpinterface=true #relica set 配置 oplogSize=4096 #replSet=ebim #keyFile=/usr/local/mongodb/conf/replkeyfile 启动mongodb服务: /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongoa.conf

    2.1).配置MongoDB帐号:

     1 >use admin
     2 switched to db admin
     3 > db.createUser(
     4 ...  {
     5 ...    user: "root",
     6 ...    pwd: "password",
     7 ...    roles: [
     8 ...       { role: "root", db: "admin" }      #超级root帐号
     9 ...    ]
    10 ...  }
    11 ... )
    12 >use ebimdb
    13 switched to db ebimdb
    14 > db.createUser(
    15 ...  {
    16 ...    user: "ebim",
    17 ...    pwd: "password",
    18 ...    roles: [
    19 ...       { role: "readWrite", db: "ebimdb" }
    20 ...    ]
    21 ...  }
    22 ... )
    23 
    24 添加keyfile认证文件,并配置权限
    25 openssl rand -base64 741 > /usr/local/mongodb/conf/replkeyfile
    26 chmod 600 /usr/local/mongodb/conf/replkeyfile

    2.2) . 修改MongoDB配置文件(mongoa.conf):   去除auth,keyFile参数注释.(副本集则需要将keyfile 认证文件copy到所有所有节点,并去除配置文件replSet参数注释)

    3 ) . EBIM服务端部署:

    修改全局安装npm package权限(nvm安装无需执行此步骤)
    sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
    安装pm2
    npm i pm2 -g
    安装ImageMagick,unoconv
    sudo yum install ImageMagick.x86_64 ImageMagick-devel.x86_64 unoconv libreoffice cjkuni-ukai-fonts.noarch cjkuni-uming-fonts.noarch texlive-cjk.noarch texlive-cjk-doc.noarch texlive-xecjk.noarch texlive-xecjk-doc.noarch

    3.1).修改服务端配置,并执行初始化:

    #修改配置文件参数
    vim config/env.js
    vim config/services/production.js
    #服务端初始化
    node bin/shell.js ./init.js
    #启动服务
    pm2 start pm2.ebim.config.js --env=production && pm2 start pm2.worker.config.js --env=production

    4).Nginx

    yum -y install nginx
    
    Nginx配置文件:
    
    user  nginx nginx;
    worker_processes  auto;
    
    error_log  /var/log/nginx/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    pid        /run/nginx.pid;
    worker_rlimit_nofile 65535;
    
    events {
        use epoll;
        worker_connections  65535;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        charset  utf-8;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 500m;
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  60;
    
        tcp_nodelay on;
    
        #fastcgi_connect_timeout 300;
        #fastcgi_send_timeout 300;
        #fastcgi_read_timeout 300;
        #fastcgi_buffer_size 64k;
        #fastcgi_buffers 4 64k;
        #fastcgi_busy_buffers_size 128k;
        #fastcgi_temp_file_write_size 256k;
    
        open_file_cache max=65535 inactive=20s;
        open_file_cache_min_uses 5;
        open_file_cache_valid 60s; 
        
        proxy_redirect off;
        proxy_connect_timeout    60;
        proxy_read_timeout       120;
        proxy_send_timeout       20;
        proxy_buffer_size        32k;
        proxy_buffers            4 128k;
        proxy_busy_buffers_size 256k;
        proxy_temp_file_write_size 256k;
    
        gzip  on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types       text/plain application/x-javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied        expired no-cache no-store private auth;
        gzip_disable        "MSIE [1-6].";          
    
        server_tokens off;
    
        upstream web_server {
            server 127.0.0.1:3010 weight=1 max_fails=2 fail_timeout=30s;
            server 127.0.0.1:3011 weight=1 max_fails=2 fail_timeout=30s;
            server 127.0.0.1:3012 weight=1 max_fails=2 fail_timeout=30s;
            server 127.0.0.1:3013 weight=1 max_fails=2 fail_timeout=30s;
            server 127.0.0.1:3014 weight=1 max_fails=2 fail_timeout=30s;
            server 127.0.0.1:3015 weight=1 max_fails=2 fail_timeout=30s;
            server 127.0.0.1:3016 weight=1 max_fails=2 fail_timeout=30s;
            server 127.0.0.1:3017 weight=1 max_fails=2 fail_timeout=30s;
            server 127.0.0.1:3020 weight=1 max_fails=2 fail_timeout=30s;
         }
    
        server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            access_log  /var/log/nginx/access.log  main;
    
            location / {
                #root   html;
                #index  index.html index.htm;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_pass http://web_server;
                proxy_http_version 1.1;
                proxy_set_header Host  $host;
                proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP  $remote_addr;
            }
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ .php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ .php$ {
                #root           html;
            #   fastcgi_pass   127.0.0.1:9000;
            #   fastcgi_index  index.php;
            #   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #   fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            #   include        fastcgi_params;
            # }
    
            location /status {
                stub_status on;
                access_log   off;
            }
    
            #location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
            #   {
            #        expires      30d;
            #    }
    
            #location ~ .*.(js|css)?$
            #   {
            #        expires      12h;
            #    }
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /.ht {
            #    deny  all;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    
        # HTTPS server
        #
        #server {
        #    listen       443 ssl;
        #    server_name  localhost;
    
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
    
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
    
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    include vhost/*.conf;
    }
    View Code

    5).添加MongoDB  EBIM服务为开机启动

    #mongodb开机启动
    vim /usr/lib/systemd/system/mongod.service
    [Unit]
    Description=mongodb
    After=network.target remote-fs.target nss-lookup.target
     
    [Service]
    LimitCORE=infinity
    LimitNOFILE=65535
    #LimitNPROC=
    #User=mongo
    #Group=mongo
    Type=forking
    Environment=MONGOFILE=/usr/local/mongodb344/conf/mongom.conf
    #EnvironmentFile=/usr/local/mongodb/conf/mongo.env
    PIDFile=/home/mongodb/data/dba/mongod.pid
    ExecStart=/usr/local/mongodb344/bin/mongod -f $MONGOFILE
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    Restart=on-failure
    RestartSec=42s
    PrivateTmp=true
     
    [Install]
    WantedBy=multi-user.target
    #EBIM开机启动
    chmod +x /etc/rc.d/rc.local
    ## ln -s /usr/local/node/bin/node /usr/bin/node
    vim /etc/rc.d/rc.local
    su - ebim -c "/usr/local/node/bin/pm2 start /home/ebim/xxx/pm2.ebim.config.js --env=production"
    su - ebim -c "/usr/local/node/bin/pm2 start /home/ebim/xxx/pm2.worker.config.js --env=production"

    6).数据备份:

    30 4 * * 3 /bin/sh /home/scripts/mongobak.sh  
    #!/bin/bash
    FLODER="/home/mongobak"
    DATE=$(date '+%Y-%m-%d')
    if [ ! -d "$FLODER" ];then
        mkdir -p "$FLODER"
    fi
    cd /usr/local/mongodb
    ## ./bin/mongodump  -o /home/mongobak/mongodb-$DATE
    ./bin/mongodump --port=27018 -u root -p xxx --oplog -o /home/mongobak/mongodb-$DATE
    find /home/mongobak -mtime +10 |xargs rm -rf
  • 相关阅读:
    查看gpu和cpu使用情况 linux
    Oracle通过数据文件进行 数据恢复
    LeetCodeJava题解 283. Move Zeroes
    LeetCodeJava题解 844. Backspace String Compare
    LeetCodeJava题解 27. Remove Element
    LeetCodeJava题解 367. Valid Perfect Square
    LeetCodeJava题解 26. Remove Duplicates from Sorted Array
    EasyExcel实现合并一列的多行数据
    编辑qml的工具及插件
    qml学习(Qt Quick)
  • 原文地址:https://www.cnblogs.com/Easonlou/p/6599160.html
Copyright © 2020-2023  润新知