Linux centos 安装软件

 

1:Linux压缩、解压缩

linux 下面的软件也区分32和64位,其中软件有deb,rpm,tar.gz,bin,其中tar.gz是软代码包要手工编译之后才能安装。

linux ubuntu 下面可以使用deb、tar.gz、bin,使用apt-get相关命令安装

tar xzf redis-4.0.8.tar.gz  解压;

01-.tar.gz格式
解压:[*******]$ tar zxvf  FileName.tar.gz
压缩:[*******]$ tar zcvf  FileName.tar.gz  DirName

02-.zip格式
解压:[*******]$ unzip wwwroot.zip
压缩:[*******]$  zip -r mydata.zip mydata/  

 

linux centos 下面使用 rpm、tar.gz、bin,使用yum、wget下载相关安装命令

centos 安装wget命令
yum -y install wget
unbuntu :  sudo apt-get install zip
centos : yum install -y unzip zip;

 

linux centos7 的防火墙使用了新的firewall ,禁用但保留之前的防火墙iptables

=========================================================

1: 中文是否正常(中文目录)

2: 相关字体是否显示(服务器是否安装了相关字体,否则,java 代码生成的pdf、word、图片等中文字体都无法显示)

3: 相关emoj表情是否显示,mysql数据库就要处理,否则页面全部显示的是???

=========================================================

 

linux 命令查询1:http://www.runoob.com/linux/linux-yum.html

linux命令查询2:

2:centos 7安装jdk  java8

1:安装之前先检查一下系统有没有自带open-jdk
 命令:

rpm -qa |grep java

rpm -qa |grep jdk

rpm -qa |grep gcj
2:如果没有输入信息表示没有安装。

如果安装可以使用rpm -qa | grep java | xargs rpm -e --nodeps 批量卸载所有带有Java的文件  这句命令的关键字是java
 首先检索包含java的列表
yum list java*

检索1.8的列表
yum list java-1.8*   
3:安装1.8.0的所有文件
yum install java-1.8.0-openjdk* -y
4:使用命令检查是否安装成功
java -version
5:到此安装结束了。这样安装有一个好处就是不需要对path进行设置,自动就设置好了



######## 如果jdk已经按照好了,查找路径 ######### which java 或者 whereis java ,
其他见:环境部署(四):Linux下查看JDK安装路径 https://www.cnblogs.com/imyalost/p/8745137.html

当然也有其他方式安装,但可能手工配置path

x

centos7通过yum安装JDK1.8 x

2:centos jdk 安装 和 tomcat按照

CentOS7 安装 Java 8 以及Tomcat8

 

附加说明:
1:tomcat官网下载 https://tomcat.apache.org/download-80.cgi   下载二进制跨平台版本Binary Distributions-->core-->zip
   wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.zip
2:使用secureCRT  linux fstp put命令 把压缩包上传到 linux服务器/usr/local/目录
3:zip模式使用 unzip解压,即可使用tomcat; 或者 gz格式:tar -xvzf xxxxx-1.9.9.tar.gz
4: 重命名  mv apache-tomcat-8.5.45 tomcat8-8081
5: 另外tomcat下面的bin目录的可以执行性文件要授权 
   chmod 777 *.sh 添加所有最高权限。
   chmod u+x *.sh    u代表所有者,x代表执行权限。 + 表示增加权限。
