锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Linux远程服务器环境搭建

时间:2022-07-05 12:00:00 智能压力变送器apt

Linux构建远程服务器环境

前段时间在建博客的时候,为远程服务器配置了很多环境,因为踩了一些坑,想记录下来。今天心情很好,特此录制。

Docker这是建设环境的唯一选择。本文采用传统的环境建设方式,将来可能会有一个Docker的版本。

Linux如何在远程服务器环境中购买云服务器?一些非常重要的事情Linux命令:查询服务占用的端口号:强大的systemctl:Mysql安装服务器:MQTT服务器搭建:1.MQTT协议实现方式2.MQTT客户端3.MQTT服务器4.MQTT订阅、主题、会话5.MQTT协议数据包结构mosquitto简介1. apt-get命令安装2. 修改配置文件3. 启动4. 其他处理Frp如何安装服务器施工:客户端施工:配置启动文件:客户端部署模板:配置代理访问:点对点传输:Tomcat服务器安装:服务器安装:我的世界服务器安装:如何使用:

Mysql远程环境 MQTT 物联网服务器环境Frp内网穿透 java环境 python环境 Tomcat 服务器配置Ftp服务器搭建

如何购买云服务器?

云服务器是通过云部署的远程主机ssh该协议可以在当地使用云服务器。ssh协议属于TCP/IP该协议是一种安全的通信协议,用于远程登录。它位于系统结构中的应用层,实际上是使用Tcp协议通信。常见的远程登录有telnet和ssh两种,但ssh协议非常安全,因为在通信过程中会加密需要通信的信息,实际传输的是密文,非常安全,所以常用于远程控制服务器。

拥有远程服务器是一件很酷的事情可以做很多事情,比如搭建一台MQTT服务器,然后可以使用ESP8266或ESP32等芯片可以轻松实现物联网应用。搭建一台Frp服务,很容易实现内网穿透,解决很多没有公网的小伙伴ip的烦恼。搭建一台Mysql服务器,远程存储数据。配置Tomcat服务器,建立个人网站或博客,或建立一个我的世界服务器等等…

现在互联网上有很多服务器供应商,如阿里巴巴云、腾讯云等。每个平台的新用户或双11都有很大的折扣。去年,我在双11上花了60多元买了一台一年期的服务器。购买服务器时,主要是看三个指标:**1.性能指标:**例如1核2G或2核4G,主要体现云服务器的性能。**2.带宽:**带宽也是一个非常重要的指标。带宽除以8是实际最大的网络速度。对于网站、游戏服务器和其他并发应用程序,需要选择合适的带宽。3.是否是海外服务器?:对于海外服务器,在建立网站时不需要备案,如何在中国,必须按照相关法律法规的要求备案。ps:网站备案程序很麻烦,建议早点准备。前段时间我备案了我的域名。经过一次操作,我等了半个月,其中艰辛不够外人道。。。如果是海外服务器,也可以搭梯子。frp就可以实现Socket代理和http代理,实现科学上网。但是海外服务器的价格一般比国内服务器贵很多。

ps:新用户购买服务器有很多优惠。强烈建议你去万能淘宝购买。前几天在上面买了一年的2核4G服务器只花了50多元。

有些很重要Linux命令:

这里有一些非常常用和实用的介绍linux命令:不重复基本文件管理、权限管理、用户管理等基本知识。

查询服务占用的端口号:

1.查询服务流程PID:

ps -aux | grep 服务名

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-4Dh5J61t-1636729425688)(https://i.loli.net/2021/10/17/pgLDkYKZwar8jVy.png)

该命名结合管道符可用于查询服务pid可用于检查服务是否在运行

2.通过PID查询服务打开的端口:

每个服务通常通过端口与外部或其他应用程序进行数据交流。

netstat -nap | grep [pid]

[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-1l5JUrgt-1636728972823)(https://i.loli.net/2021/10/17/Jto7bxE63IiZfmN.png)]

注意第三列表示本机ip与过程开放的端口号,第四列表示与本机连接的远程主机 ip和端口号,ipv6本机地址::表示。注:如果第二列是0.0.0.0:端口号表示可以由任意远程主机进行连接,如果是127.0.0.1:端口号只能由本机表示ip进行访问.我配置Mysql远程连接时遇到坑。

如果要结束某个过程,直接使用kill PID号码就够了。

强大的systemctl:

Linux中的systemctl主要用于管理主机中的一些过程。你可以通过它命令或shell脚本配置为服务。然后通过systemctl您可以使用工具来管理这些服务systemctl启动或停止某些服务,或将其配置为自启动。

systemctl它非常强大。您可以将一些命令、脚本或应用程序配置为服务,然后通过它进行管理。配置服务实际上是建立一个 服务名称.service把它放在文件里**/usr/lib/systemd/system目录下**。

[Unit]Description=服务描述After=服务依赖(这些服务后启动) [Service]Type=服务类型ExecStart=启动命令ExecStop=终止命令ExecReload=重启命令 [Install]WantedBy=服务安装设置

这是服务配置文件的示例,放在/usr/lib/systemd/system运行以下命令,使系统重新读取所有服务文件。

systemctl daemon-reload

]

]

