本文作者:admin

linux系统部署php

芯岁网络 2025-03-29 10:38 0 0条评论

一、linux系统部署php

深入探讨Linux系统部署PHP

在当今数字化时代,Linux系统作为一种稳定、安全且灵活的操作系统,被广泛应用于各行各业。而PHP作为一种强大的服务器端脚本语言,也在web开发中扮演着重要角色。本文将深入探讨如何在Linux系统上部署PHP,为开发人员提供一些有益的指导和建议。

为什么选择Linux系统部署PHP?

首先,让我们了解一下为什么选择在Linux系统上部署PHP。Linux系统具有开源、稳定、安全等诸多优点,能够为PHP应用提供良好的运行环境。此外,Linux系统对PHP的支持非常友好,可以充分发挥PHP在Linux系统上的优势和性能。

准备工作

在开始部署PHP之前,我们需要进行一些准备工作。首先,确保服务器上已安装适当版本的Linux系统,并具备root权限。其次,检查服务器的网络连接和硬件配置,确保能够满足PHP应用的运行需求。

安装PHP

接下来,我们需要安装PHP及相关组件。在Linux系统上,我们可以通过包管理器来安装PHP,例如在Ubuntu上可以使用apt-get命令,在CentOS上可以使用yum命令。确保安装的PHP版本与您的应用要求相匹配,并根据需要安装相应的扩展组件。

配置PHP

一旦安装完成,我们需要对PHP进行一些基本配置。通过编辑php.ini文件可以调整PHP的配置选项,例如设置内存限制、错误日志路径、时区等。确保所有配置项都按照应用的需要进行设定,以确保PHP应用能够正常运行。

部署PHP应用

现在,我们可以开始部署PHP应用了。将应用文件上传至服务器,并确保文件权限设置正确。根据应用类型和需求,可以选择不同的部署方式,例如通过Apache、Nginx等web服务器来运行PHP应用。配置虚拟主机、URL重写等功能,让PHP应用能够在服务器上正常访问。

性能优化

为了进一步提升PHP应用的性能,我们可以进行一些性能优化的工作。例如使用Opcode缓存、调整PHP-FPM配置、合理利用数据库缓存等方法,可以有效提升应用的响应速度,降低服务器负载。

安全设置

在部署PHP应用时,安全是至关重要的一环。通过设置防火墙、更新系统补丁、限制用户权限等措施,可以有效保护服务器和应用不受攻击。同时,定期备份数据、监控服务器运行状态也是确保系统安全的重要步骤。

故障排除

尽管我们尽力做好一切准备工作,但在部署PHP应用过程中仍然会遇到各种问题。故障排除是不可避免的一环,需要我们具备一定的技能和经验来快速定位并解决问题。利用日志、调试工具等方法,可以帮助我们有效地解决PHP应用中的故障。

总结

通过本文的介绍,我们对在Linux系统上部署PHP有了全面的了解。从准备工作、安装配置、部署应用、性能优化到安全设置和故障排除,我们为开发人员提供了一系列有益的指导和建议。希望本文能够帮助您顺利部署PHP应用,提升开发效率和应用性能。

二、linux部署sqlserver的优势?

优势就是sql就是基于非界面开发的,基于linux开发的数据库软件。

三、net core的webservice,可以部署在linux系统上吗?

应该不行,就算能在linux系统下运行,也没那必要,如果你真要用NET就重新装下WINDOWS系统,否则在linux下肯定不稳定,弄不好就出什么问题。  

四、linux系统不连接外网可以进行部署吗?

可以在局域网里部署一个yam源,这样可以部署。

五、为什么云服务器上部署linux系统?

在云服务器上部署Linux系统有以下几个主要原因:

1. 开源性:Linux是一个开源操作系统,具有广泛的用户基础和开发者社区支持。这意味着任何人都可以自由获取、使用和修改Linux系统,且大量的开源软件和工具可供选择。开源性使得Linux系统具有更高的灵活性和定制性,并可以根据特定需求进行配置和定制。

