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:

1: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.45/bin/apache-tomcat-8.5.45.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一共有两个文件有,这里的也不能缺少
JAVA_OPTS='-server -Xms4096m -Xmx4096m -XX:MaxNewSize=512m -Xss2m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:ErrorFile=/var/log/java/java_error_%p.log -Dfile.encoding=UTF-8'

### -server: 正式服务器请开启;  -Xms2048m -Xmx2048m: 系统初始化和最大使用内存,建议设置为系统的50%; 上面用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太大的问题; 我们关闭把日志
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
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调优
<Connector 
    port="8081" 
    URIEncoding="UTF-8" 
    connectionTimeout="60000" 
    maxThreads="2000" //最大线程数,不是越大越好,4C8G就800~1000,8c16G:2000左右 ;这里以8G为例
    minSpareThreads="200"///最小空闲线程数量,线程开启挺慢的,这里待命时刻准备。
    maxSpareThreads="2500"//
    acceptCount="2000"// 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数。如果请求数量>最大线程+等待线程acceptCount,其余将会抛弃掉
    protocol="HTTP/1.1"
    redirectPort="8443"/>  

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

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

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

 <!--每个项目这里可以配置多个Host,平时只用了第一个-->
            <Host name="localhost" appBase="webapps"
                  unpackWARs="true" autoDeploy="true">
                <!-- SingleSignOn valve, share authentication between web applications
                     Documentation at: /docs/config/valve.html -->
                <!--
                <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
                -->
                <!--path是http请求地址,docBase是操作系统文件路径(相对、绝对都可以)-->
                <!--目前这种设置,就 替换了 tomcat的默认项目ROOT, 现在默认项目是HomePage.....-->
                <!--这里需要提前创建两级目录 xueyouhuiUploadRoot 和 upload -->
                <Context docBase="HomePage" path="" reloadable="true"/>
                <!-- <Context docBase="../qudaoeduUploadRoot/upload" path="/qudaoedu/upload/"/> -->
                <Context docBase="../../xueyouhuiUploadRoot/upload" path="/xueyouhui/upload/"/>
                <!-- <Context docBase="../angelogisUploadRoot/upload" path="/angelogis/upload/"/> -->
		            <!-- <Context docBase="../jiulongUploadRoot/upload" path="/jiulong/upload/"/> -->
                <!-- Access log processes all example.
                     Documentation at: /docs/config/valve.html
                     Note: The pattern used is equivalent to using pattern="common" -->
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                       prefix="localhost_access_log" suffix=".txt"
                       pattern="%h %l %u %t "%r" %s %b"/>
            </Host>
            <!--host chijun.xin -->
            <!-- <Host name="www.赤骏.com" appBase="webapps" -->
                  <!-- unpackWARs="true" autoDeploy="true" xmlNamespaceAware="false" xmlValidation="false"> -->
                <!-- <Context docBase="cjdriverweb" path="" reloadable="true"/> -->
                <!-- SingleSignOn valve, share authentication between web applications
                     Documentation at: /docs/config/valve.html -->
                <!--
                <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
                -->

                <!-- Access log processes all example.
                     Documentation at: /docs/config/valve.html
                     Note: The pattern used is equivalent to using pattern="common" -->
                <!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" -->
                       <!-- prefix="localhost_access_log" suffix=".txt" -->
                       <!-- pattern="%h %l %u %t "%r" %s %b"/> -->

            <!-- </Host> -->
创建映射目录:
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 最顶部加入

  #!/bin/sh

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

x

3:nginx 安装

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

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

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

X Centos7安装Nginx实战  X

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

wget https://nginx.org/download/nginx-1.14.2.tar.gz

3-4: 解压

tar -xvzf nginx-1.14.2.tar.gz

或者

unzip nginx-1.14.2.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.14.2/

./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 
###这里编译环境总是找不到openssl,这里手工指定一下位置
 
(注: --with-http_ssl_module:这个不加后面在nginx.conf配置ssl:on后,启动会报
nginx: [emerg] unknown directive "ssl" in /opt/nginx/conf/nginx.conf 异常) 
【这里是指定编译的时候把相关的模块安装到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.14.2  #不用理睬 就可以

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

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

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

最简单配置



####设置工作的最大连接数, 工作线程多能应对高并发的场景
worker_processes  4;## worker_ processes 8; 工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。 ;cat /proc/cpuinfo | grep "cpu cores" | uniq
 
worker_connections  102400; ##这里原来是1024,现在后面多家两个0

########## 这里开启压缩功能,不然网络传输太慢了,2k;
#gzip  on;
gzip on;#打开关闭
gzip_min_length 2k; #gzip 开启阀值,超过2kb的文件开始压缩。
gzip_buffers 4 16k;
gzip_comp_level 2; #压缩比例,一般1就够用了;压缩级别,1-10,数字越大压缩的越好,时间也越长,看心情随便改吧;当然压缩倍数高了,服务器压力会增加
gzip_types text/plain application/x-javascript text/css application/xml application/json text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\."; #IE6不开启
 