6: 启动完成tomcat显示:org.apache.catalina.startup.Catalina.start Server startup in 580068 ms
   发现 CentOS环境下tomcat启动超级慢的解决方案,tomcat启动了5、6分钟(https://yq.aliyun.com/articles/106290?t=t1), 
   在catalina.sh里面合适的地方加入: /usr/local/tomcat85/bin
 JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom"

另外的优化设置和jvm崩溃日志位置设置,vi  catalina.sh  在cygwin=false前面加入下面的优化设置。 查看内存大小:cat /proc/meminfo | grep MemTotal  
注意这个参数要与时俱进,不同版本,配置参数可能不一样;PermSize、MaxPerSize tomcat8+已经删除;编码格式UTF-8一共有两个文件有,这里的也不能缺少; 这里指定 错误日志位置
# 初始化内容和最大内存必须合理,否则也会导致tomcat崩溃;hs_err_pid71136.log【tomcat根目录】,保持一行。
【-Dfile.encoding=UTF-8】 千万不能缺失,否则报错 utf8 编码相关错误
JAVA_OPTS='-server -Xms512m -Xmx1024m -XX:MaxNewSize=512m -Xss2m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -Dfile.encoding=UTF-8 -XX:ErrorFile=/var/log/java/hs_err_pid_%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/java/dump'

### -server: 正式服务器请开启;  -Xms2048m -Xmx2048m: 系统初始化和最大使用内存,建议设置为系统的50% 或者 30%; 上面用8G内存服务器来算。


##如果 tomcat使用服务方式启动报错,类似:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined , 请在 catalina.sh 顶部加入JAVA_HOME路径
#!/bin/sh
export JAVA_HOME="/usr/local/JDK/jdk1.8"



##这里配置生产环境的日志catalina.out太大的问题; 我们关闭把日志;这里日志动不动4-5G, 上10G的。直接关闭了
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out              
===========>
CATALINA_OUT=/dev/null
或者X1:解决Tomcat catalina.out 不断成长导致档案过大的问题 https://blog.csdn.net/weixin_36586564/article/details/78550110
或者X2: 设置tomcat环境部署下,不会生成catalina.out日志  https://blog.csdn.net/litchiflesh/article/details/86676720
或者X3: 浅谈LOG日志的写法《日志对应写法对应关系 》 vi conf/logging.properties https://www.cnblogs.com/jpfss/p/11014488.html
或者X4: Tomcat的catalina.out日志分割 https://blog.csdn.net/ab601026460/article/details/104122627

error、  warn、   info、debug、           trace五个级别
SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST
或者off直接关闭

7: 8080端口添加到防火墙例外并重启 firewall-cmd --zone=public --add-port=8080/tcp --permanent      firewall-cmd --reload 如果没有启动报错:FirewallD is not running,购买的阿里云服务器默认可能没有启动;    Centos7使用firewalld替换之前的iptables    centos中iptables和firewall防火墙开启、关闭、查看状态、基本设置等 (http://blog.csdn.net/bbwangj/article/details/74502967) 7: 检查是否运行成功   curl http://localhost:80/index.html
8:修改编码方式UTF-8:
server.xml; 可以搜索:connectionTimeout,说明要修改地方
8-1:url编码
8-2:connectionTimeout 等待超时市场,默认20 000ms, 这里改完60s,不限制就是-1. tomcat调优
最大线程+等待线程acceptCount,其余将会抛弃掉
    protocol="HTTP/1.1"
    redirectPort="8443"/>  

9: 删除无用的端口占用 AJP;AJP 是供 tomcat 和 apache 进行配置使用的
一般情况,都用不上,直接注释AJP这一行。
 
  
10: 设置了编码格式,还是部分地方存在乱码; 最后这个一定也要加
    如果是安装版本的tomcat,请在 管理界面的 JAVA->JAVA OPTIONS: 最后面一行添加:
    -Dfile.encoding=UTF-8

加快tomcat启动速度,删除系统自带的实例应用;如何优化提高tomcat启动速度 x

X 设置tomcat默认启动项目X tomcat 设置虚拟访问目录 X

Linux centos 安装软件_第1张图片

 

 
            
                
                
                
                
                
                
                
                
                
		            
                
                
            
            
            
                  
                
                
                

                
                
                       
                       

            

 

创建映射目录:
1: cd /usr/local/tomcat85/ & mkdir xueyouhuiUploadRoot  
2:进入upload目录
 mkdir upload & mkdir ueditor

启动

1:进行tomcat目录:  cd /usr/local/tomcat85/bin
2: 后台运行  nohup ./startup.sh &
3: 如果需要可以查看 运行进程(root后的就是进程):ps -ef |grep tomcat8
4:如果需要可以杀死进程 : kill -9  xxxx

 

tomcat服务形式启动,开机自动启动配置

最后就 “Centos7安装配置tomcat 9并设置自动启动”  tomcat 和 nginx自动 重启都测试了可以;  下单配置文件:tomcat.service x

或者参见:博客 x 这个博客都可以,说的是一样的

注意事项1:

    如果启动失败报:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined, 请在

  请在 catalina.sh 最顶部加入,不知道jdk 在哪里 echo $JAVA_HOME  或者 echo $PATH

  #!/bin/sh

  export JAVA_HOME="/usr/local/JDK/jdk1.8"

x

3:nginx 安装

nginx完全卸载删除 

nginx安装实际非常简单,这里是需要支持ssl、支持端口转发, 因此自己进行编译,步骤稍微比较麻烦

nginx简介:nginx主要做7层的应用层的反向代理,一般基于url 进行代理。 

4层的反向代理,比如LVS或者haproxy, 当然最新版的nginx也慢慢支持4层基于端口的映射了。

 

nginx反向代理:平时我们用nginx都是反向代理,反向代理是代理的server端,比如server有多台局域网的服务器。

nginx正向代理:正向代理代理的是client端, eg1 服务器在内网,需要内网要通过163邮箱服务器进行发送邮箱;eg2: 科学的上网

3-1: 参考链接地址,阿里云资料

  CentOS 7.4 实例配置 Nginx + HTTPS 服务  x  或者 https://help.aliyun.com/ 输入搜索关键词

3-2: 参考链接地址,CNBLOG

X Centos7安装Nginx实战  X

X nginx 4层代理配置(udp、tcp) X

3-3: 到Nginx官网下载最新的nginx包,zip 或者 tar.gz 都可以  CentOS7安装Nginx及配置  

wget https://nginx.org/download/nginx-1.16.1.tar.gz
#wget https://nginx.org/download/nginx-1.14.2.tar.gz  #老版本,之前自己用的最多的,目前不用了,用1.16

3-4: 解压

tar -xvzf nginx-1.16.1.tar.gz

或者

unzip nginx-1.16.1.tar.gz

安装nginx编译环境C++

前置安装1:C++
ububtu平台编译环境可以使用以下指令

apt-get install build-essential
apt-get install libtool

--------------------------------
centos平台编译环境使用如下指令

安装make: yum -y install gcc automake autoconf libtool make
安装g++:  yum install gcc gcc-c++

--------------------------------
--------------------------------
前置安装2: 安装PCRE库
 
$ cd /usr/local/
 
$ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz
 
$ tar -zxvf pcre-8.36.tar.gz
 
$ cd pcre-8.36
 
$ ./configure
 
$ make && make install
 
如报错:configure: error: You need a C++ compiler for C++ support
 
解决:yum install -y gcc gcc-c++
 

--------------------------------
--------------------------------
前置安装3: openssl
 
$ cd /usr/local/
 
$ wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz
 
$ tar -zxvf openssl-1.1.1c.tar.gz
 
$ cd  openssl-1.1.1c
 
$ ./config         【这个一步完成一定看一下是否有报错】
 
$ make && make install   【这一步很慢的,慢慢等】
 

按照完成我们查看一下版本:openssl version   ,如果报错,我们继续下面
检测命令是否有软连接:dd $(which /usr/local/nginx/sbin/nginx)  
我们创建软连接:
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1 
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1  
执行完,我们再次查看版本


 

--------------------------------
--------------------------------
前置安装4: 安装zlib库存
安装zlib库存
$ cd /usr/local/
$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxvf zlib-1.2.11.tar.gz
$ ./configure
$ make && make install


--------------------------------
--------------------------------
最后编译ngxin
前置条件的必须按照成功,尤其是openSSL,否则这里第一步都会报错的
进入Nginx解压缩目录
cd /usr/local/nginx-1.16.1/

./configure \
--user=nobody \
--group=nobody \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_sub_module \
--with-openssl=/usr/local/openssl-1.1.1c \
--with-http_ssl_module \ 
--with-stream 


###这里编译环境总是找不到openssl,这里手工指定一下位置 

(--with-http-ssl-module 这个不加后面在nginx.conf配置ssl:on后,启动会报,是为了支持https, 
不添加报错:nginx: [emerg] unknown directive "ssl" in /opt/nginx/conf/nginx.conf 异常 )
(--with-stream是为了支持4层基于端口的代理; 平时用都是7层的。可选)
(--with-mail    #该选项用于启用mail模块,该模块默认没有被激活。可选)
(--with-mail_ssl_module \    #为了代理任何一种类型的使用SSL/TLS的mail,激活该模块。可选)

【这里是指定编译的时候把相关的模块安装到nginx里面。】  
编译参数说明: Nginx:编译安装/动态添加模块 https://www.cnblogs.com/Dy1an/p/11227796.html
【编译这一步必须不能报错,如果报错,检查完成】

make & make install
【这步完成会从新生成一个目录/usr/local/nginx】 make挺慢的,一般make命令最后会卡顿,提示:#这里经常出现这样的提示  make[1]:leaving directory  '/usr/local/nginx-1.16.1  #不用理睬 就可以

make install 最后我们再次执行一下这个命令,就OK了

--------------------------------
--------------------------------
安装完成, 会重新产生一个目录 /usr/local/nginx,并生成 sbin、conf等目录。
里面就是 nginx可执行文件; 以前的 /usr/local/nginx-1.16.1可以删除了

3-5: 常见目录介绍
nginx常用配置nginx.conf: https://download.csdn.net/download/ab601026460/10485093 x

最简单配置

#nginx版本 nginx 1.14.x; 后面新项目使用: 1.16.x
#user  nobody;  #指定nginx用户,一般重新创建一个新用户给nginx
# nginx 是一个7层的代理服务,支持对url的转发。对4层的转发,如端口需要使用haproxy, 或者 lvs。 最新的nginx也支持对4层代理了。

worker_processes  8; ## worker_ processes 8; 工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。 ;cat /proc/cpuinfo | grep "cpu cores" | uniq

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

# pid 特指的是 主进程编号
#pid        logs/nginx.pid;


events {
    worker_connections  102400; ##这里原来是1024,现在后面多家两个0;每一个进程打开的最大连接数;  最大连接数 = worker_processes * worker_connections/4
    multi_accept on; #可以一次建立多个连接
    #use epoll;#IO多路复用方式
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    client_max_body_size 500m;# 设置1: 设置上传大小Sven
    server_tokens off; #设置2 隐藏http响应头里面显示nginx版本号,防止别人根据版本漏洞进行攻击

    ##设置3
    ###start 设置允许跨域,在这里设置了,就不用在java代码设置了:CrossOrigin ####
    ### 一般不要设置*,设置* 容易遭到跨站点 cros攻击,最好只设置运行 访问的外部网站
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers X-Requested-With;
    add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
    ###end ###

    # 设置4: 获取客户端ip地址 Sven
    proxy_set_header X-Real-IP  $remote_addr;##获取客户端的真实ip,如果不加,就会代理服务器内网的ip
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;##防止客户端多层代理,获取不到真实的ip,Forwarded可以获取到 ip,代理ip1,代理ip2...,整个请求过程的所有ip
    proxy_set_header X-Forwarded-Scheme  $scheme; #增加一个header, 处理 SSL 认证之后,request.getScheme()获取不到https的问题记录


    # 设置5: 速率限制 + 并发限制 https://www.cnblogs.com/biglittleant/p/8979915.html
    # http://nginx.org/en/docs/  搜索:limit
    #### limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 "leaky bucket"。
    #### limit_req_conn 用来限制同一时间连接数,即并发限制。
    ### mylimit_req_name1 : 是自己给规则起的名称,可以随便起,
    ### $binary_remote_addr 是基于客户端ip,
    ### 如果超过限制:Response code: 429、Response message: Too Many Requests
    ### 如果超过限制:Response code: 503、Response message: Service Temporarily Unavailable;  服务器临不可用,服务器限流了
    ### _status 可以自定义超过限流的状态码
    limit_req_zone $binary_remote_addr zone=mylimit_req_name1:10m rate=800r/s;### 生成一个名字mylimit_req_name1的内存区域大小10MB,用来存储访问的频次信息。80QPS单个ip
    limit_req zone=mylimit_req_name1 burst=5 nodelay;##QBS大于阀值,请求排队个数(burst),排队的请求,nodelay(立即执行)
    limit_req_status 429;
    #---
    limit_conn_zone $binary_remote_addr zone=mylimit_conn_name1:10m;##生成一个名字叫做 mylimit_conn_name1的内存区域是10m的连接限制
    limit_conn mylimit_conn_name1 200;##单个ip限制连接数,这里20个
    limit_conn_status 428;

    #设置5:开发阶段,禁止缓存。把下面代码打开,每次请求都是最新的文件。
    #比如,可以自己写一个txt文件,使用微信打开,添加点内容。然后微信在打开,就可以看到效果。
    #注意,不要和  expires 1d; 冲突设置
    add_header Cache-Control no-cache;
    add_header Pragma no-cache;
    add_header Expires 0;

    ##设置6:504报错解决,完美解决Nginx 504 Gateway time-out; 系统有超过 300~500mb的视频,这了,超时时间调整为30分钟;
    ## 有时候,客户上传 比如 500MB的视频,或者导入 上万条的数据, 并且需要 业务处理。就非常慢,这里就调整大这个时间;
    proxy_connect_timeout  10s;#nginx跟后端服务器连接超时时间(代理连接超时)。【【代理服务器和后端的real server之间的超时】】,设置1s 或者 10s把。不能设置太大
    proxy_send_timeout  1800s;#后端服务器数据回传时间(代理发送超时)
    proxy_read_timeout  1800s;#连接成功后,后端服务器响应时间(代理接收超时)
    fastcgi_connect_timeout 1800s;#指定nginx与后端fastcgi server连接超时时间
    fastcgi_send_timeout 1800s;#指定nginx向后端传送请求超时时间(指已完成两次握手后向fastcgi传送请求超时时间)
    fastcgi_read_timeout 1800s;#指定nginx向后端传送响应超时时间(指已完成两次握手后向fastcgi传送响应超时时间)

    #与浏览器的长连接
    keepalive_timeout  1000;#长连接超时时间
    keepalive_requests 500;#500个请求以后,关闭长连接
    keepalive_disable msie6;#ie6禁用


    #    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  logs/access.log  main;
    #    #默认写日志:打开文件写入关闭,max:缓存的文件描述符数量,inactive缓存时间,valid:检查时间间隔,min_uses:在inactive时间段内使用了多少次加入缓存
    #    open_log_file_cache max=200 inactive=20s valid=1m min_uses=2;

    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    #生产环境关闭把,图书商城和bobo乐园项目,运行几个月10G的日志;tomcat logs/catelina.out也能达到10G;太费空间了
    # 生成环境一般 tomcat日志太多。或者nginx日志太大;
    #access_log logs/access.log main;
    access_log off;
    error_log /dev/null;


    #只有开启了sendfile,tcp_nopush才起作用
    #tcp_nodelay和tcp_nopush互斥,二者同时开启,nginx会: (1)确保数据包在发送给客户端之前是满的
    #(2)对于最后一个数据包,允许tcp立即发送,没有200ms的延迟
    #    tcp_nodelay on;
    #    sendfile       on;
    #    tcp_nopush     on;

    #开启GZIP压缩功能 压缩级别(gzip_comp_level),1~10,数字越大压缩的越好,时间也越长,看心情随便改吧;但是越大不一定压缩一直增加
    gzip  on;
    gzip_min_length 2k;
    gzip_buffers 4 16k;
    gzip_comp_level 5;
    gzip_types text/plain application/x-javascript application/javascript text/css application/xml application/json text/javascript application/x-httpd-php image/jpeg image/gif image/png image/svg+xml;
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";
    gzip_static on; #如果有压缩好的 直接使用
    underscores_in_headers on;

    ##########################################
    ##缓存相关还没开启 proxy_cache_path
    ##########################################

    #Nginx 做负载均衡的几种轮询策略
    #ip_hash;每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
    #ip_hash: ❗️❗️❗️问题,可能一台服务器挂掉了,就 部分用户一直访问不了的; 建议使用redis解决session问题;不推荐使用
    #RR; 默认 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    #weight和访问比率成正比,用于后端服务器性能不均的情况。
    #server 192.168.1.10 weight=1;
    upstream tomcat {
        #ip_hash;
        server 127.0.0.1:8080 weight=2;
        server 127.0.0.1:8081 weight=1 max_fails=3 fail_timeout=20s;## Nginx负载均衡配置fail_timeout https://segmentfault.com/q/1010000013600965
        keepalive 2000;
    }

    ###强制访问让http访问重定向到htts$$$$$
    server {
        listen 80;
        server_name  test.ourslook.com ;
        rewrite  ^(.*)    https://test.ourslook.com$1 permanent;

        #解决少输入一个斜杠导致的页面无法正常访问的问题;比如,客户输入的地址是:https://www.weddinglove.xyz/hunqing,但是少输入了一个/ 斜杠导致,这个index.html里面的js和图片全部访问路径错误,要如何配置可以直接重定向 到 带有斜杠的页面
        #具体解决请查看:https://coding.imooc.com/learn/questiondetail/96176.html
        #^是正则的开始,$表示正则的结束
        #rewrite ^/hiber /hiber/ permanent;

        ### ~ 符合正则匹配
        ### ~* 符合正则匹配,判断时候不区分大小写
        ### !~ 不符合正则匹配
        ### !~* 不符合正则匹配,判断时候不区分大小写
        #        if ($http_host !~ "^new8090.net(.*)sportpartner$") {
        #            rewrite  ^(.*)    https://www.new8090.net$1 permanent;
        #        }
    }

    ############################ 婚庆项目配置方式 START #######################
    ####1:强制使用了https使用了`error_page 497  https://$host$uri?$args;` 配置
    ####2:强制使用www这个二级域名,非www 重定向到www `rewrite  ^(.*)    https://www.weddinglove.xyz$1 permanent;` 使用301永久重定向
    ####3:删除了原来80端口的配置,80和443同时写到一个server里面
    ####4: HTTPS server证书配置
    ####4: 说明:比如www.baidu.com 和 music.baidu.com 都是二级域名,即:www 就是二级域名
    #######################################################################
    #server可以配置成多个,每一个都可以配置成为不同的域名。如:测试服务器可以同时是:test.ourslook.com域名;test1.ourslook.com域名,两个域名首页还完全不一样。
    # 同时支持 http 和 https 就必须分开写两个server
    server {
        listen       80;
        listen       443;#阿里云端口必须打开
        server_name  jl-media.cn;

        ##SSL 每一项配置含有说明、启用免费证书 https://segmentfault.com/a/1190000002866627?utm_source=tag-newest
        ssl on;
        ##SSL 优化, SSL安全,但是也有弊端;ssl握手的时候,需要增加和服务器的链接;这里开启缓存,减小影响
        ssl_session_timeout 10m; #SSL session 会话有效期10分钟 http://nginx.org/en/docs/http/ngx_http_ssl_module.html
        ssl_session_cache shared:SSL:20m;##session 缓存到服务器,大小10MB,一兆字节可以存储大约4000个session
        ## linx
        #ssl_certificate   /usr/local/ssl/cert/full_chain.pem; ##说明:这个文件是:证书 + CA证书 两部分合起来的文件,发现有两段
        #ssl_certificate_key  /usr/local/ssl/cert/private.key; ##说明:key是私钥private.key;   使用新目录ssl/cert, 防止 nginx目录编号导致的证书丢失
        ## windows 这里全路径
        ssl_certificate   D:\\freessl\\full_chain.pem; ##说明:这个文件是:证书 + CA证书 两部分合起来的文件,发现有两段
        ssl_certificate_key  D:\\freessl\\private.key; ##说明:key是私钥private.key

        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;#禁用TLS1.0 TLS (PCI DSS合规判定) v1.0或更早的加密协议将会判定为不合规;TLSv1
        ssl_prefer_server_ciphers on;

        #让http请求重定向到https请求
        error_page 497  https://$host$uri?$args;


        #重定向301 永久重定向  http://www.sojson.com/blog/178.html
        #只是一级域名“sojson.com” 跳转到www.sojson.com去。强制使用www 二级域名 承联官网项目
        #学有惠 nginx 没有做这个配置,并且可以自动跳转到www;其实是错误的:不使用www根本访问不了; 可以 ping xueyouhui.top 根本无法ping通;必须ping www
        #简而言之:域名绑定的是 www.xueyouhui.top这个二级域名
        ## permanent 永久重定向301;redirect:临时重定向 302;      break 停止; last: 停止,并访问一次转发后地址;
        ## ^:以xx开头、()表示一个变量,后面用$1替换,.*正则
        #将所有的http请求通过rewrite重写到https上即可
        #rewrite ^(.*)$  https://$host$1 permanent;
        if ($http_host ~ "^jl-media.cn$") {
            rewrite  ^(.*)    https://www.jl-media.cn$1 permanent;
            rewrite ^/mall$ /mall/ permanent;##自动增加一个斜杠
        }

        ## 1: nginx官网文档 http://nginx.org/en/docs/
        ## 2: nginx之location的匹配规则  https://www.cnblogs.com/jiangyang/p/8485046.html
        ## 3: nginx中的rewrite用法及实例 很详尽的 https://blog.csdn.net/LJFPHP/article/details/71642977
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://tomcat;

            ## facebook 分享的时候,这里进行代理, 动态 给 facebook 数据
            ## curl -i  -A "facebookexternalhit"  https://qcure.zhixuankj.cn/qcurepc/\?title\=aaaaaa\&image\=bbbbbbb
            if ($http_user_agent ~* "facebookexternalhit") {
                ###### proxy  ^/(.*)$  http://127.0.0.1:7777/ redirect;irect;   #这种不能加$uri后缀了,很麻烦,需要同时有两个tomcat
                #rewrite  ^/(.*)$  https://test189.ourslook.com/qcure/proxy?$uri redirect;  #直接302过去
                rewrite  ^/(.*)$  https://$host/qcure/proxy redirect;  #直接302过去; 后面不用 增加【?$args】; 会自动增加args的
            }

            #一个项目同时有pc和h5两个项目,默认访问 html/web/pc,如果是手机端访问 html/web/h5
#            if ($http_user_agent ~* "(mobile|nokia|iphone|ipad|android||Windows Phone|UC|Kindle|samsung|htc|blackberry|(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera))") {
#                rewrite  ^/(.*)$  http://m.xxx.com$uri redirect;
#                proxy_pass http://tomcat;
#                root  /home/web/h5;
#            }

            # 如果根目录没有地址,我们给一个默认地址 一定要加上这个。否则无法解决 vue 或者 react browser 模式404
            # vue 和 react 项目有一个问题,就是 使用 react[browser]、vue[history] 访问二级页面的时候 会 报错 404 的问题。这个只能 借助 后台解决,放404的时候 访问首页。
            # vue https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%90%8E%E7%AB%AF%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90
            # react https://umijs.org/zh/config/#history
            # 先直接访问,直接访问失败,就在 后面增加/继续访问,如果还失败,内部在重新访问以下 index.html
            # 先找 $url 本身;
#            try_files $uri $uri/ /index.html;

            #rewrite ^/$  /hiber/; #rewrite 根目录重定向到子目录下面去,默认是 redirect 301;
            #rewrite ^/ourspro  /book/ permanent; #rewrite 301


            # websocket support。 项目用到websocket 必须开启; 【必须放到 location下面】
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

            # nginx重试机制proxy_next_upstream, 当 nginx 一台server 发生问题的时候,重试下一台
            proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
        }

#        location /gzcf {
#            proxy_pass http://tomcat;
#        }
#
#        location /gzcfpro {
#            root html;
#            index index.html index.html;
#            try_files $uri $uri/ index.html;
#        }

        ###代理演示
        #        location ~ ^/baidu {
        #            #proxy_pass http://tomcat/baidu/;##代理到 upstream资质
        #            #proxy_pass http://47.92.231.114/baidu; ##代理到固定ip
        #            rewrite ^/baidu https://www.baidu.com permanent;##302 永久重定向;
        #        }

        #对应的目录也里面的子目录也必须是:/hiber/upload  所有的图片不走tomcat, 直接使用nginx进行访问了
        #location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {
        location /hiber/upload {
            ##缓存时间1d,或者24h,添加这;response header 增加:Cache-Control: max-age=6400、增加:Expires: Sun, 07 Jul 2019 07:25:00 GMT
            expires 10d;

            ####防盗链 根据referers[从那个网站过来的访问]信息来处理 $http_referer
            ### http://nginx.org/en/docs/http/ngx_http_referer_module.html 文档首页搜索:referer
            ### https://blog.51cto.com/467754239/1440464
            ### none 允许没有refefer连接,可以直接访问。
            ### blocked 意为根据防火墙伪装Referer头,如:“Referer: XXXXXXX”。
            ### server_names 为一个或多个服务器的列表
            ### 微信小程序referer 校验 "https://servicewechat.com/wx2e3e1ab7edd235f3/19/page-frame.html"
            ### 测试(-e后面的参数就是 referer参数 ):curl -e "https://www.baidu.com" -I https://www.jl-media.cn/hiber/upload/advertisement/20190706230145267_dakye.jpg
            ### 测试(-e后面的参数就是 referer参数 ):curl -e "https://servicewechat.com/wx2e3e1ab7edd235f3/19/page-frame.html" -I https://www.jl-media.cn/hiber/upload/advertisement/20190706230145267_dakye.jpg
            valid_referers none blocked server_names 47.103.33.96  ~\.jl-media.cn\. ~\.new8090\. servicewechat.com  ~\.google\. ~\.baidu\. *.so.com *.sogou.com ~\.bing\.;
            if ($invalid_referer) {
                # 这里重定向到一个页面,并带着参数
                #rewrite ^/  http://www.xxx.com/images/default/logo.gif?$args;
                return 403;#403 Forbidden
            }

            #做路径映射 break 之后,后面都不会在匹配了
            rewrite ^/hiber/upload/(.*)$ /hiberUploadRoot/upload/$1 break;

            #指定根路径
            root   D:\\server;
        }

        # 状态监控
        location /nginx_status {
            stub_status on;
            access_log   off;
            #allow 127.0.0.1;
            #allow 192.168.220.133;
            #deny all;
        }

        #https域名验证, 不设置,nginx 可能变成了直接下载
        location ^~ /.well-known/pki-validation/ {
            default_type "text/plain";
            #root /usr/local/ssl/cert/;
            #alias  /usr/local/ssl/certs/;  # 使用 alias 就不用创建 .well-known/pki-validation 这个文件了
            root D:\\freessl;### windows不能创建.开头文件;可以用windows下cmd cd到服务器路径,然后用md .well-known来创建; 全路径:D:\freessl\.well-known\pki-validation
        }

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

#location:  /usr/local/nginx/conf/
#Afte Upload:  /usr/local/nginx/sbin/nginx -t ;  /usr/local/nginx/sbin/nginx -s reload

#sh /usr/local/sh/tomcat-restart.sh

#sudo chmod 777 /usr/local/sh/tomcat-restart.sh; sh /usr/local/sh/tomcat-restart.sh

 

 

nginx数据目录路径:/data/nginx/ 

3-7: 开机启动设置

启动命令:/usr/local/nginx/sbin/nginx
nginx -t 
nginx -s reload

 

开机启动脚本方式1: centos7.x设置nginx开机自启动 

开启启动脚本方式2: CentOS下设置nginx开机自动启动和chkconfig管理

在这两种都已经使用过

原来  systemctl status nginx.service 和 service nginx.service status 这两种命令是等价的
 

3-8: nginx最常见的命令介绍, Nginx 不管那个版本安装之后,会在/usr/local/nginx/sbin有启动命令;在/usr/local/nginx/conf下面有nginx.conf和 nginx.conf.default两个配置文件;

1.启动nginx

 1).进入安装目录

   cd /usr/local/nginx/sbin/

 2).启动

   ./nginx

 3).若报错:[emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)

   需要查看下是不是在/var/run文件夹下不存在nginx文件夹,不存在则新建

 4).查看是否启动:ps -ef | grep nginx

   如果有master和worker两个进程证明启动成功

      

  注意:执行./nginx启动nginx,这里可以-c指定加载的nginx配置文件,如下:

   ./nginx -c /usr/local/nginx/conf/nginx.conf

   如果不指定-c,nginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(--conf-path= 指向配置文件(nginx.conf))

2.停止

 1).暴利kill(不推荐使用)

   kill -9 processId

 2).快速停止

   cd /usr/local/nginx/sbin && ./nginx -s stop

   此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程

 3).完整停止(建议使用)

   cd /usr/local/nginx/sbin && ./nginx -s quit

   此方式停止步骤是待nginx进程处理任务完毕进行停止

