当前位置: 首页 > news >正文

nginx: 集群环境配置搭建

nginx 集群环境搭建


1 ) 概述

  • nginx 本身就应该选择性能强劲的机器
  • 同时为了满足更多流量的需求, 多台nginx 机器做集群来满足强大的需求
  • 故而,我们需要一个负载均衡器,以及多台nginx的机器
    • 这里负载均衡器应该有主从和热备,目前先使用一台来描述
  • 这里,我们先用docker来搭建单机版,后续可以选择用docker swarm 或 k8s 来部署到不同的机器上

2 ) 目录结构配置

nginx-cluster-project
├── docker-compose.yml                                # yml 配置文件
├── balancer                                          # 负载均衡器
│       ├── load-balancer.conf
│       ├── conf.d
│       │      ├── common.conf
│       │      ├── servers.conf
│       │	   └── upstreams.conf
│       └── logs
│              ├── access.log
│              └── error.log
├── deploy                                            # 单项nginx服务
│       ├── nginx.conf
│       ├── conf.d
│       │      ├── common
│       │      │       ├── common.conf
│       │      │       ├── gzip.conf
│       │      │       ├── header.cors.conf
│       │      │       ├── header.options.conf
│       │      │       ├── header.proxy.conf
│       │      │       └── log.conf
│       │      ├── servers
│       │      └── upstreams
│       ├── logs
│       │      ├── ng1
│       │      │    ├── error.log
│       │      │    ├── 80
│       │      │    │   ├── access.log
│       │      │    │   └── error.log
│       │      │    ├── 8500
│       │      │    │   ├── access.log
│       │      │    │   └── error.log
│       │      ├── ng2
│       │      │    ├── error.log
│       │      │    ├── 80
│       │      │    │   ├── access.log
│       │      │    │   └── error.log
│       │      │    ├── 8500
│       │      │    │   ├── access.log
│       │      │    │   └── error.log
│       │      └── ng3
│       │      │    ├── error.log
│       │      │    ├── 80
│       │      │    │   ├── access.log
│       │      │    │   └── error.log
│       │      │    ├── 8500
│       │      │    │   ├── access.log
│       │      │    │   └── error.log
│       └── static
│              └── default                              # 某一个项目的部署目录
├── ssl                                                 # 证书配置目录,(集中管理)
│    ├── certificate.crt
│    └── private.key;  
  • 从上面可以看到,docker-compose.yml 用于管理docker容器
  • balancer 是负载均衡器服务(本质上也是一项nginx服务)
    • 这里面的 load-balancer.conf 是用于监听和转发到其他nginx服务器上
    • 并且监听了所有服务的日志(访问日志和错误日志)
  • deploy 是单项nginx服务的配置目录
    • 从中可以看到, 配置文件是通用的,日志是分开管理的
    • 这里为 ng1, ng2, ng3 配置了不同的日志
    • 这里集群了多少台nginx服务器,就创建几份目录
    • 这里是现成的,也可以在docker-compose.yml中用命令创建
  • ssl 是用于集中管理证书的目录

关于 docker-compose.yml

version: '3'
services:load-balancer:image: nginx:latestports:- "80:80"- "8500:8500"volumes:- ./balancer/load-balancer.conf:/etc/nginx/nginx.conf:ro- ./balancer/conf.d:/etc/nginx/conf.d:ro- ./balancer/logs:/var/log/nginx- ./ssl:/etc/nginx/ssl:rodepends_on:- ng-1- ng-2- ng-3networks:- light_networkng-1:image: nginx:latestvolumes:- ./deploy/nginx.conf:/etc/nginx/nginx.conf- ./deploy/conf.d:/etc/nginx/conf.d- ./deploy/logs/ng1:/var/log/nginx- ./deploy/static:/usr/share/nginx/html- ./ssl:/etc/nginx/sslnetworks:- light_networkng-2:image: nginx:latestvolumes:- ./deploy/nginx.conf:/etc/nginx/nginx.conf- ./deploy/conf.d:/etc/nginx/conf.d- ./deploy/logs/ng2:/var/log/nginx- ./deploy/static:/usr/share/nginx/html- ./ssl:/etc/nginx/sslnetworks:- light_networkng-3:image: nginx:latestvolumes:- ./deploy/nginx.conf:/etc/nginx/nginx.conf- ./deploy/conf.d:/etc/nginx/conf.d- ./deploy/logs/ng3:/var/log/nginx- ./deploy/static:/usr/share/nginx/html- ./ssl:/etc/nginx/sslnetworks:- light_networknetworks:light_network:external: true