2. 稳定性和安全性:Linux系统以其稳定性和安全性而著称。它具有良好的稳定性,能够长时间运行而不需要频繁的重启。此外,Linux拥有强大的安全性功能和机制,例如权限管理、访问控制和安全补丁更新等。这使得它成为许多企业和组织选择的首选操作系统,尤其适用于托管敏感数据和关键业务应用程序的云服务器环境。

3. 可伸缩性和性能:Linux系统在云环境中具有优秀的可伸缩性和性能表现。它可以轻松适应各种规模和负载的云计算资源,并且能够高效管理和调度系统资源。此外,相对于其他操作系统,Linux在处理网络流量、并发连接和多线程操作方面通常表现出更好的性能。

4. 多样性和兼容性:Linux系统提供了广泛的发行版选项,如Ubuntu、CentOS、Debian等,以及多种桌面环境和服务器管理工具。这使得用户可以根据自己的偏好和需求选择合适的Linux发行版,并方便地使用各种软件和服务。此外,由于Linux的普及度和广泛支持,许多应用程序和技术都针对Linux进行开发和优化,使其具有良好的兼容性。

综上所述,云服务器上部署Linux系统可以提供灵活性、稳定性、安全性、可伸缩性、性能和兼容性等多个优势,适用于各种场景和需求,因此成为云计算环境中的一种流行选择。

六、Linux怎么使用ss命令查看系统的socket状态?

