软件仓库安装
ubuntu修改软件仓库
vim /etc/apt/sources.list

image.png

仓库类型(Repository Type):第一个字段指定了软件仓库的类型。常见的类型有:
	deb:表示二进制软件包的仓库。
	deb-src:表示源代码软件包的仓库。
仓库地址(Repository Address):第二个字段是软件仓库的地址。它指定了从哪个服务器下载软件包。例如:
	http://archive.ubuntu.com/ubuntu:官方的 Ubuntu 软件源地址。
	http://mirrors.ubuntu.com/mirrors.txt:Ubuntu 镜像源地址。
分发版本(Distribution Version):第三个字段是指定要使用的 Ubuntu 发行版的版本名称。它表示要从仓库中获取哪个发行版的软件包。例如:
	focal:Ubuntu 20.04 LTS 版本(Focal Fossa)。
	bionic:Ubuntu 18.04 LTS 版本(Bionic Beaver)。
存储库分支(Repository Components):第四个字段是存储库分支,它表示软件包的类别或组件。常见的存储库分支包括:
	main:包含官方支持的开源软件包。
	restricted:包含官方支持的但受限制的软件包,可能包含专有驱动程序或受版权保护的组件。
	universe:社区维护的开源软件包。
	multiverse:包含非自由软件或受版权保护的软件包。
apt update
apt/apt-get命令

apt list #apt列出仓库软件包,等于yum list apt search NAME #搜索安装包 apt show apache2 #查看某个安装包的详细信息 apt install apache2 #在线安装软件包 apt remove apache2 #卸载单个软件包但是保留配置⽂件 apt autoremove apache2 #删除安装包并解决依赖关系 apt update #更新本地软件包列表索引,修改了apt仓库后必须执⾏ apt purge apache2 #卸载单个软件包删除配置⽂件 apt upgrade #升级所有已安装且可升级到新版本的软件包 apt full-upgrade #升级整个系统,必要时可以移除旧软件包。 apt edit-sources #编辑source源⽂件 apt-cache madison nginx #查看仓库中软件包有哪些版本可以安装 apt install nginx=1.14.0-0ubuntu1.6 #安装软件包的时候指定安装具体的版本 image.pngimage.pngimage.png

系统资源优化
vim /etc/security/limits.conf
root soft core unlimited
root hard core unlimited
root soft nproc 1000000
root hard nproc 1000000
root soft nofile 1000000
root hard nofile 1000000
root soft memlock 32000
root hard memlock 32000
root soft msgqueue 8192000
root hard msgqueue 8192000
msgqueue 消息队列大小  参数限制了一个用户或进程可以使用的消息队列的最大字节数
core 核心转储文件大小  限制了一个用户或进程可以生成的核心转储文件的大小
nproc 最大进程数   参数限制了一个用户或进程可以创建的最大进程数
memlock 内存锁定 限制了一个用户或进程可以锁定在物理内存中的字节数

image.png 所有显示可以通过 ulimit -a查看 image.png

内核参数优化
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1  反向路径过滤
net.ipv4.ip_nonlocal_bind = 1 控制是否允许非本地 IP 地址绑定到网络套接字上
net.ipv4.ip_forward = 1  用于控制是否启用 IP 转发功能

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0   用于控制是否接受源路由(Source Route)选项的网络数据包
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0  用于控制系统是否允许使用 SysRq 键来触发系统级调试命令。

# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1 用于控制核心转储文件的命名方式

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1 用于控制系统是否启用 TCP SYN Cookies 机制

# Disable netfilter on bridges.网桥相关
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

# Controls the default maxmimum size of a mesage queue
kernel.msgmnb = 65536  用于设置每个消息队列的最大字节数

# # Controls the maximum size of a message, in bytes
kernel.msgmax = 65536 用于设置每个消息队列中单个消息的最大字节数

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736  用于设置共享内存段的最大大小

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296 用于设置系统中可用的共享内存页框的总数

# TCP kernel paramater
net.ipv4.tcp_mem = 786432 1048576 1572864 用于控制 TCP 协议的内存使用情况
	Low Pressure:表示系统内存压力较低时,TCP 内核缓冲区的大小。
	Memory Pressure:表示系统内存压力较高时,TCP 内核缓冲区的大小。
	High Pressure:表示系统内存压力非常高时,TCP 内核缓冲区的大小