1 )网络

  • 这里看到,共用了一个 light_network 网络,而且是外部已存的网络
  • 所以,一开始的时候,就要创建它, 参考
    • https://blog.csdn.net/Tyro_java/article/details/134982223
  • 其他服务要想使用nginx集群,就需要使用同样的网络或连通它

2 )服务

  • 这里定义了4个服务,分为 1个负载均衡器和3个nginx服务
  • 其实就是4个nginx服务,当然,如果需要更多nginx服务也可以继续进行创建
  • 在3个nginx服务中,都没有暴露端口,而端口是在负载均衡器中配置的
  • 在同一个docker网络中,docker容器都内都可以相互访问

3 )其他

  • 这里配置缺少了对 cpu, 内存,副本,重启等策略的定义
  • 这里为了保持集群的纯粹性,使用极简的配置,更多配置参考下面的链接

关于 deploy 中的服务


1 )nginx.conf

user  nginx;
worker_processes  auto;pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;                        # mime.types 配置include       /etc/nginx/conf.d/common/common.conf;         # 通用 common 配置include       /etc/nginx/conf.d/common/gzip.conf;           # 通用 gzip 配置include       /etc/nginx/conf.d/common/log.conf;            # 通用 log 配置include       /etc/nginx/conf.d/upstreams/*.conf;           # 包含 upstream 定义include       /etc/nginx/conf.d/servers/*.conf;             # 包含 server 定义
}
  • 这里可以看到,核心文件都拆分到了不同的目录和文件中
  • 这样的拆分设计,让后续复杂的业务更加容易管理

2 ) conf.d/upstreams/consul.conf

upstream backend_consul {server  consul-client1-1:8500  weight=1;server  consul-client2-1:8500  weight=1;
}
  • 这里看到,consul-client1-1 是 consul 的服务名
  • 也就是在docker网络中,可以通过服务名来访问,而非动态的ip
  • 这里的意图,就是把2台consul客户端做一个负载均衡的处理
  • 一般设计consul集群的时候,会有2台客户端和3~5台服务端
  • 这里的consul的2台客户端,通过nginx的负载均衡处理,就保证高可用