ss是SocketStatistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat/proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费生命,而用ss才是节省时间。天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。(但仍然比netstat要快。) 1.命令格式:   ss[参数]   ss[参数][过滤]   ??2.命令功能:   ss(SocketStatistics的缩写)命令可以用来获取socket统计信息,此命令输出的结果类似于netstat输出的内容,但它能显示更多更详细的TCP连接状态的信息,且比netstat更快速高效。它使用了TCP协议栈中tcp_diag(是一个用于分析统计的模块),能直接从获得第一手内核信息,这就使得ss命令快捷高效。在没有tcp_diag,ss也可以正常运行。   ? 3.命令参数:   -h,--help帮助信息   -V,--version程序版本信息   -n,--numeric不解析服务名称   -r,--resolve解析主机名   -a,--all显示所有套接字(sockets)   -l,--listening显示监听状态的套接字(sockets)   -o,--options显示计时器信息   -e,--extended显示详细的套接字(sockets)信息   -m,--memory显示套接字(socket)的内存使用情况   -p,--processes显示使用套接字(socket)的进程   -i,--info显示TCP内部信息   -s,--summary显示套接字(socket)使用概况   -4,--ipv4仅显示IPv4的套接字(sockets)   -6,--ipv6仅显示IPv6的套接字(sockets)   -0,--packet显示PACKET套接字(socket)   -t,--tcp仅显示TCP套接字(sockets)   -u,--udp仅显示UCP套接字(sockets)   -d,--dccp仅显示DCCP套接字(sockets)   -w,--raw仅显示RAW套接字(sockets)   -x,--unix仅显示Unix套接字(sockets)   -f,--family=FAMILY显示FAMILY类型的套接字(sockets),FAMILY可选,支持unix,inet,inet6,link,netlink   -A,--query=QUERY,--socket=QUERY   QUERY:={all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]   -D,--diag=FILE将原始TCP套接字(sockets)信息转储到文件   -F,--filter=FILE从文件中都去过滤器信息   FILTER:=[stateTCP-STATE][EXPRESSION]   4.使用实例:   实例1:显示TCP连接   命令:ss-t-a   输出:   代码如下:   [root@localhost~]#ss-t-a   StateRecv-QSend-QLocalAddress:PortPeerAddress:Port   LISTEN00127.0.0.1:smux*:*   LISTEN00*:3690*:*   LISTEN00*:ssh*:*   ESTAB00192.168.120.204:ssh10.2.0.68:49368   [root@localhost~]#   实例2:显示Sockets摘要   命令:ss-s   输出:?   代码如下:   [root@localhost~]#ss-s   Total:34(kernel48)   TCP:4(estab1,closed0,orphaned0,synrecv0,timewait0/0),ports3《/p》《p》TransportTotalIPIPv6   *48--   RAW000   UDP550   TCP440   INET990   FRAG000   [root@localhost~]#   说明:列出当前的established,closed,orphanedandwaitingTCPsockets   实例3:列出所有打开的网络连接端口   命令:ss-l   输出:   代码如下:   [root@localhost~]#ss-l   Recv-QSend-QLocalAddress:PortPeerAddress:Port   00127.0.0.1:smux*:*   00*:3690*:*   00*:ssh*:*   [root@localhost~]#   实例4:查看进程使用的socket   命令:ss-pl   输出:   代码如下:   [root@localhost~]#ss-pl   Recv-QSend-QLocalAddress:PortPeerAddress:Port   00127.0.0.1:smux*:*users:((“snmpd”,2716,8))   00*:3690*:*users:((“svnserve”,3590,3))   00*:ssh*:*users:((“sshd”,2735,3))   [root@localhost~]#   实例5:找出打开套接字/端口应用程序   命令:ss-lp|grep3306   输出:   代码如下:   [root@localhost~]#ss-lp|grep1935   00*:1935*:*users:((“fmsedge”,2913,18))   00127.0.0.1:19350*:*users:((“fmsedge”,2913,17))   [root@localhost~]#ss-lp|grep3306   00*:3306*:*users:((“mysqld”,2871,10))   [root@localhost~]#   实例6:显示所有UDPSockets   命令:ss-u-a   输出:   代码如下:   [root@localhost~]#ss-u-a   StateRecv-QSend-QLocalAddress:PortPeerAddress:Port   UNCONN00127.0.0.1:syslog*:*   UNCONN00*:snmp*:*   ESTAB00192.168.120.203:3964110.58.119.119:domain   [root@localhost~]#   实例7:显示所有状态为established的SMTP连接   命令:ss-ostateestablished‘(dport=:smtporsport=:smtp)’   输出:   代码如下:   [root@localhost~]#ss-ostateestablished‘(dport=:smtporsport=:smtp)’   Recv-QSend-QLocalAddress:PortPeerAddress:Port   [root@localhost~]#   实例8:显示所有状态为Established的HTTP连接   命令:ss-ostateestablished‘(dport=:httporsport=:http)’   输出:   代码如下:   [root@localhost~]#ss-ostateestablished‘(dport=:httporsport=:http)’   Recv-QSend-QLocalAddress:PortPeerAddress:Port   0075.126.153.214:2164192.168.10.42:http   [root@localhost~]#?   实例9:列举出处于FIN-WAIT-1状态的源端口为80或者443,目标网络为193.233.7/24所有tcp套接字   命令:ss-ostatefin-wait-1‘(sport=:httporsport=:https)’dst193.233.7/24   实例10:用TCP状态过滤Sockets:   命令:   代码如下:   ss-4stateFILTER-NAME-HERE   ss-6stateFILTER-NAME-HERE   输出:   代码如下:   [root@localhost~]#ss-4stateclosing   Recv-QSend-QLocalAddress:PortPeerAddress:Port   11109475.126.153.214:http192.168.10.42:4669   说明:   FILTER-NAME-HERE可以代表以下任何一个:   代码如下:   established   syn-sent   syn-recv   fin-wait-1   fin-wait-2   time-wait   closed   close-wait   last-ack   listen   closing   all:所有以上状态   connected:除了listenandclosed的所有状态   synchronized:所有已连接的状态除了syn-sent   bucket:显示状态为maintainedasminisockets,如:time-wait和syn-recv.   big:和bucket相反。   实例11:匹配远程地址和端口号   命令:   代码如下:   ssdstADDRESS_PATTERN   ssdst192.168.1.5   ssdst192.168.119.113:http   ssdst192.168.119.113:smtp   ssdst192.168.119.113:443   输出:   代码如下:   [root@localhost~]#ssdst192.168.119.113   StateRecv-QSend-QLocalAddress:PortPeerAddress:Port   ESTAB00192.168.119.103:16014192.168.119.113:20229   ESTAB00192.168.119.103:16014192.168.119.113:61056   ESTAB00192.168.119.103:16014192.168.119.113:61623   ESTAB00192.168.119.103:16014192.168.119.113:60924   ESTAB00192.168.119.103:16050192.168.119.113:43701   ESTAB00192.168.119.103:16073192.168.119.113:32930   ESTAB00192.168.119.103:16073192.168.119.113:49318   ESTAB00192.168.119.103:16014192.168.119.113:3844   [root@localhost~]#ssdst192.168.119.113:http   StateRecv-QSend-QLocalAddress:PortPeerAddress:Port   [root@localhost~]#ssdst192.168.119.113:3844   StateRecv-QSend-QLocalAddress:PortPeerAddress:Port   ESTAB00192.168.119.103:16014192.168.119.113:3844   [root@localhost~]#   实例12:匹配本地地址和端口号   命令:   代码如下:   sssrcADDRESS_PATTERN   sssrc192.168.119.103   sssrc192.168.119.103:http   sssrc192.168.119.103:80   sssrc192.168.119.103:smtp   sssrc192.168.119.103:25   输出:   代码如下:   [root@localhost~]#sssrc192.168.119.103:16021   StateRecv-QSend-QLocalAddress:PortPeerAddress:Port   ESTAB00192.168.119.103:16021192.168.119.201:63054   ESTAB00192.168.119.103:16021192.168.119.201:62894   ESTAB00192.168.119.103:16021192.168.119.201:63055   ESTAB00192.168.119.103:16021192.168.119.201:2274   ESTAB00192.168.119.103:16021192.168.119.201:44784   ESTAB00192.168.119.103:16021192.168.119.201:7233   ESTAB00192.168.119.103:16021192.168.119.103:58660   ESTAB00192.168.119.103:16021192.168.119.201:44822   ESTAB00192.168.119.103:1602110.2.1.206:56737   ESTAB00192.168.119.103:1602110.2.1.206:57487   ESTAB00192.168.119.103:1602110.2.1.206:56736   ESTAB00192.168.119.103:1602110.2.1.206:64652   ESTAB00192.168.119.103:1602110.2.1.206:56586   ESTAB00192.168.119.103:1602110.2.1.206:64653   ESTAB00192.168.119.103:1602110.2.1.206:56587   [root@localhost~]#   实例13:将本地或者远程端口和一个数比较   命令:   代码如下:   ssdportOPPORT   sssportOPPORT   输出:   代码如下:   [root@localhost~]#sssport=:http   [root@localhost~]#ssdport=:http   [root@localhost~]#ssdport\》:1024   [root@localhost~]#sssport\》:1024   [root@localhost~]#sssport\《:32000   [root@localhost~]#sssporteq:22   [root@localhost~]#ssdport!=:22   [root@localhost~]#ssstateconnectedsport=:http   [root@localhost~]#ss\(sport=:httporsport=:https\)   [root@localhost~]#ss-ostatefin-wait-1\(sport=:httporsport=:https\)dst192.168.1/24   说明:   ssdportOPPORT远程端口和一个数比较;sssportOPPORT本地端口和一个数比较。   OP可以代表以下任意一个:   《=orle:小于或等于端口号   》=orge:大于或等于端口号   ==oreq:等于端口号   !=orne:不等于端口号   《orgt:小于端口号   》orlt:大于端口号   实例14:ss和netstat效率对比   命令:   代码如下:   timenetstat-at   timess   输出:   代码如下:   [root@localhost~]#timess   real0m0.739s   user0m0.019s   sys0m0.013s   [root@localhost~]#   [root@localhost~]#timenetstat-at   real2m45.907s   user0m0.063s   sys0m0.067s   [root@localhost~]#   说明:   用time命令分别获取通过netstat和ss命令获取程序和概要占用资源所使用的时间。在服务器连接数比较多的时候,netstat的效率完全没法和ss比。