3.重启及重新加载配置

  1.先停止再启动(建议使用)

    ./nginx -s quit && ./nginx

  2.重新加载配置文件
    ./nginx -s reload

4.测试

  nginx安装成功,启动nginx,即可通过ip地址来访问nginx:

5.windows 下面如果 发现配置不起作用,可以 杀死进程重新启动
    windows杀nginx进程:taskkill /fi "imagename eq nginx.EXE" /f
    windowsnginx启动:nginx.exe
    windows重新加载配置:nginx.exe -s reload
    windows验证配置:nginx.exe -t


5.如何查看日誌
    windows:  Get-Content -wait  "D:\server\tomcat8.5.8081\logs\hiber\hiber_business.log"
    linux: tail -f xx.log
   

3-9:  nginx 负载均衡策略,有哪些?

Nginx负载均衡权重,ip_hash 

3-10:nginx正向代理示例

nginx邮件代理配置(服务器中的多态server, server在内网,需要使用外部的邮件服务器就是正向代理) 1)必须支持udp、ndp代理,额外安装--with-stream  2)需要mail配置

--with-mail \             #该选项用于启用mail模块,该模块默认没有被激活
--with-mail_ssl_module \        #为了代理任何一种类型的使用SSL/TLS的mail,激活该模块

3-11:nginx已经安装好了,在安装新的插件