查看上述命令/查看上述命令/usr/lib/systemd/system目录下的Frp可以发现,服务端的配置文件仍在运行/usr/local/frp/frps指定配置文件的可执行程序-c /usr/local/frp/frps.ini来运行服务的。

systemctl enable 服务名 # 启动启动自启动systemctl disable 服务名 # 禁止启动自启动systemctl status tomcat.service #(tomcat服务细节)systemctl start   服务名  #启动某服务systemctl stop   服务名   #停止某服务systemctl restart   服务名    #重启某服务systemctl list-units --type=service  #显示所有已启动的服务systemctl list-unit-files    #检查自启动服务

这里只是大讲以下几点systemctl用途。想了解更多的朋友可以自己学习。

Mysql服务器搭建

MySQL是一个关系数据库管理系统,由瑞典[MySQL AB](https://baike.baidu.com/item/MySQL AB 公司开发,属于 Oracle 产品。MySQL 在 WEB 在应用方面,MySQL是最好的 RDBMS (Relational Database Management System, 应用软件之一。

本文推荐从 Ubuntu 安装在仓库上MySQL。非常简单,

安装过程:

1.更新软件源

sudo apt update

2.安装 MySQL 5.7

sudo apt install mysql-server -y

3.配置mysql:

刚安装的 MySQL,您应操作它提供的安全更新命令。

sudo mysql_secure_installation

这样做首先会询问你是否想使用 “ 密码有效强度(validate password component)”。如果你想使用它,你将必须选择一个最小密码强度(0 – 低,1 – 中,2 – 高)。你将无法输入任何不遵守所选规则的密码。如果你没有使用强密码的习惯(本应该使用),这可能会配上用场。如果你认为它可能有帮助,那你就键入 y或者 Y,按下回车键,然后为你的密码选择一个强度等级和输入一个你想使用的密码。如果成功,你将继续强化过程;否则你将重新输入一个密码。

但是,如果你不想要此功能(我不会),只需按回车或任何其他键即可跳过使用它。

对于其他选项,我建议开启它们(对于每一步输入 y 或者 Y 和按下回车)。它们(依序)是:“ 移除匿名用户(remove anonymous user)”,“ 禁止 root 远程登录(disallow root login remotely)”,“ 移除测试数据库及其访问(remove test database and access to it)”。“ 重新载入权限表(reload privilege tables now)”。

4.重启mysql服务:

sudo systemctl restart mysql.service

5.使用mysql:

mysql -h host_name -u user -p
  • -h 用来指定一个主机名(如果这个服务被安装到其他机器上,那么会有用;如果没有,忽略它)
  • -u 指定登录的用户
  • -p 指定你想输入的密码.

要从服务端断开连接和离开 MySQL 提示符,输入:

QUIT

6.开启远程访问:

在默认情况下,MySQL 数据库仅监听本地连接。如果想让外网远程连接到数据库,我们需要修改配置文件,让 MySQL 可以监听远程固定 ip 或者监听所有远程 ip。

首先打开 mysqld.cnf 配置文件。

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

默认情况下, bind - address 的值为 127.0.0.1 ,所以只能监听本地连接。我们需要将这个值改为远程连接 ip 可访问,可使用通配符 ip 地址 *::0.0.0.0 ,当然也可以是单独的固定 ip,这样就仅允许指定 ip 连接,更加安全。在某些 MySQL 版本的配置文件中,没有 bind - address 这一行,这种情况下,在合适的位置加上就可以了。

然后重启 MySQL 服务,使刚刚编辑的 mysqld.cnf 文件生效。

MQTT服务器搭建:

MQTT(Message Queuing Telemetry Transport)消息队列遥测传输协议,是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。 . MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。 . MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

1.MQTT协议实现方式

实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。 . MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:

  • (1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);
  • (2)payload,可以理解为消息的内容,是指订阅者具体要使用的内容。
2.MQTT客户端

一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。客户端可以:

  • (1)发布其他客户端可能会订阅的信息;
  • (2)订阅其它客户端发布的消息;
  • (3)退订或删除应用程序的消息;
  • (4)断开与服务器连接。
3.MQTT服务器

MQTT服务器以称为"消息代理"(Broker),可以是一个应用程序或一台设备。它是位于消息发布者和订阅者之间,它可以:

  • (1)接受来自客户的网络连接;
  • (2)接受客户发布的应用信息;
  • (3)处理来自客户端的订阅和退订请求;
  • (4)向订阅的客户转发应用程序消息。
4.MQTT协议中的订阅、主题、会话
一、订阅(Subscription)

订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅。每一个会话中的每个订阅都有一个不同的主题筛选器。

二、会话(Session)

每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于>一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。

三、主题名(Topic Name)

连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。

四、主题筛选器(Topic Filter)

一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。

五、负载(Payload)

消息订阅者所具体接收的内容。

5.MQTT协议数据包结构

在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(payload)三部分构成。MQTT数据包结构如下:

  • (1)固定头(Fixed header)。存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识。
  • (2)可变头(Variable header)。存在于部分MQTT数据包中,数据包类型决定了可变头是否存在及其具体内容。
  • (3)消息体(Payload)。存在于部分MQTT数据包中,表示客户端收到的具体内容。

mosquitto简介

Mosquitto是用C语言实现MQTT协议的Broker。是一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。一个典型的应用案例就是 Andy Stanford-ClarkMosquitto(MQTT协议创始人之一)在家中实现的远程监控和自动化。

Mosquitto官网

Mosquitto最新的源码

1. apt-get命令安装
# 安装mosquittosudo apt-get install mosquitto# 安装客户端sudo apt-get install mosquitto-clients# 安装设备端sudo apt-get install mosquitto-dev123456
2. 修改配置文件

配置文件地址:/etc/mosquitto/mosquitto.conf 从上面的源码地址中下载源码,然后找到mosquitto.conf文件,将其替换掉/etc/mosquitto/mosquitto.conf文件。 你也可以根据需求,阅读手册自己写mosquitto.conf

3. 启动
mosquitto -c /etc/mosquitto/mosquitto.conf
4. 其他处理
  • 查看运行状态 systemctl status mosquitto
  • 开启/关闭systemctl start/stop mosquitto
  • 查看进程ps -aux | grep mosquitto
  • 查看1883端口占用netstat -apn | grep 1883
  • 关闭进程kill -9 pid

Frp服务器搭建

frp是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务, 支持tcp, udp, http, https等协议类型,并且web服务支持根据域名进行路由转发。 frp内网穿透主要用于没有公网IP的用户,实现远程桌面、远程控制路由器、 搭建的WEB、FTP、SMB服务器被外网访问、远程查看摄像头、调试一些远程的API

]