七、如何在Linux系统上部署高效的集群

Linux系统的集群部署简介

在当前的互联网时代,对于大数据处理和高性能计算等领域,集群部署已经成为一种常见的解决方案。Linux作为一种稳定且开放的操作系统,被广泛应用于各种集群部署中。

什么是集群?

集群是将多台计算机组合成一个整体,通过有效地分配任务和资源,提高计算效率和可靠性。在集群中,每台计算机被称为一个节点,它们通过网络互相通信和协作。

为什么选择Linux进行集群部署?

Linux系统具有开源、稳定、安全、灵活等特点,能够为集群提供强大的支持。同时,它还拥有丰富的工具和资源,能够满足不同需求的集群部署。

如何在Linux系统上部署集群?

在Linux系统上进行集群部署,通常需要考虑硬件设备、网络环境、软件框架等多个因素。首先,需要选择合适的硬件设备,包括计算节点、存储节点、网络交换机等。其次,需要合理设计集群的网络拓扑结构和通信方式。最后,选择适合自身需求的集群管理和调度软件,比如Hadoop、Kubernetes、Docker等。

集群部署中的关键问题

在实际的集群部署过程中,往往会面临诸如负载均衡、容错处理、安全管理等一系列关键问题。解决这些问题需要综合考虑硬件、网络和软件等多个方面,确保集群系统的稳定和高效运行。