nginx负载均衡fair模块安装和配置

3-12:  nginx在reload时候报错invalid PID number的解决方法 

4:redis 安装

 

 

redis 安装直接看官方文档:https://redis.io/download x

第一步:Installation

 

Download, extract and compile Redis with:

先切换到目录/usr/local

卸载等情况可以参见博客:redis安装与卸载 https://www.cnblogs.com/zerotomax/p/7468833.html

$ 安装前置条件,先安装GCC, redis使用c编写的:yum install gcc 
$ wget http://download.redis.io/releases/redis-5.0.4.tar.gz
$ tar xzf redis-5.0.4.tar.gz
$ cd redis-5.0.4
$ make

第二步运行服务端:

$ src/redis-server redis.conf ###启动的时候一定要指定启动的配置文件,否则不加载。
$ src/redis-server -v  ##查看redis版本或者 src/redis-server --version
$ src/redis-server

第三步运行客户端:

$ src/redis-cli
$ src/redis-cli -h 127.0.0.1 -p 6379 -a myPassword_nozuonodie    ##指定密码端口号进行登录 
$ src/redis-cli shutdown  ##关闭redis
redis> set foo bar
OK
redis> get foo
"bar"
redis> keys * ##查看所有的redis key;设置set、获取get、删除del、查看keys *
redis> 原生支持 字符串、hash、list、set 、 sortset 支持结构很丰富。
redis> 支持过期时间设置、查看、更新  
    EXPIRE key_name 30  # 设置过期时间为 30 秒  
    TTL key_Name   # 查看剩余生存时间
    EXPIRE key_name 30000   # 更新过期时间