如何安装:

1.一个域名(www.test.xyz)

2.一台有公网IP的服务器(阿里云、腾讯云等都行)

3.一台内网主机

4.下载frp,选择适合的版本下载

解压下载的压缩包并进入相应的目录。

配置frps.ini服务器端配置文件:

[common]bind_port = 7000         # 服务端与客户端通信端口dashboard_port = 7500    # 后台管理端口dashboard_user = admin   # 后台登录用户名dashboard_pwd = adminvhost_http_port = 7002   # http穿透端口vhost_https_port = 7003  # https穿透端口max_pool_count = 50token = aaa123          # 身份验证令牌,frpc要与frps一致tcp_mux = truelog_file = /usr/local/frp/frps.log  # 日志相关log_level = infolog_max_days = 3authentication_timeout = 0  # 服务器与客户端时间相差15min会连接失败,0表示不验证subdomain_host = test.xyz   # 注册的域名privilege_mode = true

启动服务器:

frps -c frps.ini

启动成功后,可以访问后台管理界面(这里举例地址:ip地址:7500)

客户端搭建:

编辑frpc.ini配置文件。

[common]server_addr = 10.10.xxx.xxx  # 公网服务器ipserver_port = 7000          # 公网服务端通信端口token = aaa123              # 令牌,与公网服务端保持一致tcp_mux = truelog_file = /usr/local/frp/frpc.log  # 日志相关log_level = infolog_max_days = 3authentication_timeout = 0          # 服务器与客户端时间相差15min会连接失败,0表示不验证[ssh]                           # 添加ssh节点 type = tcplocal_ip = 192.168.xxx.xxxlocal_port = 22remote_port = 7001              # 指明由公网服务器的7001端口代理[web01]                         # 添加web节点type = httplocal_ip = 192.168.xxx.xxxlocal_port = 8080               # 本地8080端口可以通公网服务器7002端口访问,这里我的8080跑着tomcatsubdomain = web01               # 自定义子域名