总结

在Linux系统上部署集群,可以借助其稳定、灵活和丰富的资源优势,构建出高效可靠的集群系统。通过合理的规划和选择,可以充分发挥集群的计算和存储能力,满足不同领域的需求。

感谢您阅读本文,希望对您在Linux系统上部署集群时有所帮助。

八、如何在Linux系统中部署Web应用

引言

在当今互联网时代,Web应用已经成为各种系统中不可或缺的一部分。Linux作为广泛使用的操作系统之一,如何在其上部署Web应用成为了开发者和管理员关注的重点。本文将详细介绍在Linux系统中部署Web应用的步骤和注意事项,帮助读者了解如何进行这一关键任务。

选择合适的Web服务器

在部署Web应用之前,首先需要选择适合的Web服务器。常见的选择包括ApacheNginxLighttpd。在选择时需要考虑到Web应用的特点、流量预期、安全性等因素,并根据具体需求进行权衡选择。

安装运行环境

部署Web应用还需要考虑到所需的运行环境。对于不同的Web应用,可能需要安装不同的编程语言解释器数据库等。例如,对于Python应用可能需要安装Python解释器,对于PHP应用可能需要安装PHP运行环境等。

网络配置和安全设置

在部署Web应用时,网络配置和安全设置至关重要。需要合理配置防火墙规则端口监听访问控制等,以保证Web应用在网络中的安全运行。同时,也需要考虑到SSL证书的配置,以确保数据传输的安全性。

部署Web应用

一切准备就绪后,便可开始部署Web应用。这包括将Web应用文件部署至服务器指定目录、配置Web服务器以正确识别和响应该应用、启动相关服务等。值得注意的是,部署过程中需要对文件权限日志管理等方面进行细致的设置。

性能优化和监控

部署完成后,性能优化和监控是保证Web应用稳定运行的重要环节。通过负载均衡缓存设置日志分析等手段,可以提升Web应用的性能和稳定性。同时,建立有效的监控系统,及时发现和解决潜在问题,对于运维工作也至关重要。

结语

通过本文的介绍,相信读者已经对在Linux系统中部署Web应用有了更清晰的认识。无论是选择合适的Web服务器、安装运行环境,还是进行网络配置和安全设置,以及部署Web应用和之后的性能优化和监控,都是至关重要的步骤。希望本文能够帮助读者顺利部署其Web应用,并保证其稳定高效地运行。

感谢您阅读本文,希望能够为您在Linux系统中部署Web应用提供帮助。

九、如何在本地部署Linux运维系统

为什么选择本地部署Linux运维系统

Linux运维系统是现代企业必备的重要工具,它能够帮助企业提高服务器管理效率、降低运维成本,因此,很多企业都在使用这类系统。在实际使用过程中,有些企业更愿意选择在本地部署Linux运维系统,这是因为本地部署具有数据安全性高、定制化程度强等优势。

本地部署Linux运维系统的步骤

要在本地部署Linux运维系统,首先需要准备一台运行Linux操作系统的服务器。在选择运维系统之前,需要对企业的实际需求进行充分的调研和分析,确定自己所需的功能模块和定制化需求。

其次,需要在服务器上安装相应的运维系统软件,比如可以选择常见的开源运维系统如ZABBIX、Nagios等,也可以选择商业化的解决方案如SolarWinds、PRTG等。在安装过程中,需要根据官方文档进行操作,确保软件能够正确安装并运行。

