好记星不如烂笔头,这里记录平时工作中用到的东西,不喜可以留言。
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
2:centos jdk 安装 和 tomcat按照
附加说明:
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 # 更新过期时间
至此安装关闭,官网测试地址
第四部: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上安装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密码找不到的问题 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
6: 使用FastDfs centos7下的FastDFS5_09的安装与使用 x kevin提供教程
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