net.ipv4.tcp_rmem = 4096 87380 4194304 用于控制 TCP 接收缓冲区的大小
net.ipv4.tcp_wmem = 4096 16384 4194304 用于控制 TCP 发送缓冲区的大小
net.ipv4.tcp_window_scaling = 1  用于控制是否启用 TCP 窗口缩放选项
net.ipv4.tcp_sack = 1 用于控制是否启用 TCP Selective Acknowledgment (SACK) 选项

# socket buffer socket相关
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 20480
net.core.optmem_max = 81920

# TCP conn
net.ipv4.tcp_max_syn_backlog = 262144  用于设置 TCP SYN 队列的最大长度
net.ipv4.tcp_syn_retries = 3 用于设置 TCP 连接建立过程中的 SYN 连接请求重试次数
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15

# tcp conn reuse
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_max_tw_buckets = 20000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syncookies = 1

# keepalive conn  keepalive相关
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.ip_local_port_range = 10001 65000

# swap
vm.overcommit_memory = 0
vm.swappiness = 10
#net.ipv4.conf.eth1.rp_filter = 0
#net.ipv4.conf.lo.arp_ignore = 1
#net.ipv4.conf.lo.arp_announce = 2
#net.ipv4.conf.all.arp_ignore = 1
#net.ipv4.conf.all.arp_announce = 2
dpkg安装包管理
-i, --install <package.deb>:安装一个软件包。
-r, --remove <package>:卸载一个已安装的软件包。
-l, --list:列出已安装的软件包。
-p, --print-avail <package>:显示软件包的详细信息。
-s, --status <package>:显示软件包的安装状态。
-S, --search <pattern>:搜索匹配模式的软件包。
-L, --listfiles <package>:列出软件包安装的文件列表。
-c, --audit:检查已安装的软件包的一致性。
--configure <package>:重新配置一个已安装的软件包。
-P, --purge <package>:卸载软件包及其相关的配置文件。
-G, --get-selections:显示已选择的软件包状态。
-S, --status:显示软件包状态。
-V, --verify <package>:验证软件包的完整性
apt安装nginx

image.png1689668263471.pngimage.pngimage.png

编译安装
安装前准备

安装编译所需要的插件

yum  install -y lrzsz tree screen psmisc lsof tcpdump wget ntpdate
gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel nettools iotop bc zip unzip zlib-devel bash-completion nfs-utils automake libxml2
libxml2-devel libxslt libxslt-devel perl perl-ExtUtils-Embed

apt-get install libpcre3 libpcre3-dev
apt-get install libpcre3 libpcre3-dev
apt install automake 
apt install  libgd-dev 
apt install libgeoip-dev
apt install zlib1g-dev
apt install make
下载源码
wget https://nginx.org/download/nginx-1.24.0.tar.gz
编译安装
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

image.png

make & make install
useradd nginx -s /sbin/nologin -u 2000 #以普通⽤⼾启动nginx
mkdir /apps/nginx/logs
chown nginx.nginx -R /apps/nginx/

image.png

在编译 Nginx 完成后,通常会生成以下四个目录:
sbin 目录:sbin 目录包含 Nginx 的可执行文件,其中最重要的是 nginx 可执行文件,它是 Nginx 服务器的主要执行程序。通过运行该文件,你可以启动 Nginx 服务器并监听指定的端口。
conf 目录:conf 目录包含 Nginx 的配置文件。其中最重要的是 nginx.conf 文件,它是 Nginx 服务器的主配置文件,定义了服务器的全局配置和各种服务器块的配置。
logs 目录:logs 目录用于存储 Nginx 服务器生成的日志文件。其中可能包含错误日志 (error.log)、访问日志 (access.log) 和其他日志文件,可以根据配置进行调整。
html 目录:html 目录是默认的 Web 根目录,用于存储网站的静态文件和网页内容。当访问 Nginx 服务器时,服务器将查找该目录下的文件并将其提供给客户端。
配置文件

image.png

