1.0 涉及技术和工具
- 后台服务架构dubbo、SpringBoot、SpringMVC、springsecurityOauth2、spring-idap、spring-data-jpa等
- 项目管理工具maven、nexus
- 版本管理工具:gitlab、git
- 数据库:mysql、mongodb
- 运维监控工具:Open-Falcon
- 日志管理工具:ELK
- 持续集成工具:Jenkins
- 协作工具:confluence
- 缓存:redis
- 消息中间件:kafka、rocketmq
- web服务器:tomcat、nginx
- 容器引擎:docker
2.0 技术流程
- 搭建dubbo技术体系
- 结合dubbo搭建一个完整的基础rest父类的技术框架
- 结合dubbo的restful框架,加上基于Oauth2的token验证,实现统一用户中心设计
- 实现springbook和dubbo相融合
- java性能调优——JVM
- 消息中间件redis
- 高可用集群搭建——分布式、一致性
- Git、ELK、Jenkins、confluence、kafka、rocketmq工具安装
- 运维兼容工具Open-Falcon——保证服务器正常运行
- docker部署
3.0 服务器统一规划配置安装
3.1 安装Centos7
略
U 盘的名字是 CentOS 7 x8 ,但这里指向了 CentOS\x207\x20x86_64 ,所以就会出错
删除该条命令中路径后面的 6_64 就行了嘛
将:
vmlinuz initrd=initrd.imginst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
修改为:
vmlinuz initrd=initrd.imginst.stage2=hd:LABEL=CentOS\x207\x20x8 rd.live.check quiet
(PS:路径中的 x20 就是空格)
修改完后,按回车 Enter 键(ctrl+x)就可以了正常进入 CentOS 的安装界面了
切换数据源为华为镜像站https://mirrors.huaweicloud.com/
使用说明
CentOS的镜像地址为:https://mirrors.huaweicloud.com/centos/
1、备份配置文件:
cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
##阿里云:
cp -a /etc/yum.repos.d/AliYun.repo /etc/yum.repos.d/AliYun.repo.bak
2、两种方案,请大家自行选取。
方案一:
下载新的CentOS-Base.repo文件到/etc/yum.repos.d/目录下,选择CentOS版本,执行如下命令:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-8-anon.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
方案二:
修改CentOS-Base.repo文件,取消baseurl开头的行的注释,并增加mirrorlist开头的行的注释。将文件中的http://mirror.centos.org替换成https://mirrors.huaweicloud.com,可以参考如下命令:
sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/CentOS-Base.repo
sed -i "s/mirrorlist=http/#mirrorlist=http/g" /etc/yum.repos.d/CentOS-Base.repo
sed -i "s@http://mirror.centos.org@https://mirrors.huaweicloud.com@g" /etc/yum.repos.d/CentOS-Base.repo[](javascript:void(0); "复制")
3、执行yum clean all清除原有yum缓存。
4、执行yum makecache(刷新缓存)或者yum repolist all(查看所有配置可以使用的文件,会自动刷新缓存)。
相关网址
CentOS官方地址:http://www.centos.org/
CentOS邮件列表地址:http://www.centos.org/modules/tinycontent/index.php?id=16
CentOS论坛地址:http://www.centos.org/modules/newbb/
CentOS文档地址:http://www.centos.org/docs/
CentOS Wiki地址:http://wiki.centos.org/
查看linux系统版本命令(只适合Redhat系的Linux)
cat /etc/redhat-release
当前服务器系统为:
CentOS Linux release 7.7.1908 (Core)
终止当前命令的快捷键
Ctrl+c
3.2 安装Java jdk
下载Java JDK 8下载地址:Java SE Development Kit 8 Downloads
这里我下载的是:
jdk-8u251-linux-x64.tar.gz
所有配置软件都放到根目录下/data/program/software下。
解压命令
cd /data/company/company_software
tar -zxvf jdk-8u251-linux-x64.tar.gz
也可以解压到指定的文件夹
tar -zxvf java.tar.gz -C /usr/java
执行:
重命名一下Java JDK
将目录A重命名为B
mv A B
例子:将/a目录移动到/b下,并重命名为c
mv /a /b/c
执行语句:
mv jdk1.8.0_251 ../company_program/java8
设置环境变量
cat /etc/profile
export JAVA_HOME=/data/company/company_program/java8
export JRE_HOME=/data/company/company_program/java8/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
配置生效
source /etc/profile
验证java安装
java -version
统一host
vi /etc/hosts
202.117.17.123 centos7-69.localhost centos7-69
如果即将访问的域名是http://www.aaaa.com.cn
202.117.17.123 www.aaaa.com.cn
防火墙
对于centos6:
查看状态:
firewall-cmd --state
关闭:
systemctl stop firewalld.service
永久关闭
systemctl disable firewalld.service
安装tomcat
解压zip文件
tar -zxvf apache-tomcat-8.5.54.tar.gz
zip文件,想解压缩:
# unzip yasuo.zip
删除文件夹实例:
rm -rf /var/log/httpd/access
将会删除/var/log/httpd/access目录以及其下所有文件、文件夹
删除文件使用实例:
rm -f /var/log/httpd/access.log
将会强制删除/var/log/httpd/access.log这个文件
解压tomcat之后,
同一服务器部署多个tomcat时,存在端口号冲突的问题,所以需要修改tomcat配置文件server.xml。
部署多个tomcat主要修改三个端口:
1.HTTP端口,默认8080,如下改为8081
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="60000"
redirectPort="8443" disableUploadTimeout="false" executor="tomcatThreadPool" URIEncoding="UTF-8"/>
2.远程停服务端口,默认8005,如下改为8006
<Server port="8006" shutdown="SHUTDOWN">......
3.AJP端口,默认8009,如下改,8010
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
下载nginx
nginx是多进程单线程后台服务器工具,可以作为反向代理服务器或者邮件服务器。https://www.cnblogs.com/lich1x/p/11225528.html
wget http://nginx.org/download/nginx-1.16.1.tar.gz
wget http://nginx.org/download/nginx-1.17.10.tar.gz
wget http://nginx.org/download/nginx-1.19.10.tar.gz
tar -zxvf nginx-1.19.10.tar.gz
复制
cp -a apache-tomcat-8.5.54 apache-tomcat-8.5.54_student
nginx安装需要依赖第三方库。
比如
pcre(支持rewrite)
zlib(支持gzip)
openssl(支持ssl模块)
安装gcc gcc-c++
yum install -y gcc gcc-c++
安装PCRE
yum -y install pcre-devel
安装zlib:
yum -y install zlib-devel
安装openssl:
yum -y install openssl-devel
编译并安装nginx
cd /data/company/company_software/nginx-1.19.10
初始化配置
./configure
重装nginx三件套
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module
make && make install
[root@service nginx-1.16.1]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.16.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module
[root@service nginx-1.16.1]#
编译
make install
查看nginx是否支持ssl
/usr/local/nginx/sbin/nginx -V
conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器最核心最主要的配置文件,我们主要修改配置此文件。其他配置文件是配置nginx相关功能的。
比如:
fastcgi功能使用的是fastcgi.conf和fastcgi——params两文件。配置文件一般都有样板配置文件,是文件名称.default结尾,使用时将其扶植并将default去掉即可。
html目录中保存nginx服务器的web文件,但可以更改为其他目录保存web文件,另外还有一个50x.html是默认的错误页面提示页面
logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放到其他路径,比如/var/logs/nginx里面。
sbin:保存nginx二进制启动脚本,可以接受不同的参数已实现不同的功能。
1 启动nginx服务
/usr/local/nginx/sbin/nginx
查看进程
ps -ef|grep nginx
可以通过修改nginx.conf中的
worker_processes 1;
参数启动多个工作进程。
2 重启nginx服务
service httpd restart
/usr/local/nginx/sbin/nginx -s reload
3 停止nginx服务
/usr/local/nginx/sbin/nginx -s stop
4 强制关闭nginx服务
pkill nginx
配置反向代理
参数设置及优化
1.网络连接优化
优化同一时刻只有一个请求而避免多个睡眠进程被唤醒的设置。on为防止被同时唤醒,默认为off。因此,nginx刚安装完以后要进行适当的优化。
events{
accept_mutex on;
}
2.设置是否同时接受多个网络连接
events{
accept_mutex on;
multi_accept on; #打开同时接受多个新网络连接请求的功能。
}
3.隐藏nginx版本号
防止版本号泄露被黑客攻击
server_tokens off;#在http模块当中配置
4.选择事件驱动模型
events{
accept_mutex on;
multi_accept on;
use epoll; #使用epoll事件驱动,因为epoll的性能相比其他事件驱动要好很多。
}
5.配置单个工作进程的最大连接数。
events{
worker_connections 1024; #最大连接数为 1024.
}
但是不能超过操作系统支持的最大文件句柄数。
ulimit -n
可修改
ulimit -n 2048
6.定义MIME-Type
在浏览器当中可以显示的内容有HTML/GIF/HTML和flash的内容浏览器,为了取得这些资源,需要使用MIME type,即MIME是网络资源的媒体类型。作为Web服务器,必须要能够识别全都请求的资源类型。需要在文件中引入第三方文件使用include导入。
include mime.types;
default_type application/octet-stream;
7.自定义访问日志
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;
访问日志是记录客户端,即用户的具体请求内容。全局配置模块中的error_log。是记录nginx服务器运行时日志保存路径和记录日记的日志的level。定义一个日志需要使用access_log指定日志的保存路径。使用log_format指定日志的格式,格式定义要保存的具体日志内容。
8.配置允许sendfile方式传输文件
由后端程序负责把源文件打包加密生成目标文件,然后程序读取目标文件返回给浏览器,这种做法有个致命的缺陷,就是占用大量后端程序资源,如果遇到一些访客下载速度巨慢,就会造成大量资源被长期占用得不到释放。很快,后端程序就会因为没有资源可用而无法正常提供服务,通常表现就是niginx报502错误,而sendfile打开后配合location可以实现有nginx检测文件使用存在,如果存在就有nginx直接提供静态文件游览服务,因此可以提升服务器性能。
可以配置在http、server或者location模块:
sendfile on;
sendfile_max_chunk 512k; #nginx工作进程每次调用sendfile()传输的数据最大不能超过这个值,默认为零表示无限制。可以设置在http、server或者location模块中。
9.配置nginx工作进程最大打开文件数
可以设置为和linux系统最大打开文件数量一致,在局模块配置
worker_rlimit_nofile 4096;
- 会话保持时间
keepalive_timeout 120;
11.配置网络监听
使用listen,可以配置监听IP+端口,端口或监听unix socker
listen 8090; #监听本机的ipv4和ipv6的8090端口等同于listen *:8000
listen 192.168.0.1:8090 #监听指定地址的8090端口。
listen Unix:/www/file; #监听unix socket
以上1-11都可以跳过,在/usr/local/nginx/conf文件目录下,修改如下3个文件:
#nginx配置
user root;
worker_processes 8;#服务器并发处理服务关键配置
worker_rlimit_nofile 51200;#单个线程最大文件句柄数量
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#定义全局错误日志文件。
error_log /data/company/company_workspace/nginx_log/logs/nginx/overrall_log/nginx_error.log crit;
#进程id存储文件,用来指定进程pid的存储文件位置
pid /data/company/company_workspace/nginx_log/logs/nginx/overrall_log/nginx.pid;
events {
worker_connections 51200; #最大连接数为 51200.
accept_mutex on;#优化同一时刻只有一个请求而避免多个睡眠进程被唤醒的设置
multi_accept on; #打开同时接受多个新网络连接请求的功能。
use epoll; #使用epoll事件驱动,因为epoll的性能相比其他事件驱动要好很多。
}
http {
#多媒体加载依赖,使浏览器能启用mime类型
include mime.types;
#反向代理配置
include open-falcon.conf;
#正向代理配置
include forward-proxy.conf;
default_type application/octet-stream;#default_type:默认类型为二进制流
proxy_temp_path /usr/local/nginx/proxy_temp_dir;
proxy_cache_path /usr/local/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=5g;
# 指定来自客户端请求头的headerbuffer大小。
# 对于大多数请求,1K的缓冲区大小已经足够,如果自定义了消息头或有更大的Cookie,可以增加缓冲区大小。这里设置为32K;
client_header_buffer_size 32k;
#设置客户端请求头读取超时时间。
#如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误;
client_header_timeout 60;
#用来指定客户端请求中较大的消息头的缓存最大数量和大小, “4”为个数,“32K”为大小,最大缓存量为4个128K;
large_client_header_buffers 4 32k;
client_max_body_size 50m;#允许客户端请求的最大的单个文件字节数
# client_body_timeout设置客户端请求主体读取超时时间。
# 如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误,
# 默认值是60;
client_body_timeout 60;
#send_timeout指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,
#如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
#send_timeout 60;
server_names_hash_bucket_size 512;#服务器名称哈希表的最大大小。开启多个server时使用
#sendfile_max_chunk 512k;
#tcp_nopush on;
server_tokens off;#在http模块当中配置,隐藏nginx版本号
#客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接
#keepalive_timeout 0;
keepalive_timeout 120;
# 开启高效文件传输模式。
# 将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
#gzip on;#http头压缩
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
access_log off;
# server {
# listen 443 ssl;
# server_name isso.xjtu.edu.cn;
# ssl_certificate /etc/pki/tls/certs/cn_chain.crt;
# ssl_certificate_key /etc/pki/tls/private/cn_key.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
#
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#
# location / {
# proxy_pass http://localhost:8088;#https://localhost:8088
# root html;
# index index.html index.htm;
# }
# }
}
open-falcon.conf
#反向代理配置
server{
listen 80;
#listen 8080;
#listen somename:8080;
server_name www.baidu.com;
index index.php index.html index.htm default.php default.htm default.html;
client_max_body_size 60M;
client_body_buffer_size 512K;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
#include enable-php-56.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
#include /www/server/panel/vhost/rewrite/ttwis.com.conf;
#REWRITE-END
access_log /data/company/company_workspace/nginx_log/logs/nginx/rproxy_log80/rproxy.access.log; #accesslog输出路径
error_log /data/company/company_workspace/nginx_log/logs/nginx/rproxy_log80/rproxy.error.log; #errorlog输出路径
location / {
proxy_pass http://127.0.0.1:8088;#http://localhost:8088
proxy_redirect off;
proxy_set_header Host $host;
#proxy_set_header Host $http_host; # 解决如果URL中带"."后Nginx 503错误
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_body_buffer_size 512k;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_buffer_size 32k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_cache cache_one;
proxy_set_header X-Forwarded-Proto https;
}
}
forward-proxy.conf
#正向代理配置
server {
listen 8080;# 代理监听端口
server_name localhost;
#resolver 223.5.5.5; #代理DNS配置
#charset koi8-r;
#access_log logs/host.access.log main;
access_log /data/company/company_workspace/nginx_log/logs/nginx/fproxy_log/fproxy.access.log; #accesslog输出路径
error_log /data/company/company_workspace/nginx_log/logs/nginx/fproxy_log/fproxy.error.log; #errorlog输出路径
location / {
proxy_pass $scheme://$host$request_uri; # 配置正向代理参数
proxy_set_header Host $http_host; # 解决如果URL中带"."后Nginx 503错误
proxy_buffers 256 4k; # 配置缓存大小
proxy_max_temp_file_size 0; # 关闭磁盘缓存读写减少I/O
proxy_connect_timeout 30; # 代理连接超时时间
# 配置代理服务器HTTP状态缓存时间
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
}
}
linux其他操作
1、强制杀死该端口进程
sudo fuser -k -n tcp 80
2、根据PID关闭某个被占用的端口
netstat -tunlp | grep 80
lsof -i:80
sudo kill -9 PID
优化linux内核参数
vim /etc/sysctl.conf
set paste
# Add
#禁用包过滤功能
net.ipv4.ip_forward = 0
#启用源路由核查功能
net.ipv4.conf.default.rp_filter = 1
#禁用所有IP源路由
net.ipv4.conf.default.accept_source_route = 0
#使用sysrq组合键是了解系统目前运行情况,为安全起见设为0关闭
kernel.sysrq = 0
#控制core文件的文件名是否添加pid作为扩展
kernel.core_uses_pid = 1
#开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768
#每个消息队列的大小(单位:字节)限制
kernel.msgmnb = 65536
#整个系统最大消息队列数量限制
kernel.msgmax = 65536
#单个共享内存段的大小(单位:字节)限制,计算公式16G*1024*1024*1024-1(字节)
kernel.shmmax = 17179869183
#所有内存大小(单位:页,1页 = 4Kb),计算公式(16G*1024*1024-1)/4KB (页)
kernel.shmall = 4194303
#系统范围内共享内存段的最大数量。该参数的默认值是 4096.此值也是在系统中可以启动的Oracle实例的最大数量,通常不需要更改,因为显然在生产环境下,一个服务器上同时启动的实例个数达不到这个数量.
kernel.shmmni = 4096
#250 SEMMSL max semaphores per array 信号集容纳最大信号数量
#32000 SEMMNS max semaphores system wide 所有信号的最大数量
#32 SEMOPM max ops per semop call 调用单个信号集中最大信号数量
#128 SEMMNI max number of arrays 信号集的最大值
kernel.sem = 250 32000 100 128
#timewait的数量,默认是180000
net.ipv4.tcp_max_tw_buckets = 6000
#开启有选择的应答
net.ipv4.tcp_sack = 1
#支持更大的TCP窗口. 如果TCP窗口最大超过65535(64K), 必须设置该数值为1
net.ipv4.tcp_window_scaling = 1
#TCP读buffer
net.ipv4.tcp_rmem = 4096 131072 1048576
#TCP写buffer
net.ipv4.tcp_wmem = 4096 131072 1048576
#为TCP socket预留用于发送缓冲的内存默认值(单位:字节)
net.core.wmem_default = 8388608
#为TCP socket预留用于发送缓冲的内存最大值(单位:字节)
net.core.wmem_max = 16777216
#为TCP socket预留用于接收缓冲的内存默认值(单位:字节)
net.core.rmem_default = 8388608
#为TCP socket预留用于接收缓冲的内存最大值(单位:字节)
net.core.rmem_max = 16777216
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 262144
#web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值
net.core.somaxconn = 65500
#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)
net.ipv4.tcp_max_orphans = 3276800
#记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128
net.ipv4.tcp_max_syn_backlog = 262144
#时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉
net.ipv4.tcp_timestamps = 0
#为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量
net.ipv4.tcp_synack_retries = 2
#在内核放弃建立连接之前发送SYN包的数量
net.ipv4.tcp_syn_retries = 2
# net.ipv4.tcp_tw_len = 1
#开启TCP连接中time_wait sockets的快速回收
net.ipv4.tcp_tw_recycle = 1
#开启TCP连接复用功能,允许将time_wait sockets重新用于新的TCP连接(主要针对time_wait连接)
net.ipv4.tcp_tw_reuse = 1
#1st低于此值,TCP没有内存压力,2nd进入内存压力阶段,3rdTCP拒绝分配socket(单位:内存页)
net.ipv4.tcp_mem = 94500000 915000000 927000000
#如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
net.ipv4.tcp_fin_timeout = 30
#表示当keepalive起用的时候,TCP发送keepalive消息的频度(单位:秒)
net.ipv4.tcp_keepalive_time = 120
#对外连接端口范围
net.ipv4.ip_local_port_range = 9000 65000
#表示文件句柄的最大数量
fs.file-max = 6815744
fs.aio-max-nr = 1048576
使配置立即生效:
/sbin/sysctl -p
配置开机启动nginx
vim /etc/rc.local
#文件最后加入如下代码
/usr/local/webserver/nginx/sbin/nginx
开机启动第二种配置方法:
创建用于启动nginx的配置文件
[root@localhost ~]# touch /usr/lib/systemd/system/nginx.service
[root@localhost ~]# cd /usr/lib/systemd/system
vim nginx.service
[Unit]
Description=nginx Server
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
修改nginx.service所属用户组,保持和配置文件一致
chmod 775 nginx.service
启动服务
systemctl start nginx.service
关闭服务
systemctl stop nginx.service
开机启动
systemctl enable nginx.service
重新启动服务
systemctl restart nginx.service
查看所有已启动的服务
systemctl list-units --type=service
查看服务当前状态
systemctl status nginx.service
停止开机自启动
systemctl disable nginx.service
重启
reboot
查看nginx是否自启动
ps -ef|grep nginx
编写每天定时切割Nginx日志的脚本
vim /usr/local/nginx/sbin/cut_nginx_log.sh
输入以下内容:
#!/bin/bash
# This script run at 00:00
# The Nginx logs path
logs_pathall="/data/company/company_workspace/nginx_log/logs/nginx/overrall_log/"
mkdir -p ${logs_pathall}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_pathall}access.log ${logs_pathall}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/nginx/nginx.pid`
logs_pathfp="/data/company/company_workspace/logs/nginx/fproxy_log/"
mkdir -p ${logs_pathfp}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_pathfp}access.log ${logs_pathfp}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/nginx/nginx.pid`
logs_pathrp="/data/company/company_workspace/logs/nginx/rproxy_log/"
mkdir -p ${logs_pathrp}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_pathrp}access.log ${logs_pathrp}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/nginx/nginx.pid`
2、设置crontab,每天凌晨00:00切割nginx访问日志
crontab -e
输入以下内容:
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh
允许反向代理命令
setsebool -P httpd_can_network_connect 1
apache
启动
systemctl start httpd
停止
systemctl stop httpd
重启
systemctl restart httpd
mysql
启动
systemctl start mysqld
停止
systemctl stop mysqld
重启
systemctl restart mysqld
php-fpm
启动
systemctl start php-fpm
停止
systemctl stop php-fpm
重启
systemctl restart php-fpm
nginx
启动
systemctl start nginx
停止
systemctl stop nginx
重启
systemctl restart nginx
设置nginx全局变量
vim /etc/profile
export JAVA_HOME=/data/company/company_program/java8
export JRE_HOME=/data/company/company_program/java8/jre
export NGINX_HOME=/usr/local/nginx/sbin
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib:$NGINX_HOME
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$NGINX_HOME
source /etc/profile
设置主机名称
hostnamectl set-hostname www.aaa.com
查看主机名称
hostnamectl status
linux 创建当前路径的快捷方式放在主目录
ln -s `pwd` ~/link_example