至此安装关闭,官网测试地址

http://try.redis.io/ x

第四部:redis根目录下面的redis.conf进行配置

使用ssh sftp 命令下载/usr/local/redis/redis.conf,使用sublime打开,commond+shift+p 修改高亮语言为:set syntax:hosts File
bind 127.0.0.1 ::1 #这里要注释掉,否则只能本机(指定ip可以访问)可以访问redis服务器,外网的不能访问redis服务器
daemonize no #是否是守护进程,这里要修改为yes
protected-mode yes#保护模式,修改为no
requirepass foobared  #是否需要密码,这里放开注释,foobared修改一下,如myPassword_nozuonodie
maxmemory:最大内存设置,一般设置为最大物流内存4分之三,主要转换为byte;xxxGx1024x1024*1024, 或者0,不限制; 1G : 1073741824; 查看内存大小: cat /proc/meminfo | grep MemTotal

第五步运行服务端:

systemctl管理Redis启动、停止、开机启动  x    redis.service 、tomcat8-8081.service

第六步运行远程访问:

本地可以访问,如果远程无法访问

1: 关闭服务器防火墙

2:    打开阿里云 防火墙端口 6379

第七步检查运行情况:

ps -ef |grep redi    检查redis进程,如果出现 src/redis-server *:6379 说明就启动成功
netstat -lntp | grep 6379  检查6379端口是否启用,如果没有任何结果输出,说明肯定没有启动
netstat -tulnp  检查6379的端口是否是(0:0:0:0 或者 ::: 表示任何ip) ,如果不是说明bind绑定了本地的端口,不能远程访问
关闭redis服务:redis-cli shutdown 或者 kill -9 pid

 

