• 汇总:centos7,jdk8,tomcat8.5,nginx,mysql57,redis安装,【推荐】


    centos7

    安装时按默认最小安装即可,安装完毕后,

    进入/etc/sysconfig/network-scripts/

    将ifcfg-enp0s3(以ifcfg开头的网卡名字),编辑

    将 ONBOOT="no" ,改为 yes。重启

    :关闭selinux:

    vi  /etc/selinux/config

    将SELINUX=enforcing改为disable。

    :关闭firewalld,关闭防火墙

    systemctl disable firewalld

    ----------------------------------------------------

    jdk8

    上传至/root目录,

    rpm -ivh jdk-8u231-linux-x64.rpm

    安装完毕后,默认就配好了环境变量等,

    运行javac -version ,和 java -version 可以查看验证

    ----------------------------------------------------

    安装tomcat8.5

    上传至 /root 目录

    tar -xvf apache-tomcat-8.5.50.tar

    mv apache-tomcat-8.5.50 tomcat

    cp -rf  tomcat  /usr/local/

    :配置自启动

    vim /lib/systemd/system/tomcat.service

    [Unit]
    Description=Tomcat
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/usr/local/tomcat/pid
    ExecStart=/usr/local/tomcat/bin/catalina.sh start
    ExecReload=/usr/local/tomcat/bin/catalina.sh restart
    ExecStop=/usr/local/tomcat/bin/catalina.sh stop
    
    [Install]
    WantedBy=multi-user.target

    在/usr/local/下面,建立tomcat的目录。确保路径真实有效。


    在tomcat的bin/catalina.sh里面,添加

    复制代码
    CATALINA_PID=/usr/local/tomcat/pid
    # OS specific support. $var _must_ be set to either true or false. cygwin=false
    ....略..
    复制代码

    创建软链接

    ln -s /lib/systemd/system/tomcat.service /etc/systemd/system/multi-user.target.wants/tomcat.service

    创建好了,重载一下

    systemctl daemon-reload

    设置开机自启

     systemctl enable tomcat

    -----------------------

    :tomcat设置

    tomcat 开启远程manger的办法

     首先需要修改tomcat/conf/tomcat-users.xml的用户权限修改为:

    <role rolename="admin-gui"/>
    <role rolename="manager-gui"/>
    <user username="admin" password="1234" roles="admin-gui,manager-gui"/>

    其次修改tomcat/webapps/host-manager/META-INF/context.xml和tomcat/webapps/manager/META-INF/context.xml,原始代码为:

    <Context antiResourceLocking="false" privileged="true" >
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
    allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1" />
    <Manager sessionAttributeValueClassNameFilter="java.lang.(?:Boolean|Integer|Long|Number|String)|org.apache.catalina.filters.CsrfPreventionFilter$LruCache(?:$1)?|java.util.(?:Linked)?HashMap"/>
    </Context>

    修改为:

    <Context antiResourceLocking="false" privileged="true" >
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
    allow="^.*$" />
    <Manager sessionAttributeValueClassNameFilter="java.lang.(?:Boolean|Integer|Long|Number|String)|org.apache.catalina.filters.CsrfPreventionFilter$LruCache(?:$1)?|java.util.(?:Linked)?HashMap"/>
    </Context>

    修改完成后不用重启tomcat,再进行远程访问,即可。

    :改nio的链接模式为nio的执行器

     <Service name="Catalina">
    
        <!--The connectors can use a shared executor, you can define one or more named thread pools-->
    <!-- 打开exec执行器,去掉注释 -->
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="150" minSpareThreads="4"/>
    
    
    
        <!-- A "Connector" represents an endpoint by which requests are received
             and responses are returned. Documentation at :
             Java HTTP Connector: /docs/config/http.html
             Java AJP  Connector: /docs/config/ajp.html
             APR (HTTP/AJP) Connector: /docs/apr.html
             Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
        -->
    <!--  将这段注释掉
       <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    -->
        <!-- A "Connector" using the shared thread pool-->
    
        <Connector executor="tomcatThreadPool"
                   port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />

    -----------------------------------------------------

    nginx

    上传至/root

    tar xvf nginx-1.14.2.tar.gz

    上传upstream至/root,

    tar  xvf nginx_upstream_check_module.tar.gz

    ###############

    (或者,安装运行git,git clone)

    yum install git

    git clone  https://github.com/yaoweibin/nginx_upstream_check_module.git

    ###############

    安装patch

    yum install patch

    // 进入nginx源码目录,第一层

    cd nginx-1.14.2

    //打源码补丁
    patch -p1 </root/nginx_upstream_check_module/check_1.14.0+.patch


    // 以下为编译nginx所需的lib

    yum install gcc-c++

    yum install -y pcre pcre-devel

    yum install -y zlib zlib-devel

    yum install -y openssl openssl-devel

    cd nginx-1.14.2
    // 配置,安装目录为 /usr/nginx ,add-module 的目录为上面git后的目录

    ./configure --prefix=/usr/nginx --with-http_ssl_module --with-http_realip_module --add-module=/root/nginx_upstream_check_module/

    在configure的摘要信息中,只有三个扩展,没有upstream的。另外配置了反向代理查看真实ip的模块

    make install

    cd /usr/nginx/sbin

    ./nginx

    :配置nginx

    vim  /etc/init.d/nginx

    编写脚本,注意三个地方(nginx执行文件所在目录,conf配置文件所在目录,pid文件需要和nignx的conf文件创建并保持一致),

    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 85 15
    # description:  NGINX is an HTTP(S) server, HTTP(S) reverse 
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /etc/nginx/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /var/run/nginx.pid
    #########################上面的pid文件,需要在服务器配置文件/usr/nginx/conf/nginx.conf中,去掉pid注释,并且配置为上面的这个目录。
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    ######################## 需要修改为实际的安装目录的可执行文件
    nginx="/usr/nginx/sbin/nginx"
    prog=$(basename $nginx)
    #######################需要修改为实际的配置服务器文件的所在位置
    NGINX_CONF_FILE="/usr/nginx/conf/nginx.conf"
    
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    
    lockfile=/var/lock/subsys/nginx
    
    make_dirs() {
       # make required directories
       user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=([^ ]*).*/1/g' -`
       if [ -n "$user" ]; then
          if [ -z "`grep $user /etc/passwd`" ]; then
             useradd -M -s /bin/nologin $user
          fi
          options=`$nginx -V 2>&1 | grep 'configure arguments:'`
          for opt in $options; do
              if [ `echo $opt | grep '.*-temp-path'` ]; then
                  value=`echo $opt | cut -d "=" -f 2`
                  if [ ! -d "$value" ]; then
                      # echo "creating" $value
                      mkdir -p $value && chown -R $user $value
                  fi
              fi
           done
        fi
    }
    
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        make_dirs
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        sleep 1
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $prog -HUP
        retval=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
        status $prog
    }
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
                ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    esac

    建立pid文件。重要!

    touch  /var/run/nginx.pid

    chmod 777 /etc/init.d/nginx

    chkconfig --add /etc/init.d/nginx

    chkconfig nginx on

    systemctl daemon-reload

    systemctl enable nginx

    systemctl start nginx

    编写 /usr/nginx/conf/nginx.conf

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;#    以下为 关键代码,需要改成和nginx启动脚本一致的目录文件
    pid          /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }

    :配置反向代理

    进入/usr/nginx/sbin 下,运行 ./nginx  看看报错信息

    如果提示check_http_expert_alive  或 ip_hash 错误,删除前面多余的空格。

    #keepalive_timeout 0;    keepalive_timeout  65;
    
    #gzip on;
       upstream yiwiki { 
      server 127.0.0.1:8080;
      server 112.126.56.244;
    check interval=3000 rise=2 fall=5 timeout=2000 type=http;
    check_http_expect_alive http_2xx http_3xx;
    ip_hash;
    } server {
    listen 80;
    server_name localhost; .......

    :配置80口

    server {
            listen       80;
            server_name  localhost;
            rewrite ^(.*)$ https://$host$1 permanent;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
    
            #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;
            }
    
    }

    :配置443 ssl 口

    server {
            listen       443 ssl;
            server_name  localhost;
       # 在conf目录建立cert目录,拷贝证书文件至此
            ssl_certificate     cert/5089556_www.yiwiki.cn.pem;
            ssl_certificate_key  cert/5089556_www.yiwiki.cn.key;
    
       #    ssl_session_cache    shared:SSL:1m;
            ssl_session_timeout  5m;
    
            ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_prefer_server_ciphers  on;
    
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            location / {
        #        root   html;
        #        index  index.html index.htm;

       proxy_set_header Host $host;
       proxy_set_header Referer $http_referer;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Real-Port $remote_port;
       proxy_set_header X-Real-User $remote_user; # 存放用户的真实ip
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 每经过一个反向代理,就会把反向代理IP存放在X-Forwarded-For>里

       proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr; #在多级代理的情况下,记录每次代理之前的客户端真实ip


    proxy_pass http://yiwiki/; } #健康监控 location /status { check_status; } }

    配置了nginx反向代理查看真实ip的模块,另外需要在java代码中,request.getHeader("X-Forwarder-For");获取真实ip

    ------------------------------------------------------

    安装mysql57

    上传mysql57-community-release-el7.rpm 至 /root

    或    yum install http://repo.mysql.com/mysql57-community-release-el7.rpm

    :安装mysql57的更新源

    安装此步后,在yum中可以看到mysql57版本,否则yum中不出现57版本

    rpm -ivh mysql57-community-release-el7.rpm

    :安装mysql-server

    yum install mysql-server

    运行服务器

    systemctl  start mysqld

    安装完毕后,第一次启动必须改密码,

    cat /var/log/mysqld.log | grep password

    查看到默认密码

    复制后,用默认密码登陆

    然后第一次登陆后,用alter user 改密码,默认8位数以上,有大小写,有标点

    alter user root@localhost identified by 'xxxxxxxxx';

    查看密码等级

    show variables like 'validate_password%';

    然后修改密码等级,

    set global validate_password_policy  = 0;

    //只是检测密码位数,LOW,不在限制大小混等

    初始化安全向导

    mysql_secure_installation

    然后加入自启动

    systemctl enable mysqld

    systemctl restart mysql

    进入后 用status查看版本状态等。

    修改vim /etc/my.cnf

    复制代码
    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
    
    [mysqld]
    #
    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M
    #
    # Remove leading # to turn on a very important data integrity option: logging
    # changes to the binary log between backups.
    # log_bin
    #
    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    character-set-server=utf8 
    collation-server=utf8_general_ci 
    performance_schema_max_table_instances=400 
    table_definition_cache=400 
    table_open_cache=256
    wait_timeout=5184000            
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    
    #default-character-set=utf8   这句话在5.6上没报错,但在5.7版本,报错。需要注释掉。
    
    [mysql.server]
    default-character-set=utf8
    
    
    [mysqld_safe]
    default-character-set = utf8
    
    
    [client]
    default-character-set = utf8
    复制代码

    show global variables like 'wait_timeout';

    show variables like 'character%';

    ------------------------------------------

    redis安装

    :安装docker

    yum install docker

    更新阿里云docker镜像源

    vim /etc/docker/daemon.json

    {

    "registry-mirrors": ["https://5dn8slzr.mirror.aliyuncs.com"]

    }

    做完之后,重新加载守护精灵进程

    systemctl daemon-reload

    systemctl restart docker

    docker pull redis

    设置随机自启动redis

    systemctl enable docker

    ##docker run -p 6379:6379 --restart=always redis  

    ##docker update --restart=no  containerId                   //如果之前忘了加密码,可以把之前的禁用掉,然后再重写一个。后面的参数是容器id,另外如果之前的不重写禁用,会再启动时覆盖后面新配的容器端口。

    docker run -p 6379:6379 --restart=always redis --requirepass "123456"

  • 相关阅读:
    HERO 3
    office的一些应用,
    网页之间的参数传弟
    一个好的数码网站
    C++遍历中删除std::hash_map元素问题
    【转】Asio与shared_ptr的一些注意事项
    delphi的字节对齐
    paypal的即时付款通知参数列表(PDT)
    vs2010下libevent的使用
    mysql 数据库 left join,right join, inner join 知识
  • 原文地址:https://www.cnblogs.com/sdgtxuyong/p/14338111.html
Copyright © 2020-2023  润新知