3 )conf.d/servers/*.conf

3.1 index_80.conf

server {listen        80;server_name   _;index         index.html index.htm;root          /usr/share/nginx/html/default;access_log    /var/log/nginx/80/access.log  main;       # main 是 log 的格式error_log     /var/log/nginx/80/error.log   notice;     # notice 是 错误的级别 debug、info、notice、warn、error、crit、alert或emerginclude       /etc/nginx/conf.d/common/header.cors.conf;   # 包含 cors 的处理include       /etc/nginx/conf.d/common/header.proxy.conf;  # 包含 proxy 的处理# 定义 首页location / {try_files                     $uri $uri/ =404;include                       /etc/nginx/conf.d/common/header.options.conf;           # 包含 options 的处理}
}

3.2 consul_8500.conf

server {listen        8500;server_name   _;access_log    /var/log/nginx/8500/access.log  main;       # main 是 log 的格式error_log     /var/log/nginx/8500/error.log   notice;     # notice 是 错误的级别 debug、info、notice、warn、error、crit、alert或emerginclude       /etc/nginx/conf.d/common/header.cors.conf;   # 包含 cors 的处理include       /etc/nginx/conf.d/common/header.proxy.conf;  # 包含 proxy 的处理# 定义 首页location / {proxy_pass                    http://backend_consul$request_uri; proxy_connect_timeout         1s;                                                     # 代理超时,请求一台超过1s就会转发到其他ipinclude                       /etc/nginx/conf.d/common/header.options.conf;           # 包含 options 的处理}
}

… 其他可以继续配置
从这里可以看到,每个端口都可以自行配置管理

集群注意事项

在构建和管理NGINX集群时,有许多关键的注意事项,如下

1 ) 集群规模与业务需求:

  • 根据业务需求和系统负载情况,合理配置集群中服务器的数量
  • 过多的服务器可能导致资源浪费,而过少的服务器则可能无法应对高并发请求
  • 在评估集群规模时,需要考虑业务的增长趋势和未来的扩展需求。

2 )负载均衡策略

  • 选择合适的负载均衡策略对于集群的性能至关重要
  • 常见的策略包括轮询、最少连接数、IP哈希等
  • 根据业务场景的特点(如请求的分布、服务器的性能等)来选择合适的策略,以确保请求能够均匀、高效地分发到各个服务器上

3 )网络带宽与延迟

  • 确保集群中服务器之间的网络带宽足够,以保证请求分发的效率
  • 网络带宽不足可能导致请求处理速度下降,影响用户体验
  • 同时,要注意降低网络延迟,确保请求能够快速到达目标服务器并得到响应

4 )服务器的硬件与配置

  • 服务器的硬件配置对于集群的性能有着重要影响
  • 需要确保服务器具有足够的CPU、内存和存储空间来应对高并发请求
  • 同时,合理配置NGINX的参数(如worker_processes、worker_connections等)也是提升集群性能的关键

5 )安全性考虑

  • NGINX集群作为网络服务的核心组件,其安全性至关重要
  • 需要采取一系列安全措施来防范潜在的安全威胁,如使用HTTPS协议、限制访问权限、定期更新和修补安全漏洞等

6 )日志与监控

  • 启用并配置好NGINX的日志功能,以便收集和分析集群的运行状态
  • 通过查看访问日志和错误日志,可以及时发现和解决潜在的问题
  • 同时,建立有效的监控机制,对集群的性能指标进行实时监控和报警,确保集群的稳定运行

7 )高可用性设计

  • 在构建NGINX集群时,需要考虑高可用性设计
  • 例如,可以采用主从配置或热备方案来确保服务的连续性和可用性
  • 还需要制定故障转移和恢复策略,以便在服务器出现故障时能够迅速恢复服务

8 )维护与升级

  • 定期对NGINX集群进行维护和升级是必要的
  • 这包括更新软件版本、清理日志文件、优化配置参数等
  • 在进行升级或维护操作时,需要确保操作的安全性和稳定性,避免对集群的正常运行造成影响
  • 综上所述,构建和管理NGINX集群需要考虑多个方面的因素
  • 只有在充分考虑并处理好这些注意事项的基础上,才能确保集群的稳定性和性能达到最佳状态

关于 多台负载均衡器

  • 之前提到的集群配置中,如果仅有一台负载均衡器而没有相应的备份或冗余机制
  • 那么当这台负载均衡器出现故障时,整个集群将会受到影响,这并不能算作真正的高可用设计
  • 要实现高可用性的负载均衡,我们需要考虑以下几点:

1 )负载均衡器的冗余设计:

  • 部署多台负载均衡器,并通过某种机制(如VRRP、Keepalived等)实现它们之间的主备切换或负载均衡。
  • 这样,当主负载均衡器出现故障时,备用负载均衡器可以迅速接管工作,确保服务的连续性。

2 )健康检查与故障转移

  • 负载均衡器需要能够定期检查后端服务器的健康状态,一旦发现服务器出现故障或响应缓慢,应将其从负载均衡池中移除,并将请求转发到其他健康的服务器上。
  • 同时,负载均衡器之间也需要进行健康检查,以确保主备切换的顺利进行。

3 )数据同步与一致性

  • 如果负载均衡器涉及到会话保持或数据缓存等功能,需要确保在主备切换或负载均衡过程中,数据的同步和一致性得到保障,避免因为数据不一致导致的问题。

4 )网络设计与隔离:

  • 在网络层面,需要考虑负载均衡器与后端服务器之间的网络隔离和冗余设计
  • 例如,可以使用多个网络交换机或路由器来确保网络的稳定性和可靠性。

5 )监控与报警:

  • 建立完善的监控和报警机制,对负载均衡器和后端服务器的运行状态进行实时监控。
  • 一旦出现故障或异常情况,应能够及时发出报警通知,以便管理员迅速介入处理。

6 )综上所述

  • 要实现真正的高可用负载均衡设计,我们需要从多个方面进行考虑和规划
  • 确保在任何情况下都能保持服务的连续性和稳定性
  • 这不仅仅涉及到负载均衡器本身的设计,还需要考虑到整个集群的架构和配置

说明

  • 我们目前搭建的是一套极简的nginx集群,这里可以参考以上注意事项来对集群进行优化和扩展
  • 关于多机器部署,可以使用docker swarm 或 k8s 等进行多机器部署
  • 关于 docker swarm 部署服务参考
    • https://blog.csdn.net/Tyro_java/article/details/135002423
    • https://blog.csdn.net/Tyro_java/article/details/135004351
    • https://blog.csdn.net/Tyro_java/article/details/135023723

源码地址

  • https://github.com/cluster-deploy/cluster-nginx

相关文章:

nginx: 集群环境配置搭建

nginx 集群环境搭建 1 ) 概述 nginx 本身就应该选择性能强劲的机器同时为了满足更多流量的需求, 多台nginx 机器做集群来满足强大的需求故而,我们需要一个负载均衡器,以及多台nginx的机器 这里负载均衡器应该有主从和热备,目前先使用一台来描…...

Linux:进程终止和等待

一、进程终止 main函数的返回值也叫做进程的退出码,一般0表示成功,非零表示失败。我们也可以用不同的数字来表示不同失败的原因。 echo $?//打印最近一次进程执行的退出码 而作为程序猿,我们更需要知道的是错误码所代表的错误信息&#x…...

一、next-auth 身份验证凭据-使用电子邮件和密码注册登录

一、next-auth 身份验证凭据-使用电子邮件和密码注册登录 文章目录 一、next-auth 身份验证凭据-使用电子邮件和密码注册登录一、前言二、前置准备1、环境配置2、相关库安装(1)vercel 配置(2)Yarn 包管理配置 3、next项目初始化与…...

2.SpringBoot利用Thymeleaf实现页面的展示

什么是Thymeleaf? Thymeleaf是一个现代服务器端Java模板引擎,适用于Web和独立环境,能够处理HTML,XML,JavaScript,CSS甚至纯文本。 Thymeleaf的主要目标是提供一种优雅且高度可维护的模板创建方式。为实现这…...

devtool: ‘source-map‘ 和 devtool: ‘#source-map‘的区别

devtool: ‘source-map’ 和 devtool: ‘#source-map’ 之间的区别主要在于前面的#字符。 从Webpack 4开始,就废弃了在devtool选项前加#的用法。 devtool: ‘source-map’ 选项意味着Webpack在构建过程中会生成独立的完整的source map文件。对于测试环境很有用&…...

Flutter Boost 3

社区的 issue 没有收敛的趋势。 设计过于复杂,概念太多。这让一个新手看 FlutterBoost 的代码很吃力。 这些问题促使我们重新梳理设计,为了彻底解决这些顽固的问题,我们做一次大升级,我们把这次升级命名为 FlutterBoost 3.0&am…...

ElementUI响应式Layout布局xs,sm,md,lg,xl

响应式布局 参照了 Bootstrap 的 响应式设计&#xff0c;预设了五个响应尺寸&#xff1a;xs、sm、md、lg 和 xl。 <el-row :gutter"10"><el-col :xs"8" :sm"6" :md"4" :lg"3" :xl"1"><div class…...

机器学习——典型的卷积神经网络

机器学习——典型的卷积神经网络 卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNNs&#xff09;是一类在图像处理领域应用广泛的深度学习模型。它通过卷积操作和池化操作来提取图像的特征&#xff0c;并通过全连接层来进行分类或回归任务。在本文中&am…...

速通数据结构与算法第四站 双链表

系列文章目录 速通数据结构与算法系列 1 速通数据结构与算法第一站 复杂度 http://t.csdnimg.cn/sxEGF 2 速通数据结构与算法第二站 顺序表 http://t.csdnimg.cn/WVyDb 3 速通数据结构与算法第三站 单链表 http://t.csdnimg.cn/cDpcC 感谢佬们…...

51单片机学习笔记12 SPI接口 使用1302时钟

51单片机学习笔记12 SPI接口 使用1302时钟 一、DS1302简介1. 功能特性2. 涓流充电3. 接口介绍时钟数据和控制线&#xff1a;电源线&#xff1a;备用电池连接&#xff1a; 二、寄存器介绍1. 控制寄存器2. 时间寄存器3. 日历/时钟寄存器 三、BCD码介绍四、DS1302时序1. 读时序2. …...

php编辑器 ide 主流编辑器的优缺点。phpstorm vscode atom 三者对比

编辑器PhpStormvscodeAtom是否收费收费&#xff0c;有30天试用期免费免费内存占用Java平台&#xff0c;一个进程1G多内存占用好几个进程&#xff0c;合起来1G上下/基本功能都具备&#xff0c;有的功能需要装插件都具备&#xff0c;有的功能需要装插件都具备&#xff0c;有的功能…...

【动手学深度学习】深入浅出深度学习之RMSProp算法的设计与实现

目录 &#x1f31e;一、实验目的 &#x1f31e;二、实验准备 &#x1f31e;三、实验内容 &#x1f33c;1. 认识RMSProp算法 &#x1f33c;2. 在optimizer_compare_naive.py中加入RMSProp &#x1f33c;3. 在optimizer_compare_mnist.py中加入RMSProp &#x1f33c;4. 问…...

大转盘抽奖小程序源码

源码介绍 大转盘抽奖小程序源码&#xff0c;测试依旧可用&#xff0c;无BUG&#xff0c;跑马灯旋转效果&#xff0c;非常酷炫。 小程序核心代码参考 //index.js //获取应用实例 var app getApp() Page({data: {circleList: [],//圆点数组awardList: [],//奖品数组colorCirc…...

数据结构(无图版)

数据结构与算法&#xff08;无图版&#xff0c;C语言实现&#xff09; 1、绪论 1.1、数据结构的研究内容 一般应用步骤&#xff1a;分析问题&#xff0c;提取操作对象&#xff0c;分析操作对象之间的关系&#xff0c;建立数学模型。 1.2、基本概念和术语 数据&#xff1a;…...

软件测试中的顶级测试覆盖率技术

根据 CISQ 报告&#xff0c;劣质软件每年给美国公司造成约2.08 万亿美元的损失。虽然软件工具是企业和行业领域的必需品&#xff0c;但它们也容易出现严重错误和性能问题。人类手动测试不再足以检测和消除软件错误。 因此&#xff0c;产品或软件开发公司必须转向自动化测试&am…...

vscode使用技巧

常用快捷键 代码格式 Windows系统。格式化代码的快捷键是“ShiftAltF” Mac系统。格式化代码的快捷键是“ShiftOptionF” Ubuntu系统。格式化代码的快捷键是“CtrlShiftI”配置缩进 点击左上角的“文件”菜单&#xff0c;然后选择“首选项”>“设置”&#xff0c;或者使用…...

JSP

概念&#xff1a;Java Server Pages&#xff0c;Java服务端页面 一种动态的网页技术&#xff0c;其中既可以定义HTML、JS、CSS等静态内容&#xff0c;还可以定义Java代码的动态内容 JSP HTML Java 快速入门 注&#xff1a;Tomcat中已经有了JSP的jar包&#xff0c;因此我们…...

Mybatis--TypeHandler使用手册

TypeHandler使用手册 场景&#xff1a;想保存user时 teacher自动转String &#xff0c;不想每次保存都要手动去转String&#xff1b;从DB查询出来时&#xff0c;也要自动帮我们转换成Java对象 Teacher Data public class User {private Integer id;private String name;priva…...

网络编程(TCP、UDP)

文章目录 一、概念1.1 什么是网络编程1.2 网络编程中的基本知识 二、Socket套接字2.1 概念及分类2.2 TCP VS UDP2.3 通信模型2.4 接口方法UDP数据报套接字编程TCP流套接字编程 三、代码示例3.1 注意点3.2 回显服务器基于UDP基于TCP 一、概念 首先介绍了什么是网络编程&#xff…...

Python快速入门系列-7(Python Web开发与框架介绍)

第七章:Python Web开发与框架介绍 7.1 Flask与Django简介7.1.1 Flask框架Flask的特点Flask的安装一个简单的Flask应用示例7.1.2 Django框架Django的特点Django的安装一个简单的Django应用示例7.2 前后端交互与数据传输7.2.1 前后端交互7.2.2 数据传输格式7.2.3 示例:使用Flas…...

最长对称子串

对给定的字符串&#xff0c;本题要求你输出最长对称子串的长度。例如&#xff0c;给定Is PAT&TAP symmetric?&#xff0c;最长对称子串为s PAT&TAP s&#xff0c;于是你应该输出11。 输入格式&#xff1a; 输入在一行中给出长度不超过1000的非空字符串。 输出格式&…...

【大模型】大模型 CPU 推理之 llama.cpp

【大模型】大模型 CPU 推理之 llama.cpp llama.cpp安装llama.cppMemory/Disk RequirementsQuantization测试推理下载模型测试 参考 llama.cpp 描述 The main goal of llama.cpp is to enable LLM inference with minimal setup and state-of-the-art performance on a wide var…...

异地组网怎么管理?

在当今信息化时代&#xff0c;随着企业的业务扩张和员工的分布&#xff0c;异地组网已经成为越来越多企业的需求。异地组网管理相对来说是一项复杂而繁琐的任务。本文将介绍一种名为【天联】的管理解决方案&#xff0c;帮助企业更好地管理异地组网。 【天联】组网的优势 【天联…...

Kafka参数介绍

官网参数介绍:Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/documentation/#configuration...

如何利用待办事项清单提高工作效率?

你是否经常因为繁重的工作量而感到不堪重负&#xff1f;你是否在努力赶工期或经常忘记重要的电子邮件&#xff1f;你并不是特例。如何利用待办事项清单提高工作效率&#xff1f;这里有一个简单的方法可以帮你理清混乱并更高效地完成任务—待办事项清单。 这种类型的清单可以帮…...

力扣经典150题第二题:移除元素

移除元素问题详解与解决方法 1. 介绍 移除元素问题是 LeetCode 经典题目之一&#xff0c;要求原地修改输入数组&#xff0c;移除所有数值等于给定值的元素&#xff0c;并返回新数组的长度。 问题描述 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等…...

55555555555555

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…...

用Skimage学习数字图像处理(018):图像形态学处理(上)

本节开始讨论图像形态学处理&#xff0c;这是上篇&#xff0c;将介绍与二值形态学相关的内容&#xff0c;重点介绍两种基本的二值形态学操作&#xff1a;腐蚀和膨胀&#xff0c;以及三种复合二值形态学操作&#xff1a;开、闭和击中击不中变换。 目录 9.1 基础 9.2 基本操作…...

MySQL中 in 和 exists 区别

在MySQL中&#xff0c;IN和EXISTS都是用于在子查询中测试条件的操作符&#xff0c;但它们在处理和效率上有一些重要的区别。MySQL中的in语句是把外表和内表作hash连接&#xff0c;⽽exists语句是对外表作loop循环&#xff0c;每次loop循环再对内表进⾏查询。⼤家⼀直认为exists…...

Java基础 - 代码练习

第一题&#xff1a;集合的运用&#xff08;幸存者&#xff09; public class demo1 {public static void main(String[] args) {ArrayList<Integer> array new ArrayList<>(); //一百个囚犯存放在array集合中Random r new Random();for (int i 0; i < 100; …...

进一步加强区门户网站建设管理/网店运营推广中级实训

我的网站上有两个下拉菜单。使用的技术有javascript、php、mysql。City : [ ]Area : [ ]TODO:当用户选择城市时,我想查询城市中区域的数据库,并动态填充区域下拉菜单。当用户选择区域时,我想再次查询数据库中属于该特定区域和城市的结果。像这样的事情(一步一步)。------------…...

广州抖音推广/seo优化工具推荐

当线程200个请求数据同时越过redis 缓存访问sql 时 数据库顿时挂掉 设置错误率 值越少数组空间占用越大 转载于:https://www.cnblogs.com/zuochanzi/p/9378202.html...

郴州建设工程信息网站/免费发链接的网站

在本地部署 Web 应用时我有遇到过某网络端口已经被其他程序占用的情况&#xff0c;这时候就需要先退出占用该端口的进程&#xff0c;我们可以通过“终端”来实现结束占用某特定端口的进程 1、打开终端&#xff0c;使用如下命令&#xff1a; lsof -i:**** 以上命令中&#xff0c…...

人大网站建设不足/今日新闻国际最新消息

uci set network.lan.ipaddr[lan ip] 使用pppoe设置 Shell代码 uci set network.wan.protopppoe //设置wan口类型为pppoe uci set network.wan.username[上网帐户] uci set network.wan.password[上网密码] //这两行设置pppoe用户名和密码 如果要挂在上级路由下面,就…...

wordpress统计分析/东莞网络优化公司

作者 | 张俊鸣素有“大笨象”之称的银行股轻盈起舞&#xff0c;上证指数五天内连攻3000点到3400点之间的五个百点整数关口&#xff0c;“牛市来了”已经成为众多投资者的共识。伴随着汹涌入市的资金潮&#xff0c;日成交破万亿再度成为“新常态”&#xff0c;部分券商的APP一度…...

宿州企业网站建设/seo岗位职责

前者使用property的点操作符&#xff0c;也就相当于调用了abc对应的set method&#xff0c;和这句是一样的&#xff1a;[self setAbc:nil];而后者没有通过property&#xff0c;直接访问了成员变量&#xff0c;调用了它的release方法。对于set method来说&#xff0c;用synthesi…...