高阶: redis 高可用配置、redis配置大全..

redis客户端第三方工具(RDM 不要随便升级), MAC平台RDM安装包(redis-desktop-manager-0.9.4.55.dmg)

最新redis-desktop-manager-0.9.8 for windows   

 

x

5:数据库mysql安装

其他相关安装参考这个word文档:(linux下安装部署jdk7+tomcat7+mysql56+redis3 )

centos下彻底删除MYSQL 和重新安装MYSQL

一般要修改掉3306的端口

 在阿里云的centos7上安装mysql5.6的方法  x

CentOS在线安装Mysql5.7 x

centos7在线yum安装mysql时官方镜像下载过慢的解决方案 x (亲测有效)

MySQL、MySQL主从、MySQL-cluster、mgr、mha、读写分离x (碧桂园iot亲测有效)

    在阿里云的centos7上安装mysql57.&的方法   http://blog.csdn.net/dongdong9223/article/details/52536675   
    # 这里使用mysql 官方 yum 下载巨慢。  看博客:centos7在线yum安装mysql时官方镜像下载过慢的解决方案 
    1: 下载并安装MySQL官方的 Yum Repository  https://dev.mysql.com/downloads/repo/yum/  
    wget -i -c   http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm  
    #8.0   http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    可以查看mysql官网的文档:非常详细了:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/  
    2: 安装 yum Repository,大概25KB的样子,然后就可以直接yum安装了
    yum -y install mysql57-community-release-el7-11.noarch.rpm
    2:查看有哪些文件:  
    yum repolist enabled | grep "mysql.*-community.*"  
    3:输入yum 命令安装  yum install mysql-community-server  
    4: 启动mysql: sudo service mysqld start     停止mysql: sudo service mysqld stop
    5: 查看mysql 启动状态: sudo service mysqld status   
    6: 针对mysql7+的版本,查找随机的密码:sudo grep 'temporary password' /var/log/mysqld.log  
    7: 使用密码登录mysql:  mysql -uroot -p  
        或者  mysql -u root -h localhost -p #-h指定ip
    8: set global validate_password_policy=0; 降低密码安全等级  
    9: ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootnewpassword..1' ; -- EXPIRE NEVER;  — 修改信息密码,密码永不过期  
    10: mysql查看版本,在mysql中输入:select version(); 就可以看到版本; 或者使用navixcate切换到mysql默认数据库查询即可;
    

x

mysql默认是不允许远程登录的,方法如下:
1:见博客:Mysql 5.7 开启远程连接 https://blog.csdn.net/sun614345456/article/details/53672150
使用navixcate 如果报错:1130 - Host '117.33.56.28' is not allowed to connect to this MySQL server
命令
1-1:切换到mysql数据库:use mysql;
1-1-a: SHOW VARIABLES LIKE 'validate_password%';   #查看密码等级
1-1-b: set global validate_password_policy=LOW;  #降低密码等级, 只验证长度,让root也能通过外网访问。
1-2:开启远程连接root 用户名% 所有人都可以访问password 密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'rootnewpassword..1' WITH GRANT OPTION;
1-3:FLUSH PRIVILEGES; 
1-4:退出重启mysql: service mysqld restart
2: 查看mysql 的端口号:netstat -tulpn: 查看启动应用的端口号。
3: 关闭centos防火墙
4: 查看aliyun上面是否运行3306端口的访问。如果直接无法访问,就是阿里云的问题;

x

mysql继续配置,安装了mysql要对相关字符集进行设置,如:字符集utf8mb4、连接属性编码: utf8mb4_unicode_ci;否则项目中无法支撑表情的, 说明:utf8mb4_unicode_ci和utf8mb4_general_ci区别,general速度快但对德语或者语言部分区分不好,扩展性差,一般就用 uncode_ci把。

mysql要支持表情的话,必须是mysql的版本必须为v5.5.3或更高才能;
1: 登录mysql服务器:mysql -uroot -p  xx密码;
2: 查看相关字符集设置,随便那个用户下面都可以查看:
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';  
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_general_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+
10 rows in set (0.00 sec),如果是上面这个场景是可以支持表情的;除了一个 binary 和 utf-8别的是应该全是utf8mb4
windows找到my.ini、
linux centos7 在 /etc/my.cnf,编辑该文件,在最后面添加如下:
修改数据库目录
 
3:
[mysqld]

# 服务端默认字符集
character-set-server=utf8mb4

# 连接层默认字符集
collation-server=utf8mb4_unicode_ci

#设置SQL模式,解决高版本group by 报错; 在5.7之后要设置,防止报错 “Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

#设置mysql密码过期策略,这里设置为0,所有账户永不过期,单位是天,详见 https://blog.csdn.net/jc_benben/article/details/77934469
default_password_lifetime=0 #如果设置为零标识永不过期

#设置默认时区,为北京时间,东8区, 查看时区:show variables like "%time_zone%";
default-time_zone = '+8:00'

# 允许最大连接数
max_connections=2000

# 设置任何ip都可以访问。0.0.0.0 任何ip;  一般不需要设置的,在授权给用户的时候设置; 影响  netstat -tulnp   的localaddress
bind-address=0.0.0.0

[client]
# 客户端来源数据的默认字符集
default-character-set = utf8mb4


[mysql]
# 数据库默认字符集
default-character-set = utf8mb4