接下来,需要进行系统配置和定制化设置,比如配置监控对象、制定告警策略、设置权限控制等。这些步骤需要根据实际需求进行详细地设置和调整,确保系统能够符合企业的实际运维需求。

最后,需要对系统进行测试和监控,确保系统能够稳定运行并达到预期效果。在测试过程中,需要模拟真实的运维场景,发现并解决可能存在的问题,确保系统能够在正式投入使用前得到充分的验证。

本地部署Linux运维系统的优势

相比于云端部署,本地部署Linux运维系统具有以下几个优势:

  • 数据安全性高: 本地部署可以更好地保护企业的敏感数据,避免数据泄露的风险。
  • 定制化程度高: 本地部署可以根据企业的实际需求进行定制化设置,满足不同企业的特定运维需求。
  • 网络环境要求低: 本地部署不依赖于稳定的互联网连接,能够适应网络环境较差的场景。
  • 成本可控: 本地部署相对于云端部署来说,运维成本更加可控,可以有效降低企业的运维支出。

结语

通过本地部署Linux运维系统,企业可以更好地保护数据安全,满足定制化需求,并且能够更加灵活地应对复杂多变的运维环境。在实际部署过程中,需要充分考虑企业实际需求,选择合适的运维系统,并且做好系统的配置和测试工作,以确保系统能够稳定运行并发挥最大的价值。

感谢您阅读本文,希望本文能够帮助您更加深入地了解本地部署Linux运维系统的重要性和实际操作步骤。

十、Linux系统批量部署的高效方法和最佳实践

在现代IT基础设施中,Linux系统无疑是最常见和最广泛使用的操作系统之一。无论是Web服务器、数据库服务器、云计算平台还是物联网设备,Linux系统都扮演着至关重要的角色。然而,随着IT环境的不断扩大和复杂化,批量部署Linux系统成为了运维工程师面临的一大挑战。

为什么需要批量部署Linux系统?

在以下几种情况下,批量部署Linux系统就显得尤为重要:

  • 新建数据中心或扩展现有基础设施时,需要快速部署大量服务器
  • 更新或升级大量Linux系统时,手动操作将耗费大量时间和人力
  • 实现自动化运维,减少人为操作失误,提高效率
  • 快速构建测试环境或开发环境,加快产品迭代周期

Linux系统批量部署的常用方法

目前,运维工程师可以选择多种工具和方法来实现Linux系统批量部署,包括但不限于:

  1. 映像克隆:使用工具如Clonezilla、FSArchiver等制作系统映像,然后将映像快速部署到多台机器上。这种方法简单高效,但缺乏灵活性。
  2. 自动化配置管理工具:利用Ansible、Puppet、Chef等配置管理工具,通过编写Playbook或Manifest文件来自动化部署过程。这种方法灵活性强,但需要一定的学习成本。
  3. 云计算平台:在AWS、Azure、阿里云等云平台上,可以使用自动化脚本或模板快速创建和部署大量云主机实例。
  4. 容器技术:使用Docker等容器技术,将应用程序及其依赖打包到一个可移植的容器镜像中,然后在任意Linux主机上快速部署和运行。

Linux系统批量部署的最佳实践

为了确保Linux系统批量部署的高效性和可靠性,建议遵循以下最佳实践:

  • 制定标准化的操作系统映像模板,包括所需软件、配置和安全设置
  • 编写自动化脚本或Playbook,实现无人值守的自动化部署流程
  • 建立版本控制系统,跟踪和管理所有部署相关的文件
  • 设置集中式日志系统,监控部署过程并快速发现和解决问题
  • 定期备份和测试部署脚本,确保其可靠性和可重复性
  • 培训运维团队,提高自动化部署的技能和经验

通过采用上述方法和最佳实践,运维团队可以极大地提高Linux系统批量部署的效率,降低人力和时间成本,从而为企业带来显著的收益。

感谢您阅读本文!希望这篇文章能够帮助您更好地理解Linux系统批量部署的重要性、常用方法和最佳实践,为您的运维工作提供参考和指导。如有任何疑问或需要进一步探讨,欢迎随时与我们联系。