##设置超时时间,超过65秒,如果还没有响应,就报错,超时.
#keepalive_timeout  0;
keepalive_timeout  65; 

##负载服务器1
upstream my_portal_server {
        server 127.0.0.1:8888 ;
        keepalive 2000;
 }

##负载服务器2
upstream my_oa_server {
    #为了防止多台服务器出现的session问题,开启ip_hash;一个客户端固定请求一个服务器;http://blog.csdn.net/xluren/article/details/16951247
    server 127.0.0.1:8080;
    #server 127.0.0.1:8280 ;
    #server 10.10.9.1:8780 ;
    keepalive 2000;
}
 
 ##负载服务器3
upstream my_portal_server {
    server 127.0.0.1:8080 ;
    keepalive 2000;
}
 
 ##负载服务器4   
upstream my_jenkins_server {
    server 127.0.0.1:8080 ;
    #server 10.10.9.1:9288 ;
    keepalive 2000;
}

  ####删掉之前的 80端口的东西.
  # HTTPS server
  # 配置https证书
  ## http 强制重定向到 https ; 删掉之前80的监听
  server {
    listen 443; ###https 端口443
    listen 80; ###强制80也使用https,导致报错497,然后在重定向到https;
    server_name  localhost small.weddinglove.xyz  www.weddinglove.xyz;  #绑定域名
    ssl on;
    root hunqing;
    index index.html index.htm;

    ##设置https证书的key和密钥的位置;
    ssl_certificate   cert/214806714780475.pem;
    ssl_certificate_key  cert/214806714780475.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;

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


    #重定向  http://www.sojson.com/blog/178.html
      if ($http_host ~ "^weddinglove.xyz:443$") {
        rewrite  ^(.*)    https://small.weddinglove.xyz:443$1 permanent;
      }

    location / {
      	 root   hunqing;###设置跟访问路径
     	 index  index.html index.htm;

      	proxy_pass  http://my_server/;
      	proxy_set_header Host $host:$server_port;

     	# 设置1: 获取客户端ip地址 Sven
	    proxy_set_header X-Real-IP  $remote_addr;
	    proxy_set_header Host $host:$server_port;
	    # 设置2: 设置上传大小Sven  错误代码413
	    client_max_body_size 200m;
	    # 设置3:设置下载超时时间
	    proxy_send_timeout 1000s;
    }

    location /xueyouhui {
	    root   html;
	    index  index.html index.htm;
	    proxy_pass http://my_portal_server/xueyouhui/;
	     # 设置1: 获取客户端ip地址 Sven
	    proxy_set_header X-Real-IP  $remote_addr;
	    proxy_set_header Host $host:$server_port;
	    # 设置2: 设置上传大小Sven  错误代码413
	    client_max_body_size 200m;
	    # 设置3:设置下载超时时间
	    proxy_send_timeout 1000s;
  	}

   #三维漫游
    location /3droaming {
        root   html;
        index /3droaming/index.html;
    }

    ####pageoffice
    location /pageOffice {
        proxy_pass http://my_jenkins_server/pageOffice;
        proxy_set_header Host $host:$server_port;
        index  /pageOffice/index2.jsp;
    }

    location /cas {
	    proxy_pass http://my_sso_cas_server/cas;
	    # 获取客户端ip地址 Sven
	    proxy_set_header X-Real-IP  $remote_addr;
	    proxy_set_header Host $host:$server_port;
    }


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


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
   

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,不限制

第五步运行服务端:

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

linux彻底卸载mysql<亲测>

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

    在阿里云的centos7上安装mysql57.&的方法   http://blog.csdn.net/dongdong9223/article/details/52536675   
    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  
    可以查看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 39.98.173.142 -p 指定ip
    8: set global validate_password_policy=0; 降低密码安全等级  
    9: ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootnewpassword' ; -- EXPIRE NEVER;  — 修改信息密码,密码永不过期  
    10: mysql查看版本,在mysql中输入:select version(); 就可以看到版本; 或者使用navicate切换到mysql默认数据库查询即可;
    

x

mysql默认是不允许远程登录的,方法如下:
1:见博客:Mysql 5.7 开启远程连接 https://blog.csdn.net/sun614345456/article/details/53672150
使用navicate 如果报错:1130 - Host '117.33.56.28' is not allowed to connect to this MySQL server
命令
1-1:切换到mysql数据库:use mysql;
1-2:开启远程连接root 用户名% 所有人都可以访问password 密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' 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密码找不到的问题

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

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

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
发布了112 篇原创文章 · 获赞 85 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/ab601026460/article/details/17886955