# mysql 索引过长1071-max key length is 767 byte ; 747/4=191 https://www.cnblogs.com/littleatp/p/4612896.html
-- show variables like 'innodb_large_prefix';   -- 正常取值ON,不正常取值OFF
-- show variables like 'innodb_file_format';-- 正常取值:Barracuda,不正常取值:Antelope
-- 修改最大索引长度限制
-- set global innodb_large_prefix=1;
-- set global innodb_file_format=BARRACUDA;
-- 添加
-- set global innodb_file_format_max=BARRACUDA;
---------------------
--default-storage-engine=INNODB
--innodb_large_prefix=on

 
4:重启服务器,才能看到效果;
window:进入cmd 输入net stop mysql57,然后输入net start mysql57
linux centos : 关闭、在重启  sudo service mysqld restart
 
-------------------------------------------------------------
当然还可以设置表级别、行级别的字符集设置,如下:
2-1:设置colum级别
 ALTER table xxxxxxxx_table_name  modify  clientName  varchar(100) character set utf8mb4 collate utf8mb4_unicode_ci;
2-2:设置表级别
 ALTER table mb_touchpay_record charset=utf8mb4; 
2-3:设置整个库的
set names utf8mb4;
修改后,不用重启,就可以看到效果;
 
x
 
 -------------------------------------------------------------
数据库类型补充说明:
character_set_client:客户端请求数据的字符集  
character_set_connection:客户机/服务器连接的字符集  
character_set_database:默认数据库的字符集,无论默认数据库如何改变,都是这个字符集;如果没有默认数据库,那就使用 character_set_server:指定的字符集,这个变量建议由系统自己管理,不要人为定义,只有这个是utf8,别的全是utf8mb4。  
character_set_filesystem:把os上文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的  
character_set_results:结果集,返回给客户端的字符集  
character_set_server:数据库服务器的默认字符集  
character_set_system:系统字符集,这个值总是utf8,不需要设置。这个字符集用于数据库对象(如表和列)的名字,也用于存储在目录表中的函数的名字。  
collation_connection:
collation_database:
collation_server:
-------------------------------------------------------------
 
如果只是某个字段需要 只需要修改那个字段的字符集就可以了  
另外服务器连接数据库 Connector/J的连接参数中,不要加characterEncoding参数。 不加这个参数时,默认值就时autodetect。
 
--设置xxx:
set collation_connection=utf8mb4_unicode_ci;
set collation_database=utf8mb4_unicode_ci;
set collation_server=utf8mb4_unicode_ci;
 
-- 修改数据库字符集:  
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;  
-- 修改表的字符集:  
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  
-- 修改字段的字符集:  
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 

 

x

 

 -------------------------------------------------------------
数据库类型补充说明:
character_set_client:客户端请求数据的字符集  
character_set_connection:客户机/服务器连接的字符集  
character_set_database:默认数据库的字符集,无论默认数据库如何改变,都是这个字符集;如果没有默认数据库,那就使用 character_set_server:指定的字符集,这个变量建议由系统自己管理,不要人为定义,只有这个是utf8,别的全是utf8mb4。  
character_set_filesystem:把os上文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的  
character_set_results:结果集,返回给客户端的字符集  
character_set_server:数据库服务器的默认字符集  
character_set_system:系统字符集,这个值总是utf8,不需要设置。这个字符集用于数据库对象(如表和列)的名字,也用于存储在目录表中的函数的名字。  
collation_connection:
collation_database:
collation_server:
-------------------------------------------------------------

如果只是某个字段需要 只需要修改那个字段的字符集就可以了  
另外服务器连接数据库 Connector/J的连接参数中,不要加characterEncoding参数。 不加这个参数时,默认值就时autodetect。

--设置xxx:
set collation_connection=utf8mb4_unicode_ci;
set collation_database=utf8mb4_unicode_ci;
set collation_server=utf8mb4_unicode_ci;

-- 修改数据库字符集:  
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;  
-- 修改表的字符集:  
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  
-- 修改字段的字符集:  
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 

x

mysql远程登录、密码、表情问题都解决了, 现在解决,在mysql 5.7之后:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre 的问题,解决见:

切换到对应的自己的数据库,执行下面命令:

切换数据库:use xxxxxxmyDb;
查询:select @@global.sql_mode
设置:set @@global.sql_mode = 
'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

x

http://blog.csdn.net/ab601026460/article/details/54017607

x

 初次安装Mysql5.7以上版本后初始root密码找不到的问题 x 

mysql5.7找随机密码、登录修改密码安全等级、重置root密

x Windows 下 MySql 5.7.20安装及data和my.ini文件的配置,如果没有my.ini,请在根目录自己创建x

我去,原来my.ini 在  C盘的隐藏目录里面, C:\ProgramData\MySQL\MySQL Server 5.7/my.ini
不在 C:\Program Files\MySQL\MySQL Server 5.7/这个目录;

x

mysql主从同步, 参加 51cto内容,非常好。注意

1:binlog-do-db=test #可以被从服务器复制的库, 二进制需要同步的数据库名;如果有多个库,重复设置该选项,不是用逗号分割奥。

6: 使用FastDfs centos7下的FastDFS5_09的安装与使用 x kevin提供教程

用FastDFS一步步搭建文件管理系统 x

x

Redis Install Step:
1.download install pkg
wget http://download.redis.io/releases/redis-4.0.2.tar.gz

2.unzip
tar xzf redis-4.0.2.tar.gz

3.install gcc/gcc-c++/zlib-devel/openssl-devel/psmisc
yum install gcc
yum -y install gcc-c++
yum install zlib-devel openssl-devel

4.compile redis source code and install it
make
make MALLOC=libc
make & install

5.edit redis.conf(e.g:setting password/modify default port)
vim redis.conf

6.startup service
redis-server redis.conf

7.use client tools connect to redis server
redis-cli #connection
auth password #use password authorization

8.shutdown redis service
redis-cli shutdown
=========================================================================
Firewall setting:
1.view firewall state
firewall -cmd --state

2.stop firewall service
systemctl stop firewalld
=========================================================================
FastDFS Install Step:
1.download libfastcommon & fastDFS
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz

2.unzip libfastcommon & fastDFS
tar xf V1.0.36.tar.gz
tar xf V5.11.tar.gz

3.compile && install libfastcommon
./make.sh
./make.sh install

4.compile && install FastDFS
./make.sh
./make.sh install

5.create fdfs data dir
mkdir -p /data/fdfs_tracker            #create fdfs_stracker service base path
mkdir -p /data/fdfs_storage            #create fdfs_storage service main dir
mkdir -p /data/fdfs_storage/base       #create fdfs_storage service base path
mkdir -p /data/fdfs_storage/storage0   #create first storage node
mkdir -p /data/fdfs_storage/storage1   #create second storage node

6.copy redis config file(default path:/etc/fdfs/)
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

7.setting confs (replace path,modify port,set)
vim /etc/fdfs/tracker.conf
vim /etc/fdfs/storage.conf

8.startup or stop service
/etc/init.d/fdfs_trackerd start|stop
/etc/init.d/fdfs_storaged start|stop

9.view state
ps -ef|grep fdfs
netstat -nltp

10.test upload file
#创建client目录
mkdir -p /data/client