[root@s2 ~]# grep -v "#" /apps/nginx/conf/nginx.conf | grep -v "^$"
#全局配置端,对全局⽣效,主要设置nginx的启动⽤⼾/组,启动的⼯作进程数量,⼯作模式,Nginx的PID路径,⽇
志路径等。
user nginx nginx;
worker_processes 1; #启动⼯作进程数数量
events { #events设置快,主要影响nginx服务器与⽤⼾的⽹络连接,⽐如是否允许同时接受多个⽹络连接,使⽤哪
种事件驱动模型处理请求,每个⼯作进程可以同时⽀持的最⼤连接数,是否开启对多⼯作进程下的⽹络连接进⾏序列化
等。
worker_connections 1024; #设置单个nginx⼯作进程可以接受的最⼤并发,作为web服务器的时候最
⼤并发数为worker_connections * worker_processes,作为反向代理的时候为(worker_connections *
worker_processes)/2
}
http { #http块是Nginx服务器配置中的重要部分,缓存、代理和⽇志格式定义等绝⼤多数功能和第三⽅模块都可以
在这设置,http块可以包含多个server块,⽽⼀个server块中⼜可以包含多个location块,server块可以配置⽂
件引⼊、MIME-Type定义、⽇志⾃定义、是否启⽤sendfile、连接超时时间和单个链接的请求上限等。
include mime.types;
default_type application/octet-stream;
sendfile on; #作为web服务器的时候打开sendfile加快静态⽂件传输,指定是否使⽤sendfile系
统调⽤来传输⽂件,sendfile系统调⽤在两个⽂件描述符之间直接传递数据(完全在内核中操作),从⽽避免了数据在内
核缓冲区和⽤⼾缓冲区之间的拷⻉,操作效率很⾼,被称之为零拷⻉,硬盘 >> kernel buffer (快速拷⻉到
kernelsocket buffer) >>协议栈。
keepalive_timeout 65; #⻓连接超时时间,单位是秒
server { #设置⼀个虚拟机主机,可以包含⾃⼰的全局快,同时也可以包含多个location模块。⽐如本虚拟机
监听的端⼝、本虚拟机的名称和IP配置,多个server 可以使⽤⼀个端⼝,⽐如都使⽤80端⼝提供web服务、
listen 80; #配置server监听的端⼝
server_name localhost; 本server的名称,当访问此名称的时候nginx会调⽤当前serevr内部的配
置进程匹配。
location / { #location其实是server的⼀个指令,为nginx服务器提供⽐较多⽽且灵活的指令,都是
在location中提现的,主要是基于nginx接受到的请求字符串,对⽤⼾请求的UIL进⾏匹配,并对特定的指令进⾏处
理,包括地址重定向、数据缓存和应答控制等功能都是在这部分实现,另外很多第三⽅模块的配置也是在location模
块中配置。
root html; #相当于默认⻚⾯的⽬录名称,默认是相对路径,可以使⽤绝对路径配置。
index index.html index.htm; #默认的⻚⾯⽂件名称
} e
rror_page 500 502 503 504 /50x.html; #错误⻚⾯的⽂件名称
location = /50x.html { #location处理对应的不同错误码的⻚⾯定义到/50x.html,这个跟对应其
server中定义的⽬录下。
root html; #定义默认⻚⾯所在的⽬录
}
}
#和邮件相关的配置
#mail {
# ...
# } mail 协议相关配置段
#tcp代理配置,1.9版本以上⽀持
#stream {
# ...
# } stream 服务器相关配置段
#导⼊其他路径的配置⽂件
#include /apps/nginx/conf.d/*.conf
}
停止nginx

#root@lgw-ubuntu-01:/apps# start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile nginx/logs/nginx.pid 或者 ./nginx -s stop nginx命令

停止 Nginx:
sudo nginx -s stop
这将向 Nginx 主进程发送停止信号,要求服务器平稳地停止。

强制停止 Nginx:
sudo nginx -s quit
这将向 Nginx 主进程发送停止信号,要求服务器立即停止。

重新加载配置文件:
sudo nginx -s reload
这将重新加载 Nginx 的配置文件,使更改的配置生效。

检查配置文件语法是否正确:
sudo nginx -t
这将检查 Nginx 配置文件的语法是否正确,以及配置文件是否存在语法错误。

显示 Nginx 版本信息:
nginx -v

指定使用指定的配置文件启动 Nginx
nginx -c /path/to/nginx.conf

在命令行中指定额外的 Nginx 配置指令
nginx -g "pid /var/run/nginx.pid;"

帮助
nginx -h