【服务与运维】1.0 centos系统上的nginx搭建

2021-01-19  本文已影响0人  bobokaka
1.0 涉及技术和工具
2.0 技术流程
3.0 服务器统一规划配置安装
3.1 安装Centos7


image.png
image.png
image.png

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

image.png
这里我下载的是:
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

执行:


image.png

重命名一下Java JDK
将目录A重命名为B

mv A B

例子:将/a目录移动到/b下,并重命名为c

mv /a /b/c

执行语句:

mv jdk1.8.0_251 ../company_program/java8
image.png

设置环境变量

 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
image.png

配置生效

source /etc/profile

验证java安装

java -version
image.png

统一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]# 

image.png

编译

make install
image.png

查看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
image.png

查看进程

ps -ef|grep nginx
image.png
可以通过修改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;
  1. 会话保持时间
    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
image.png

允许反向代理命令

setsebool -P httpd_can_network_connect 1

http://zyan.cc/nginx_php_v5/

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
上一篇下一篇

猜你喜欢

热点阅读