#配置client文件
cd /etc/fdfs
cp client.conf.sample client.conf
vi client.conf
************************************************
#存放日志目录                                        *            
base_path=/data/client                    *
#跟踪服务器                                          *
tracker_server=192.168.1.222:22122        *
tracker_server=192.168.1.233:22122        *
************************************************

#create test file and upload it to server
echo "12345678" >> /data/1.txt
fdfs_upload_file /etc/fdfs/client.conf /data/1.txt

#view cluser running status
fdfs_monitor /etc/fdfs/client.conf
========================================================================
1.add user for nginx
useradd -s /sbin/nologin -M nginx

2.compile & install pcre
./configure --prefix=/data/pcre
make && make install

3.compile & install nginx module
./configure --prefix=/data/nginx --with-pcre=/usr/local/pcre-8.41 --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_stub_status_module --add-module=/data/fastdfs-nginx-module-master/src

make && make install

4.setting nginx module conf
cd /data/fastdfs-nginx-module-master/src
cp mod_fastdfs.conf /etc/fdfs
cd /usr/local/fastdfs/conf
cp anti-steal.jpg http.conf mine.types /etc/fdfs/
vi /data/nginx/conf/nginx.conf
vim /etc/fdfs/mod_fastdfs.conf

5.startup nginx
/data/nginx/sbin/nginx

7:centos安装中文字体

使用场景:代码生成pdf文档、代码生成图片等,这些里面如果用了中文字体,一定要安装到目标服务器上面;常用字体:

/**
 * @see Font
 * new Font("黑体",Font.PLAIN, 22);//SimHei.ttf
 * new Font("宋体",Font.PLAIN, 22);//SimSun.ttf
 * new Font("微软雅黑",Font.PLAIN, 22);//Microsoft Yahei.ttf
 */

macos:/System/Library/Fonts

windows:C:\Windows\Fonts

Linux CentOS 7 安装字体库 & 中文字体,见文章:

!

8:haproxy代理服务器的使用

我们一个客户部署服务器,使用了三台服务器

HAProxy SVR、Web SVR、DB SVR,项目不大,但是使用三台服务器, 各做各的的事情。

[root@qcure_haproxy ~]# 

[root@qcure_web ~]# 

[root@qcure_db ~]# 

HAProxy代理服务器,之前也没用过,据说和nginx很类似。软件是客户host 供应商安装的;

HaProxy 可以代理http/tcp

tcp: mysql、ftp、邮件等

http:  web 如 nginx

 whereis haproxy  或者  which haproxy  在centos查看软件按照位置

按照教程见: Haproxy安装与配置 <包括重启服务>  或者   HAproxy指南之haproxy编译安装(安装篇) 或者   haproxy动静分离

或者   haproxy 页面重定向(域名跳转) [redirect location 或者 acl 判断url]

视频教程1:三小时掌握HAProxy核心运维技能视频课程

视频教程2:负载均衡,LVS\keepalived\haproxy实战案例讲解

官网haproxy.org 或者 haproxy.com有时访问不了,下载地址见:

https://src.fedoraproject.org/repo/pkgs/haproxy/
http://download.openpkg.org/components/cache/haproxy/

我们选择1.8这个版本;  注意,如果要支持 https ,编译的时候就需要ssl编译进去,否则后面需要重新编译。

安装方式:1:yum 安装/卸载超简单  2:使用 源码编译安装,麻烦一点但支持 ssl. 

配置文件位置:/etc/haproxy/haproxy.cfg  或者 /usr/local/haproxy/cfg/haproxy.cfg ,如果没有,就需要自己创建,copy example.cfg

### 在 /etc/haproxy/haproxy.cfg 的配置文件,我们进行修改一下
###  service haproxy restart 重启
### 说明:listen 是老版本的指令 是 新版 frontend + backend 的结合体
### Hasproxy 不做任何流量的占用,https也直接转发了。
################### 安装 ##################3
安装看 用 HAproxy 实现 HTTPS 反向代理 , 安装看 https://www.jianshu.com/p/34b5a5233f8f, 注意 【ssl】 和 【内核版本】 
1.  yum 安装版本太老了,我们这里源码安装; 确认服务器上安装了最新版的编译工具和库文件:
# yum install make gcc pcre-devel openssl-devel

2. 下载 haproxy-1.6 的源代码
# cd /usr/local/src
# wget http://download.openpkg.org/components/cache/haproxy/haproxy-1.8.15.tar.gz
# tar xf  haproxy-1.8.15.tar.gz 

3. 编译安装 haproxy-1.8 & 编译 https相关的ssl
# cd haproxy-1.8.15
# make TARGET=linux31 USE_PCRE=1 USE_OPENSSL=1 PREFIX=/usr/local/haproxy #如果是 centos7.x 版本系统,修改 TARGET=linux26 为 TARGET=linux31 即可。具体要查看内核版 
#  make install
#  haproxy -v  如果能看到版本,就说明安装好了  或者 ./haproxy -v



###################
三个核心结点:frontend、backend 和 listen, 老版本只有 listen, 新版本增加前两个,其实 
listen = frontend + backend; 前端请求规则 转发到后台指定的服务器;



################
https 实现,有两种,一种是 haproxy自己安装https, 我们这里介绍这一种。
用 HAproxy 实现 HTTPS 反向代理  https://www.jianshu.com/p/34b5a5233f8f 
#---------------------------------------------------------------------
# 配置文件
# /etc/haproxy/haproxy.cfg
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     100000  #这里调小一些,否则一直503 服务不可用;maxconn:设定每个haproxy进程可接受的最大并发连接数,此选项等同于Linux 命令行选项“ulimit -n”。
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
    stats timeout 30s

    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
    ssl-default-bind-options no-sslv3
    tune.ssl.default-dh-param 2048

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog  # haproxy默认不记录日志,开启日志方便排除; httptcp开启tcp日志
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8  #解决由于 haproxy的使用,后端无法获取真实客户端ip问题,
    option                  redispatch
    retries                 3
  timeout http-request    3m ###都调整大一点,否则都是503 No server is available to handle
    timeout queue           1m
    timeout connect         10s
    timeout client          10m
    timeout server          10m
    timeout tunnel          5m
    timeout http-keep-alive 100s
    timeout check           100s

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main
    bind *:80
    # 绑定 443 端口,启动 https
    bind *:443 ssl crt /usr/local/cert/full_chain_private.pem
    mode http
    default_backend             app_https
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app_https
    balance     roundrobin
    cookie  svr_ckie insert nocache
    server  app1 192.168.0.10:80 check
    # 如果未使用 https 则自动跳转,此处未开启
    #redirect scheme https if !{ ssl_fc }
#### haproxy 配置服务、重启、开机启动等 ######
/usr/local/haproxy-1.8.15 下面手工创建两个文件 logs/haproxy.log 和 conf/haproxy.cfg和 haproxy.pid 
pid内容:20168

9:Linux centos 安装 MongoDb

首先说明,MongoDB国内访问巨慢,下载windows安装包 windows300MB慢到死, 下载 linux 安装包也很慢,还是试用国内yum 源把,这很快的。

参考文件: Centos 使用yum安装MongoDB 4.0; 注意不要随便执行 ` yum update`, 这个命令会把 400多个包都升级了一次,可能 把 系统内核都会升级。导致生产 系统出问题。

你可能感兴趣的:(Linux centos 安装软件)