客户端启动:

frpc -c frpc.ini

配置启动文件:

vim /etc/systemd/system/frps.service
[Unit]Description=frps daemonAfter=syslog.target  network.targetWants=network.target[Service]Type=simpleExecStart=/root/frp_0.17.0_linux_amd64/frps -c /root/frp_0.17.0_linux_amd64/frps.iniRestart= alwaysRestartSec=1min[Install]WantedBy=multi-user.target

注意ExecStart中要配置成自己的绝对路径,绝对路径可以通过pwd命令查询。

#启动frpssystemctl daemon-reloadsystemctl start frps#设置为开机启动systemctl enable frps

客户端部署模板:

[common]server_addr = your_server_ip               #VPS服务器IPserver_port = 7000                         #端口,与服务端bind_port一致  privilege_token = 123456                   #自定义值,需和服务端frps.ini的一致login_fail_exit = false                    #失败时自动重连admin_addr = 127.0.0.1                     #开启后可通过热加载方式进行 FRP 客户端配置变更  admin_port = 7400                          #可以通过 frpc reload 命令来动态加载配置文件,通过 frpc status -c ./frpc.ini 命令在 FRP 客户端查看当前代理状态信息。#通过 TCP 访问内网机器:#1.公网通过ssh访问内部服务器  [ssh]type = tcp                                 #连接协议 local_ip = 127.0.0.1                       #内网服务器ip,填你需要转发到的目的iplocal_port = 22                            #ssh默认端口remote_port = 8000                         #自定义的访问内部ssh端口号#2.公网通过ftp(如使用WinSCP)访问内部服务器  [ftp]type = tcplocal_ip = 127.0.0.1                            local_port = 21,10000-10010                #FTP默认端口remote_port = 2121,10000-10010             #自定义的远程访问端口  使用:打开WinSCP,填写主机IP(VPS的公网IP)、端口(自定义的远程访问端口2121 )、用户名密码(树莓派的用户名和密码) 。也可以通过访问  ftp://服务端IP:2121#3.公网通过VNC远程访问图像化内部服务器# 自定义一个配置名称,格式为“[range:名称]”,放在开头[range:VNC]type = tcplocal_ip = 127.0.0.1local_port = 5900                          #vnc默认端口remote_port = 5900                         #远程端口,ssh远程树莓派时使用的端口  #通过 UDP 访问内网机器[dns]type = udplocal_ip = 8.8.8.8local_port = 53remote_port = 8500#通过 FRP 客户端代理其它内网机器访问外网[http_proxy]type = tcpremote_port = 9000plugin = http_proxy#通过自定义域名访问部署于内网的 Web 服务[web]  type = http                                #访问协议local_ip = 127.0.0.1                       #内网服务器ip local_port = 80                            #内网web服务的端口号  custom_domains = www.dengxj.com,dengxj.com   #所绑定的公网服务器域名,一级、二级域名都可以,绑定多个域名时用英文“,”分开

配置代理访问:

​ 在只能通过代理访问外网的环境内,FRP 客户端支持通过 HTTP_PROXY 参数来配置代理和 FRP 服务端进行通信。要使用此功能可以通过设置系统环境变量 HTTP_PROXY 或者通过在 FRP 客户端 的配置文件中设置 http_proxy 参数来使用此功能。

[common]server_addr = your_server_ipserver_port = 7000protocol = tcphttp_proxy = http://user:pwd@your_server_ip:8080

点对点透传:

​ 在传输大量数据时如果都经过服务器中转的话,这样会对服务器端带宽压力比较大。

​ FRP 提供了一种新的代理类型 XTCP 来解决这个问题,XTCP 模式下可以在传输大量数据时让流量不经过服务器中转。

使用方式同 STCP 类似,需要在传输数据的两端都部署上 FRP 客户端上用于建立直接的连接。

首先在 FRP 服务端 配置上增加一个 UDP 端口用于支持该类型的客户端: bind_udp_port = 7001

