3、Web server 之httpd2.2 配置说明
http协议实现的程序
静态(httpd, nginx, lighttpd)
动态 (IIS, tomcat, jetty, jboss, resin, websphere, weblogic, oc4j)
客户端工具 (telnet, elinks, curl) 纯文本协议访问工具
HTTPD配置(端口、别名、访问控制、MPM、keep-alive、dso、DocumentRoot、DirectoryIndex、默认字符集、虚拟主机、mod_deflate模块、HTTPS配置)
HTTPD工具(htpasswd, apxs, rotatelogs, suexec),HTTPD压力测试(ab, webbench, http_load, jmeter, loadrunner, tcpcopy)
ASF: Apache Software Foundation Apache 软件基金会
FSF: Free Software Foundaton 自由软件基金会
ASF赖以起家的是: httpd<命名:apache>
HTTP安装
httpd(2)
CentOS 6 默认提供rpm包 2.2版本
CentOS 7 默认提供rpm包 2.4版本 (默认未安装)
CentOS 6 httpd程序环境(rpm安装)
/etc/httpd //ServerRoot 服务器根目录
/etc/httpd/conf.d //配置片段目录
/etc/httpd/conf/httpd.conf //主配置
/etc/httpd/logs //日志目录
/etc/httpd/modules //模块目录
/etc/httpd/run //运行中的进程的数据
/etc/rc.d/init.d/httpd //服务脚本
/etc/sysconfig/httpd //服务脚本配置 /usr/lib/httpd/modules
/usr/lib/httpd/modules/mod_actions.so //DSO机制,动态共享对象
/usr/sbin/apachectl //apachectl程序
主程序文件:
/usr/sbin/httpd //MPM为IO,串行响应的进程
/usr/sbin/httpd.event //MPM为复用I/O模型,并行响应的进程 <2.2的httpd,event不成熟>
/usr/sbin/httpd.worker //MPM.............................
//ps axu | fgrep httpd可查看 /usr/share/doc/httpd-2.2. //<DOCUMENTATION>
/usr/share/doc/httpd-2.2./ABOUT_APACHE
/usr/share/doc/httpd-2.2./CHANGES
/usr/share/doc/httpd-2.2./LICENSE
/usr/share/doc/httpd-2.2./NOTICE
/usr/share/doc/httpd-2.2./README
/usr/share/doc/httpd-2.2./VERSIONING /usr/share/man/man8/apachectl..gz //<MAN Document>
/usr/share/man/man8/htcacheclean..gz
/usr/share/man/man8/httpd..gz
/usr/share/man/man8/rotatelogs..gz
/usr/share/man/man8/suexec..gz /var/cache/mod_proxy //<缓存目录>
/var/lib/dav //<程序运行中的数据>
/var/log/httpd //《日志目录》
access_log:访问日志
errot_log: 错误日志
/var/run/httpd //《运行中的httpd进程的数据》 /var/www/error/ //错误页面html网页存放目录 站点文档目录
/var/www/html //DocuRoot目录,资源路径的根映射的位置
httpd配置文件
/etc/httpd/conf/httpd.conf //首次配置需要备份文件:
# cp -v /etc/httpd/conf/httpd.conf{,.bak}
配置文件的组成:
# fgrep 'Section' /etc/httpd/conf/httpd.conf
### Section : Global Environment //全局环境:定义httpd通用功能特性
### Section : 'Main' server configuration //主配置段:一个服务器提供单个站点
### Section : Virtual Hosts //虚拟主机:一个服务器提供多个站点
注: 2和3不能同时使用
配置格式:directive value
directive :不区分字符大小写
value:为路径时,取决于文件系统
三、HTTPD配置及应用
3.1、修改监听的IP和Port
Listen [IP:] PORT :
注:Listen 端口 ----- 省略IP 表示监听于所有网卡的IP
Listen指令,可以使用多次,用于监听不同地址的不同端口之上
e.g
Listen 192.168.1.105:8080 //监听在改IP的8080端口之上,能与此IP通信的主机才能访问此进程
Listen 80 //监听在所有接口的IP之上
注:修改端口后一定要重启, service httpd reload
3.2、持久连接
a)Persistent Connection :连接建立,每个资源获取完成后,不会断开连接,而是继续等待其它的请求完成
一个pv(自引用多个链接指向)多个资源,每个资源都需要一个请求
非持久连接:请求pv时,每个资源请求时,都需要建立tcp连接。<1.0默认>
持久连接:请求pv时,首个资源需要建立tcp连接,不断开情况下,继续完成后续请求
b)如何断开?
- 限制:到达一定时间[def:75s]后,tcp连接自动断开。httpd-2.4支持毫秒级别
- 数量限制:资源获取数量[def:100个]到达一定值时,tcp连接自动断开
c)副作用:并发访问量过大场景,时间或数量限制过大时,可能会导致后续的请求被[拒绝服务],可以关闭或调整时间或数量限制
折中:使用较短的持久连接时间
e)<默认配置:关闭持久连接功能
f)测试连接的关闭,显示结果
非持久连接测试结果显示:
持久连接测试结果显示:
3.3 、MPM 多路处理模块---并发响应模块
注: httpd-2.2 不支持同时编译多个模块,所以只能编译时确定一个;rpm安装的包提供三个二进制程序文件,分别用于实现对不同MPM机制的支持
确认方法: ps aux | grep httpd 查看相应文件
默认为/usr/sbin/httpd ,其使用prefork
1)查看当前使用的模块
2)查看装载的模块
3)更换MPM模块----/etc/sysconfig/httpd
更改为worker
# awk '$1 != "#" && $0 !~ /^[[:space:]]*$/{print}' /etc/sysconfig/httpd
#HTTPD=/usr/sbin/httpd.worker
HTTPD=/usr/sbin/httpd.worker
#OPTIONS=
#HTTPD_LANG=C
#PIDFILE=/var/run/httpd/httpd.pid # service httpd restart
# ps axu | fgrep httpd
root 0.0 1.4 ? Ss : : /usr/sbin/httpd.worker
apache 0.0 1.2 ? Sl : : /usr/sbin/httpd.worker 更改为event
# awk '$1 != "#" && $0 !~ /^[[:space:]]*$/{print}' /etc/sysconfig/httpd
#HTTPD=/usr/sbin/httpd.worker
HTTPD=/usr/sbin/httpd.event
#OPTIONS=
#HTTPD_LANG=C
#PIDFILE=/var/run/httpd/httpd.pid # service httpd restart
# ps axu | fgrep httpd
root 0.6 1.4 ? Ss : : /usr/sbin/httpd.event
apache 0.0 1.1 ? Sl : : /usr/sbin/httpd.event
apache 0.0 1.1 ? Sl : : /usr/sbin/httpd.event
apache 0.0 1.1 ? Sl : : /usr/sbin/httpd.event
MPM配置详解 /etc/httpd/conf/httpd.conf <网站的承载能力有一定影响>
# prefork MPM
# StartServers: 启动服务器后,预留的进程数
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: 服务器的生命周期内为MaxClients准备的最大值
# MaxClients: 最大并发数
# MaxRequestsPerChild: 每个进程最大响应请求数
<IfModule prefork.c>
StartServers 8 #服务启动时服务进程数
MinSpareServers 5 #最小空闲进程数
MaxSpareServers 20 #最大空闲进程数
ServerLimit 256 #服务器进程数量最大值
MaxClients 256 #最大并发请求数
MaxRequestsPerChild 4000 #一个服务器进程最多能够响应多少次的请求
</IfModule> # worker MPM
# StartServers: 启动服务预留进程数
# MaxClients: 最大并发数
# MinSpareThreads: 最小并发数
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: 每个进程内的线程数
# MaxRequestsPerChild: 每个线程最多响应请求数
<IfModule worker.c>
StartServers 4 #不包含主控进程
MaxClients 300
MinSpareThreads
MaxSpareThreads
ThreadsPerChild #每个进程所能够启动的线程数
MaxRequestsPerChild //0表示没有上限
</IfModule> 配置:影响网站的承载能力
PV承载量= \(每秒请求资源数 * 86400 \)/每个页面的资源数 //满载工作
考虑:全天满负荷运行?带宽使用大小200k?
300*86400/50=40W
带宽:每个PV消耗多少KB * PV承载量
PV :Page View 页面计数
UV:User View 用户数量计数(独立IP数量)
3.4、DSO
配置指令实现模块加载
使用语法:LoadModule <模块名> <模块路径>
模块路径可使用相对地址:相对于serverroot [/etc/httpd] (CentOS 6)
/etc/httpd/modules ----->/usr/lib64/httpd/modules
重载配置文件,实现启动或禁用模块
查看此模块已经被装载
# httpd -M | fgrep deflate_module
deflate_module (shared) 禁用 (配置文件注释)
# vim /etc/httpd/conf/httpd.conf
#LoadModule deflate_module modules/mod_deflate.so 重载
# service httpd reload 查看
# httpd -M | fgrep deflate_module
Syntax OK
3.5、定义"Main" server 的文档页面路径
注:先关掉selinux再测试-----setenforce 0
文档路径映射:
DocumentRoot 指向的路径为URL路径的起始位置:
DocumentRoot "/var/www/html"
/var/www/html/index.html -----> http://www.magedu.com/test/index.html
注:
#setenforing
#iptables -F
.2版本修改DocumentRoot,不需要授权
.4版本修改DocumentRoot 需要对文件系统目录授权
注意:
① 可以写多行,但是下边的会覆盖上边的,最后还是使用下边的,写到子配置文件一样,因为子配置文件Include conf.d/*.conf在这行设置的上边,会被这行设置覆盖。
② 若设置的主站点不存在,那么服务会启动失败!
3.6、站点访问控制
a)可基于两种类型的路径指明对那些资源进行访问控制
文件系统路径:
DocumentRoot "/var/www/html"
<Directory "">...</Directory>
<Files "">...</File>
e.g
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
URL路径:
<Location "">...</Location>
b)访问控制机制:
基于来源地址:Order , allow from 地址,deny from 地址
基于用户账号控制 :LogFormat :%u
c)基于用户访问控制的实现
安全域:需要用户认证后方能访问的路径
应该通过名称对其进行标识,并用于告知用户认证的原因
用户的账号和密码存储与何处
虚拟账号:仅用于访问某服务时用到的认证标识(跟操作系统里面的账号没有任何关系)
定义在/etc/httpd/conf/httpd.conf文件中
认证质询:
WWW-Authenticate :响应码为401 ,拒绝客户端请求,并说明要求客户提供账号和密码
认证:
Authorization :客户端用户填入账号和密码后再次发送请求报文;认证通过,则服务器发送响应的资源
认证类型:
basic :明文,放入https中进行【通用:浏览器大多数较老,不支持digest认证】//弹窗认证
digest :消息摘要 发送账号及密码对应的md5码至服务器,服务器将md5码与存储的对应的md5码对比
表单认证-----登录淘宝时输入的账号密码类型
密码存储位置:文件、数据库、ldap、nis、认证系统
- ) 基于basic认证实现(了解)
- 定义安全域
<Directory "">
Options None #访问目录中的文件特性
AllowOverride None
AuthType Basic #认证类型
AuthName "STRING" #安全域
AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE" #密码储存位置
Require user <username1> <username2> ... #可登录的用户
# Require group GROUP1 GROUP2 ... #基于组来认证是需要此步骤
</Directory>
允许账号文件中的所有用户登录访问:
Require valid-user
- 提供账号和密码存储(文本文件)
使用htpasswd命令进行管理
htpasswd [options] passwordfile username
- -c: 自动创建passwordfile,因此,仅应该在添加第一个用户时使用;
- -m: md5加密用户密码;
- -s: sha1加密用户密码;
- -D: 删除指定用户
e.g
# echo "hello" > /www/htdocs/admin/index.html <Directory "/www/htdocs/admin">
Options None
AllowOverride None
AuthType Basic
AuthName "Administrator private"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
Require valid-user
</Directory> # httpd -t
# service httpd reload
# htpasswd -c -m /etc/httpd/conf.d/.htpasswd tom #第一次创建用户需-c
# htpasswd -m /etc/httpd/conf.d/.htpasswd obama
# htpasswd -m /etc/httpd/conf.d/.htpasswd obama
基于组进行认证实现
vim /etc/httpd/conf.d/.htgroup 创建组文件并建立组名
weblogic :tom obama
<Directory "/www/htdocs/admin">
Options None
AllowOverride None
AuthType Basic
AuthName "Administrator private"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
AuthGroupFile "/etc/httpd/conf.d/.htgroup"
Require group weblogic
</Directory>
要提供:用户账号文件和组文件;
组文件:每一行定义一个组
GRP_NAME:user1 user2 user3 ...
3.7、默认主页面
DirectoryIndex index.html index.html.var
自左向右,依次匹配给出目录下的文件,存在时,显示
3.8、 Directory 中“基于来源地址”实现控制”
<Directory "/var/www/html"> Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all </Directory>
a)Options 选项
所有可用特性:Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
常用选项:None, ALL
Indexes : 索引 ----- 允许索引 没有默认主页面时,显示欢迎界面【注:docroot与directory 修改路径要相同】
FollowSymLinks :索引的文件是symolic link 时,允许跟踪符合链接文件
SymLinksifOwnerMatch :属主匹配-----符号链接文件的属主与原文件属主为同一个用户时,才允许跟踪
MultiViews :是否允许多视图 内容协商:启动后性能差
ExecCGI :是否允许CGI接口
b)AllowOverride ---是否允许覆盖选项 (了解)
选项值:FileInfo AuthConfig Limit None ALL
是否允许当前的配置去覆盖每一个网站页面下的一个隐藏文件(./htaccess )
./htaccess 每个目录访问控制:灵活 但对性能影响非常大不启用
c)基于来源地址的访问控制机制
Order :检查次序 写在后面的位默认法则
Order allow,deny (白名单)
Order deny ,allow(黑名单)
Allow from
deny from
后接 来源IP地址
NetAddr :表示172.16网络的方式
通配符:*.magedu.com
修改配置文件如下信息及其显示结果:
3.9 日志设置
官网地址:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html
http://httpd.apache.org/docs/2.2/logs.html
a)错误日志
日志为链接路径:/etc/httpd/logs ----->/var/log/httpd/
b)访问日志
CustomLog logs/access_log combined
日志文件路径<相对于ServerRoot> 日志格式名<logformat>
LogFormat格式
- combined 格式:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined #组合格式包含下面是三个格式
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
- combinedio
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
记录日志时候,会根据这一次用户的请求 把这些宏替换成对应的相关信息
e.g
192.168.1.105 - tom [18/Sep/2017:02:59:24 +0800] "GET /admin/ HTTP/1.1" 304 11 "-" "Mozilla/5.0
%h remote host 客户端IP地址
%l remote logname 登录的用户名,mod_ident模块为空时,用 “_” 表示
%u remote user 用户访问控制的basic,digst认证的用户名为空时,用 “_” 表示
%t Time the request was received 服务器收到请求的时间
%r First line of request 请求报文的首行
%>s Status 响应状态码
%b :响应报文的大小,单位是字节,不包括响应报文首部
%{Referer}i :请求报文当中“referer”首部的值;当前页面(资源)的访问入口,即从哪个页面的超链接跳转而来
“ _ ” 网站有名--直接从浏览器键入的,而不是从网页超链接跳转过去的
“不为空时,网站的广告有效”
%{User-Agent}i :请求报文当中“User-Agent”首部的值;即发出请求用到的应用程序
用户代理:发起请求的用到的进程<elink,ab,telnet,浏览器, curl>搜索引擎是爬虫爬出来的
10、路径别名
Alias /URL/ "/PATH/TO/SOMEDIR/"
注:URL后面存在“/” 时,路径后必须存在“/”
/URL/被匹配是从资源路径的根起始的
E.g
- DocumentRoot "/www/htdocs"
http://www.magedu.com/download/bash-4.4.2-3.el6.x84_64.rpm
--->/www/htdocs/download/bash-4.4.2-3.el6.x84_64.rpm
- Alias /bbs/ "/forum/htdocs/"
http://www.magedu.com/bbs/index.html ---> /forum/htdocs/index.html
例如:/www/forum 此处DocumentRoot为/www/forum
文件系统路径:/www/forum/bbs/upload/a.rar
则URL路径为:http://Server_IP/bbs/upload/a.rar # mkdir -p /www/forum
# echo "This is a new site location" > /www/forum/index.html
# vi /etc/httpd/conf/httpd.conf ###修改为 /www/forum
# service httpd reload
# curl http://192.168.21.10
This is a new site location
11、字符集设定 (了解)
AddDefaultCharset UTF-8
全球:UTF-8
国标:GBK,GB2312 ,GB18030 <中文>
源文件中的编码应该与服务器的编码相同
四、虚拟主机
虚拟主机的类型
- 基于IP :一个服务器有多个IP (实践中很少使用)
- 基于PORT :同一个IP,有多个PORT (实践中很少使用)
- 基于主机名hostname :同一个IP,有多个Host
基于名称完成不同虚拟主机的识别
封装时: HTTP首部、TCP首部、IP首部、帧首部..
Host: 浏览器键入的主机名 //"应用层首部"中附加,非通信子网
注:一般虚拟主机不可与中心主机混用,所以要使用虚拟主机,需先禁用中心主机
4.1、配置前提
httpd2.2版本 注释中心主机DocumentRoot ,并启动 ServerName :NameVirtualHost *:
httpd2.4版本 注释中心主机DocumentRoot
4.2、每个虚拟主机都有专用配置格式
实例1 基于IP地址
a) 在配置文件的最后写入一下字段:
<VirtualHost 192.168.1.105:>
ServerName web1.douma.com
DocumentRoot "/data/web1"
</VirtualHost> <VirtualHost 192.168.1.25:>
ServerName web2.douma.com
DocumentRoot "/data/web2"
</VirtualHost>
b) 然后创建对应位置:
mkdir -pv /data/web{1,2}
echo "web1 > /data/web1/index.html"
echo "web2 > /data/web2/index.html"
c) 添加一块网卡:
ip addr add 192.168.1.25/24 dev eth0
显示添加网卡:ip addr list
实例:基于port实现
a) 配置文件的最后写入一下字段:
<VirtualHost 192.168.1.105:8080>
ServerName web3.douma.com
DocumentRoot "/data/web3"
</VirtualHost>
<VirtualHost 192.168.1.105>
ServerName web4.douma.com
DocumentRoot "/data/web4"
</VirtualHost>
mkdir -pv /data/web{3,4}
echo "web3 > /data/web3/index.html"
echo "web4 > /data/web4/index.html"
b) 开启监听8080端口
Listen :8080
实例3、基于Hostname实现
a) 要开启NameVirtualHost: 项
修改配置文件
NameVirtualHost 192.168.1.105:80
注:选中部分要求一致
<VirtualHost 192.168.1.105:80>
ServerName web3.douma.com
DocumentRoot "/data/web3"
</VirtualHost>
<VirtualHost 192.168.1.105:80>
ServerName web4.douma.com
DocumentRoot "/data/web4"
</VirtualHost>
c) 编辑/etc/hosts文件 添加如下内容
192.168.1.105web3.douma.com
192.168.1.105web4.douma.com d)测试 curl http://
web3.douma.com
内置的status页面
web的子功能
访问结果显示如下:
开启扩展信息:
再互联网上访问上述信息:需基于账号实现访问控制
CentOS 7
默认运行级别
[root@localhost ~]# systemctl get-default
multi-user.target
修改运行级别
[root@localhost ~]# systemctl set-default
https://blog.51cto.com/sonlich/1968229
https://blog.51cto.com/11010461/2109162
https://www.cnblogs.com/dannylinux/articles/7999156.html
https://www.aliyun.com/1111/2019/group-buying-share?ptCode=BD1104468FD85A9BBC32DA64D3419891647C88CF896EF535&userCode=sllkyfo6&share_source=copy_link
3、Web server 之httpd2.2 配置说明的更多相关文章
- jexus asp.net Linux Web Server
Jexus简介 Jexus web server for linux 是运行在Linux上的Web服务器.其安装和部署及其简单,直接支持Asp.net . 下载Jexus wget http://li ...
- yum安装Apache Web Server后各个文件存放位置
yum安装Apache Web Server后各个文件存放位置 用yum安装apache软件: yum -y install httpd 安装完成后,来查看理解yum安装软件的过程和安装路径. ...
- Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]
1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...
- Flash: An Efficient and Portable Web Server
Introduction This paper presents the design of a new Web server architecture called the asymmetric m ...
- C#中自己动手创建一个Web Server(非Socket实现)
目录 介绍 Web Server在Web架构系统中的作用 Web Server与Web网站程序的交互 HTTPListener与Socket两种方式的差异 附带Demo源码概述 Demo效果截图 总结 ...
- 本机ip+端口不能访问web server,外部却可以访问
本机ip+端口不能访问web server,外部却可以访问! 这个奇葩的问题困扰了我好久,别人通过ip访问我的server一切正常,自己却访问不了,一度怀疑win10的问题,久寻无果! 最后关闭ads ...
- Difference between web server ,web container and application server
In Java: Web Container or Servlet Container or Servlet Engine : is used to manage the components lik ...
- vs默认VS Development Sever和用IIS Web Server的一点差别
关于VS Development Server(vs调试默认运行环境)和IIS Web Server 做运行服务器时,请求处理的一点区别. 将请求粗略分为两类:静态资源请求和动态资源请求. 静态资源请 ...
- [SDK2.2]Windows Azure Virtual Network (4) 创建Web Server 001并添加至Virtual Network
<Windows Azure Platform 系列文章目录> 在上一章内容中,笔者已经介绍了以下两个内容: 1.创建Virtual Network,并且设置了IP range 2.创建A ...
随机推荐
- C#方法(用法,参数)
方法:是一种用于实现可以由对象或类执行的计算或操作的成员,是一个已命名的语句集.方法就是把一些相关的语句组织到一起,用来执行一个任务的语句块.比如每个C#程序至少带一个main函数 1.格式:修饰符 ...
- 【转载】使用Jedis操作redis
Redis是一个开源的Key-Value数据缓存,和Memcached类似. Redis多种类型的value,包括string(字符串).list(链表).set(集合).zset(sorted se ...
- SVM支持向量机实例
波士顿房价回归分析 1.导入波士顿房价数据集 ############################# svm实例--波士顿房价回归分析 ############################## ...
- J.U.C之读写锁:ReentrantReadWriteLock
此篇博客所有源码均来自JDK 1.8 重入锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少.然而读服 ...
- Git撤回已经推送(push)至远程仓库提交(commit)的版本
背景 所以,经常会遇到已经提交远程仓库,但是又不是我想要的版本,要撤下来. 回退版本一般使用git reset,又分为: # 不删除工作空间改动代码,撤销commit,不撤销git add . git ...
- js中0.1+0.2 与0.3的对比
Math.abs(0.1+0.2-0.3)<=Number.EPSILON
- MySQL常见问题集锦及注意事项
一.表设计上的坑 1.字段设计 1.1 字段类型设计 尽量使用整型表示字符串: `INET_ATON(str)`,address to number `INET_NTOA(number)`,numbe ...
- 使用pandoc制作幻灯片
示例Md % Habits % John Doe % March 22, 2005 # In the morning ## Getting up - Turn off alarm - Get out ...
- Elasticsearch7
elasticsearch 由来 点击进入 elasticsearch 基本概念 点击进入 elasticsearch 安装 点击进入 elasticsearch 增删改查 点击进入 elastics ...
- ORA-28547: connection to server failed, probable Oracle Net admin error
现象 C:\Users\Administrator>sqlplus scott/tiger@192.168.1.11:1521/orcl SQL*Plus: Release 11.2.0.4.0 ...