[common]bind_addr = 0.0.0.0bind_port = 7000            # 客户端与服务端进行通信的端口,即frp服务端口,需与客户端server_port一致privilege_token = 123456    # 特权模式密钥,需与客户端frpc.ini一致vhost_http_port = 8080      # http服务端口,开启后服务端完成通过域名访问部署于内网的 Web 服务部署,这里将 HTTP 访问端口设为 8080vhost_https_port = 443      # https服务端口dashboard_port = 7500       # 控制台端口 通过 Dashboard 可以方便的查看 FRP 的状态以及代理统计信息展示 通过 http://[server_addr]:7500 访问 Dashboard 界面,用户名密码默认都为 admin。bind_udp_port = 70011234567891011

其次配置 FRP 客户端,和常规 TCP 转发不同的是这里不需要指定远程端口。 修改前:

[common]server_addr = your_server_ipserver_port = 7000[ssh]type = tcp                  #连接协议 local_ip = 127.0.0.1        #内网服务器iplocal_port = 22             #ssh默认端口remote_port = 8000          #自定义的访问内部ssh端口号123456789

修改后:

[common]server_addr = your_server_ipserver_port = 7000[p2p_ssh]type = xtcpsk = abcdefg                # 只有 sk 一致的用户才能访问到此服务local_ip = 127.0.0.1local_port = 22123456789

然后在要访问这个服务的机器上启动另外一个 FRP 客户端,配置如下:

[common]server_addr = your_server_ipserver_port = 7000[p2p_ssh_visitor]type = xtcprole = visitor              # XTCP 的访问者server_name = p2p_ssh       # 要访问的 XTCP 代理的名字sk = abcdefgbind_addr = 127.0.0.1       # 绑定本地端口用于访问 ssh 服务bind_port = 60061234567891011

这样就可以通过本机 6006 端口对内网机器 SSH 服务进行访问。

目前 XTCP 模式还处于开发的初级阶段,并不能穿透所有类型的 NAT 设备,所以穿透成功率较低。穿透失败时可以尝试 STCP 的方式。

Tomcat服务器安装:

Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器。

配置Tomcat

运行Tomcat需要JDK的支持【Tomcat会通过JAVA_HOME找到所需要的JDK】。

服务器安装:

Linux服务器安装Tomcat服务有一下几种方式:

  • 到官网下载压缩包进行解压使用。
  • 使用宝塔bt面板进行安装
  • 使用apt-get安装

这里介绍最后一种直接用apt-get的安装方式。

1.首先需要进行JAVA环境的配置和安装,在linux上可以下载openjdk来作为java环境。

OpenJDKJava最早由SUN公司(Sun Microsystems,发起于美国斯坦福大学,SUN是Stanford University Network的缩写)发明,2006年SUN公司将Java开源,此时的JDK即为OpenJDK。OpenJDK是Java SE的开源实现,他由SUN和Java社区提供支持,2009年Oracle收购了Sun公司,自此Java的维护方之一的SUN也变成了Oracle。大多数JDK都是在OpenJDK的基础上编写实现的,比如IBM J9,Azul Zulu,Azul Zing和Oracle JDK。几乎现有的所有JDK都派生自OpenJDK,他们之间不同的是许可证,OpenJDK根据许可证GPL v2发布。 Oracle JDK根据Oracle二进制代码许可协议获得许可。

更新系统安装包缓存,并且安装OpenJDK8

sudo apt-get updatesudo apt-get install openjdk-8-jdk

设置环境变量:

修改全局配置文件,作用于所有用户:

export JAVA_HOME=/usr/lib/jdk/jdk1.8export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=.:${JAVA_HOME}/bin:$PATH

之后通过一条命令就可以安装tomcat9

sudo apt-get install tomcat9

想要寻找tomcat的配置文件可以通过以下命令来寻找tomcat9的配置和安装目录:

whereis tomcat9

我的世界服务器安装:

这里安装的是forge1.17版本

服务端下载链接:链接:https://pan.baidu.com/s/1GE1M2kW_utK8JVULPcCsVA 提取码:t1ab

客户端下载链接:链接:https://pan.baidu.com/s/15VRI2LUxWqqYbDItAk_n8A 提取码:656b

如何使用:

服务端:

1.安装java环境,该版本需要配置jdk1.16版本的环境,还需要配置JAVA_HOME等环境变量。

2.将服务器端文件上传到服务器,同时解压就可以运行

服务器端运行run.sh就可以启动。

]

客户端:

客户端直接点击运行就可以启动,输入服务器的ip地址或域名就可以进入到服务器。

想要装Mod的话可以到网上找找教程,好像把mod放到.minecraft文件夹应该就可以了。

相关文章