失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 从零开始搭建一个完整的服务器包含监控 自动化部署 容器管理 内网穿透等

从零开始搭建一个完整的服务器包含监控 自动化部署 容器管理 内网穿透等

时间:2023-08-27 02:03:29

相关推荐

从零开始搭建一个完整的服务器包含监控 自动化部署 容器管理 内网穿透等

从零开始快速搭建服务器环境

需求分析操作系统选择网络配置防火墙与yum源配置docker安装与配置docker容器管理平台部署服务器运维面板安装与部署docker中安装mysql实现主从同步docker中安装mycat中间件实现读写分离portainer快速安装redisDocker中安装rabbitMQDocker中安装JenkinsDocker中安装ElasticSearch服务器内网穿透配置在服务器上开启web服务(Java)服务器配置监控Prometheus和Grafana可视化

需求分析

一个完善的服务器需要配置以下环境:

操作系统:选择合适的操作系统,如 Linux、Windows Server 等。

安全配置:包括网络安全、系统安全等,确保服务器的数据和系统安全。

数据库服务:提供数据库服务,并根据需要安装相应的数据库软件,如 MySQL、PostgreSQL 等。

Web 服务器:提供 Web 服务,可选择 Apache、Nginx 等 Web 服务器软件。

应用服务器:提供应用程序服务,如 Tomcat、Jboss、Weblogic 等。

编程语言环境:根据所需的开发语言环境配置相关开发工具和运行环境。

版本控制工具:如 Git、SVN 等版本控制工具。

日志管理工具:如 Log4j、Logback 等。

自动化部署工具:如 Jenkins、Travis CI 等自动化部署工具。

监控和统计工具:例如 Zabbix、Grafana 等,用于监控服务器的性能和状态。

容器化环境:如 Docker、Kubernetes 等。

可视化管理界面:如 cPanel、Plesk 等可视化管理界面,用于方便地管理服务器。

以上是一个完善的服务器需要配置的环境,可以根据具体的需求进行选择和配置,以满足不同的应用场景。

操作系统选择

我们选择Centos7 作为服务器的操作系统,在安装界面中选择基本的开发环境并配置好root用户和密码,网络设置为桥接模式,等待安装完成,进入命令行界面输入账号和密码。

网络配置

打开终端,并使用 root 用户登录。

使用命令 “ip addr” 查看所有网络接口的详细信息。

ip addr

在输出信息中找到当前正在使用的对外链接网络设备对应的行,查看该行的开头部分,示例如下:

em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

其中,“em1” 就是当前正在使用的网络设备名称。

检查当前网络状态,使用 ping 检查网络通信是否正常

ping

如果没有正常返回,则进行以下步骤:

编辑配置文件 /etc/sysconfig/network-scripts/ifcfg-em1,其中,把ifcfg-eth0改为你正在使用的网络设备名称,如ifcfg-ens33,或者ifcfg-eth0等;

可以通过使用 ll /etc/sysconfig/network-scripts/ 来查看文件夹内的具体信息,其中白体字便是你可以编辑的配置文件

输入命令 vi /etc/sysconfig/network-scripts/ifcfg-你的网络设备名称,例如:

vi /etc/sysconfig/network-scripts/ifcfg-em1

进入vi界面后,输入I后进入编辑界面(大小写均可),将 BOOTPROTO 字段的值修改为dhcp,示例配置如下:

TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=dhcpDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=em1UUID=cb16560d-41c1-48f1-8af6-caae019d701eDEVICE=em1ONBOOT=yes

一般来说只需要更改BOOTPROTO的值即可,其余值不需要进行更改,否则可能会出现问题修改完成后输入ESC并输入后,进入命令行,输入wq保存并关闭vi界面,如果不想保存可以输入q!不保存强制退出vi界面。而后输入 systemctl restart network 重启网络服务

systemctl restart network

校验网络是否配置成功,再次输入ping 即可如果依然无法联网,那么可能是配置文件没有完全修改成功,检验NAME,DEVICE是否为你与外界联通的网卡设备名称,以下为配置文件各字段的具体含义:

TYPE:网络接口类型,通常为 Ethernet。PROXY_METHOD:代理方法,通常为 none。BROWSER_ONLY:是否仅限浏览器访问,通常为 no。BOOTPROTO:IP 地址获取方式,通常可以选择 dhcp 或 static 两种方式,默认值为 dhcp。DEFROUTE:是否将该网卡设为默认路由,通常为 yes。IPV4_FAILURE_FATAL:IPv4 是否失败致命,通常为 no。IPV6INIT:是否启用 IPv6,通常为 yes。IPV6_AUTOCONF:IPv6 是否自动配置,通常为 yes。IPV6_DEFROUTE:IPv6 是否设为默认路由,通常为 yes。IPV6_FAILURE_FATAL:IPv6 是否失败致命,通常为 no。IPV6_ADDR_GEN_MODE:IPv6 地址生成模式,通常为 stable-privacy。NAME:网卡名称,与 DEVICE 字段一致,不可重复。UUID:网卡的唯一标识符,根据各个系统的情况而定。DEVICE:网卡设备名称,与 NAME 字段一致,不可重复。ONBOOT:是否开机自动启用,通常为 yes。

以上各字段的配置可能会因具体情况而有所不同,但大部分情况下都需要设置 BOOTPROTO、DEFROUTE、NAME、DEVICE 和 ONBOOT 等字段,以保证网络连接的正确性和稳定性。如果你需要根据实际情况进行调整,请参考上述各字段的含义,并结合具体场景进行修改。

防火墙与yum源配置

为了方便后续操作,首先需要停止系统的防火墙服务

停止 firewalld 服务:使用如下命令停止 firewalld 服务

systemctl stop firewalld.service

查看 firewalld 状态:使用如下命令查看 firewalld 状态

systemctl status firewalld.service

如果显示active为inactive状态,即成功关闭了防火墙服务,如图所示:

而后更换yum源为阿里源,由于网络环境和软件版本等因素的影响,使用阿里云源可能会导致某些软件包不能正常升级或安装,因此我们在使用前先备份好相关数据。

备份原有的 CentOS-Base.repo 文件:使用如下命令备份即将被替换的原文件,以便需要时可以进行恢复。

sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

下载阿里云的 CentOS-Base.repo 文件:使用如下命令下载阿里云的 CentOS-Base.repo 文件,该文件中包含了阿里云的 yum 源地址和相关配置信息。

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo /repo/Centos-7.repo

清除缓存并重新生成索引:使用如下命令清除 yum 缓存,并重新生成 yum 索引,以便能够快速地获取最新的软件包列表。

sudo yum clean allsudo yum makecache

完成以上步骤后,你已经成功将 CentOS 7 的 yum 源更换为阿里云的源,可以使用如下命令来测试是否生效:

sudo yum update

如果一切正常,CentOS 7 将会从阿里云的源中更新软件包。

yum配置完成后,可以下载安装其余工具

例如:

yum install -y wget #安装wget 用来从网络上下载文件 方便快捷yum install -y vim #安装vim 高级文本编辑器 配置文件时经常使用yum install -y net-tools #使用ifconfig时需要 用于配置和查看网络接口的命令行工具yum install -y curl #curl可以从远程服务器获取或上传文件、发起 HTTP 请求、测试 API 等

docker安装与配置

使用 Docker 可以轻松地创建、部署和运行应用程序,学习和使用 Docker 已经成为了现代云原生开发不可或缺的技能之一。

在 Linux 操作系统上安装 Docker 非常简单,可以按照以下步骤进行:

安装依赖:在执行 Docker 安装之前,需要先安装一些必要的依赖项,使用如下命令进行安装:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加 Docker 软件源:执行以下命令添加 Docker 软件源:

sudo yum-config-manager --add-repo /linux/centos/docker-ce.repo

安装 Docker:使用下面的命令安装 Docker:

sudo yum install docker-ce docker-ce-cli containerd.io

启动 Docker 服务:执行以下命令启动 Docker 服务:

sudo systemctl start docker

验证 Docker 安装:使用如下命令验证 Docker 是否已经成功安装:

sudo docker run hello-world

安装完成后,我们可以使用 Docker 命令来启动、停止容器等管理操作。

使用如下命令查看docker所有容器

sudo docker ps -a

可以看到容器ID,使用的镜像文件,创建时的文件映射命令,创建时间,运行状态,容器端口等信息

docker容器管理平台部署

Portainer 是一款强大、灵活、易用的 Docker 管理平台,它提供了一个直观、用户友好的 Web 界面,方便用户对容器、镜像、网络、卷等进行管理。

Portainer的安装特别简单,只需要一条命令即可解决:

docker run -d --restart=always --name=portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data 6053537/portainer-ce

执行后输入docker ps 看到6053537/portainer-ce 则表示安装完成

docker ps

而后进入Portainer 的web界面,输入服务器IP地址:9000 即可进入管理界面

使用ip addr 或者 ifconfig命令找到对外链接的网络设备名称,其中的inet即为服务器的ip地址。如何找到对外链接的网络设备已经在前文中有过讲解,这里不再讲解。

如果是虚拟机或者与服务器网络在一个局域网中的,可以使用服务器IP地址:9000 进入Portainer 的web界面,而如果不在一个局域网中,则需要使用服务器的公网IP,没有公网则需要将服务器进行内网穿透,这一部分在后续讲解。

进入web界面后你需要设置账号和密码,从而进入管理界面,而后按照以下步骤进行操作:

点击local选择容器环境

而后可以看到以下界面,点击Containers进入容器管理界面:

在容器管理界面中我们可以对容器进行启动,终止,重启,删除,添加等操作

我们可以使用portainer快速搭建诸如mysql,redis,es,rabbitmq等服务

服务器运维面板安装与部署

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。

可以在这里查看他的官方文档。

1Panel 的安装部署也非常简单,直接执行该行命令即可

curl -sSL /1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh

而后可通过浏览器访问如下页面登录 1Panel:

http://目标服务器 IP 地址:目标端口默认为21840端口访问

进入页面注册账号密码后可以看到如下界面

点击应用商店能够快速部署一些应用,诸如mysql,wordpress,DataEase等,但是一键部署不等于什么都不需要做,部分应用的配置还是需要自行解决,且需要相关的知识储备,但如果不需要搭建复杂服务,可以直接使用。

docker中安装mysql实现主从同步

搭建的mysql版本:5.7版本

请严格按照以下步骤执行:

关闭selinux,在vim界面中将SELINUX=enforcing 改为 SELINUX=disabled

setenforce 0vim /etc/sysconfig/selinux

创建目录

mkdir -p /datavol/mysql-master/{mysql,conf}mkdir -p /datavol/mysql-slave/{mysql,conf}

编辑主库配置文件

vim /datavol/mysql-master/conf/f

示例配置文件如下

[client]port = 3306default-character-set = utf8mb4[mysql]port = 3306default-character-set = utf8mb4[mysqld]server-id = 1#必须唯一log_bin = mysql-bin #开启及设置二进制日志文件名称binlog_format = MIXEDsync_binlog = 1expire_logs_days =7 #二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。binlog-do-db = *#要同步的数据库binlog-ignore-db = mysql #不需要同步的数据库binlog_ignore_db = information_schemabinlog_ignore_db = performation_schemabinlog_ignore_db = syscharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ci

修改从库配置文件

vim /datavol/mysql-slave/conf/f

[client]port = 3306default-character-set = utf8mb4[mysql]port = 3306default-character-set = utf8mb4[mysqld]server-id = 110character-set-server = utf8mb4collation-server = utf8mb4_unicode_ci

而后启动容器mysql-master和mysql-slave

docker run -d -p 3307:3306 --name=mysql-master -v /datavol/mysql-master/conf:/etc/mysql/conf.d -v /datavol/mysql-master/mysql:/var/lib/mysql -w /var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7docker run -d -p 3308:3306 --name=mysql-slave -v /datavol/mysql-slave/conf:/etc/mysql/conf.d -v /datavol/mysql-slave/mysql:/var/lib/mysql -w /var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7

这两行命令指定了mysql在容器内的名称,映射文件信息,映射端口信息,以及mysql密码配置和版本。可以通过访问 服务器IP地址+3307 和 3308分别访问mysql-master和mysql-slave。

而后继续配置mysql的主从同步

首先进入mysql-master容器内部,执行以下语句:

docker exec -it mysql-master /bin/bashmysql -uroot -prootCREATE USER 'slave'@'%' IDENTIFIED BY '123456';GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

而后查看mysql主库信息

输入 show variables like ‘log_bin’; 查看log_bin是否开启

输入 show master status; 查看主库状态,并记住File和Position中的信息

之后输入两次 exit; 回到bash界面

mysql> show variables like 'log_bin';+---------------+-------+| Variable_name | Value |+---------------+-------+| log_bin | ON |+---------------+-------+1 row in set (0.00 sec)

mysql> show master status;+------------------+----------+--------------+--------------------------------------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+------------------+----------+--------------+--------------------------------------------------+-------------------+| mysql-bin.000003 |617 | * | mysql,information_schema,performation_schema,sys | |+------------------+----------+--------------+--------------------------------------------------+-------------------+1 row in set (0.00 sec)

接下来以同样的方式进入从库

docker exec -it mysql-slave /bin/bashmysql -uroot -prootstop slave;

配置从库的相关信息

CHANGE MASTER TO MASTER_HOST='172.17.0.4',MASTER_PORT=3306,MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=617;

其中MASTER_HOST 对应的IP地址改为mysql-master的容器IP地址,该IP地址能够在portainer中进行查看,MASTER_LOG_FILE改为之前记住的File 信息,MASTER_LOG_POS改为Position信息。

而后输入以下命令启动同步并查看状态:

start slave;show slave status \G

当看到以下两个均为Yes时则表示主从同步生效

Slave_IO_Running: YesSlave_SQL_Running: Yes

如果是No或者Connecting都不行,有可能是配置从库相关信息时出错,建议对此进行排查。

可以在主数据库中进行创建数据库添加数据等来进行测试,如果从数据库信息同步,则表示主从同步配置成功。

通过服务器IP+3307来连接主数据库,服务器IP+3308来连接从数据库。

注意,不可往从数据库添加任何数据,即从数据库只能读,主数据库可写可读,否则主从同步失效。

docker中安装mycat中间件实现读写分离

在Docker下安装Mycat(详细)该文章基础上进行演示。

#创建文件目录/usr/local/mycat#用于保存mycat的主要配置文件server.xml、schema.xml以及rule.xmlmkdir -p /usr/local/mycat

vim /usr/local/mycat/server.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mycat:server SYSTEM "server.dtd"><mycat:server xmlns:mycat="http://io.mycat/"><system><property name="nonePasswordLogin">0</property> <!-- 0为需要密码登陆、1为不需要密码登陆 ,默认为0,设置为1则需要指定默认账户--><property name="useHandshakeV10">1</property><property name="useSqlStat">0</property> <!-- 1为开启实时统计、0为关闭 --><property name="useGlobleTableCheck">0</property> <!-- 1为开启全加班一致性检测、0为关闭 --><property name="sequnceHandlerType">2</property><property name="subqueryRelationshipCheck">false</property><property name="handleDistributedTransactions">0</property><property name="useOffHeapForMerge">1</property><property name="memoryPageSize">64k</property><property name="spillsFileBufferSize">1k</property><property name="useStreamOutput">0</property><property name="systemReserveMemorySize">384m</property><property name="useZKSwitch">false</property><property name="strictTxIsolation">false</property><property name="useZKSwitch">true</property></system><user name="mycat" ><property name="password">root</property><!--可以将mycat当成一个整体的数据库,逻辑数据库名--><property name="schemas">test_db</property></user><!--只读用户--><user name="mycat_readonly"><property name="password">user</property><property name="schemas">test_db</property><property name="readOnly">true</property></user></mycat:server>

vim /usr/local/mycat/schema.xml

<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/"><!-- name =test_db :表示mycat的逻辑数据库名称,是<user name="mycat" ><property name="password">root</property><property name="schemas">test_db</property></user>当schema节点没有子节点table的时候,一定要有dataNode属性存在(指向mysql真实数据库),--><!--逻辑数据库--><schema name="test_db" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema><!--指定master的数据库bmp--><dataNode name="dn1" dataHost="masterhost" database="test_db"/><!-- <dataNode name="dn2" dataHost="bmphost" database="myitem1001"/> --><!--指定mastet的ip --><dataHost name="masterhost" maxCon="1000" minCon="10" balance="1"writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100"><!--表示mysql的心跳状态,查询mysql数据库有没有在运行--><heartbeat>select user()</heartbeat><!-- master负责写 --><writeHost host="hostM1" url="172.17.0.4:3306" user="root" password="root"><!-- 这里url改为主库的docker内部IP地址 --><!--slave负责读--><readHost host="hostS1" url="172.17.0.6:3306" user="root" password="root"></readHost><!-- 这里url改为从库的docker内部IP地址 --></writeHost></dataHost></mycat:schema>

vim /usr/local/mycat/rule.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mycat:rule SYSTEM "rule.dtd"><mycat:rule xmlns:mycat="http://io.mycat/"><tableRule name="userrule"><rule><columns>id</columns><algorithm>func1</algorithm></rule></tableRule><tableRule name="categoryrule"><rule><columns>id</columns><algorithm>jump-consistent-hash</algorithm></rule></tableRule><function name="murmur" class="io.mycat.route.function.PartitionByMurmurHash"><property name="seed">0</property><!-- 默认是0 --><property name="count">2</property><!-- 要分片的数据库节点数量,必须指定,否则没法分片 --><property name="virtualBucketTimes">160</property><!-- 一个实际的数据库节点被映射为这么多虚拟节点,默认是160倍,也就是虚拟节点数是物理节点数的160倍 --><!-- <property name="weightMapFile">weightMapFile</property> 节点的权重,没有指定权重的节点默认是1。以properties文件的格式填写,以从0开始到count-1的整数值也就是节点索引为key,以节点权重值为值。所有权重值必须是正整数,否则以1代替 --><!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property> 用于测试时观察各物理节点与虚拟节点的分布情况,如果指定了这个属性,会把虚拟节点的murmur hash值与物理节点的映射按行输出到这个文件,没有默认值,如果不指定,就不会输出任何东西 --></function><function name="crc32slot" class="io.mycat.route.function.PartitionByCRC32PreSlot"><property name="count">2</property><!-- 要分片的数据库节点数量,必须指定,否则没法分片 --></function><function name="hash-int" class="io.mycat.route.function.PartitionByFileMap"><property name="mapFile">partition-hash-int.txt</property></function><function name="rang-long" class="io.mycat.route.function.AutoPartitionByLong"><property name="mapFile">autopartition-long.txt</property></function><function name="mod-long" class="io.mycat.route.function.PartitionByMod"><!-- how many data nodes --><property name="count">4</property></function><function name="func1" class="io.mycat.route.function.PartitionByLong"><property name="partitionCount">8</property><property name="partitionLength">128</property></function><function name="latestMonth"class="io.mycat.route.function.LatestMonthPartion"><property name="splitOneDay">24</property></function><function name="partbymonth" class="io.mycat.route.function.PartitionByMonth"><property name="dateFormat">yyyy-MM-dd</property><property name="sBeginDate">-01-01</property></function><function name="rang-mod" class="io.mycat.route.function.PartitionByRangeMod"><property name="mapFile">partition-range-mod.txt</property></function><function name="jump-consistent-hash" class="io.mycat.route.function.PartitionByJumpConsistentHash"><property name="totalBuckets">4</property></function></mycat:rule>

创建并允许mycat容器:

docker run --name mycat -v /usr/local/mycat/schema.xml:/usr/local/mycat/conf/schema.xml -v /usr/local/mycat/rule.xml:/usr/local/mycat/conf/rule.xml -v /usr/local/mycat/server.xml:/usr/local/mycat/conf/server.xml --privileged=true -p 8066:8066 -p 9066:9066 -d longhronshens/mycat-docker

而后通过服务器IP:8066即可通过mycat中间件访问mysql,读操作默认走从库,写操作默认走主库,实现读写分离。

portainer快速安装redis

进入容器管理页面

点击添加容器

而后进行以下操作:

点击部署容器,则部署完成

而后配置redis密码

在 Portainer 的 Web 界面中,选择刚刚创建的 Redis 容器,在容器详情页中点击"控制台" -> “连接”,选择 “sh” 终端,并执行以下命令:

redis-cli config set requirepass yourpassword

其中,yourpassword 是你设置的 Redis 密码,需要自行替换。

Docker中安装rabbitMQ

可以查看该友情链接:Docker中安装rabbitMQ

Docker中安装Jenkins

可以查看该友情链接:Docker+Jenkins自动化部署

Docker中安装ElasticSearch

可以查看该链接:docker安装elasticsearch(最详细版)

服务器内网穿透配置

有阿里云服务器的可以查看该友情链接:利用NPS进行内网穿透,端口映射

没有的话可以使用cpolar进行内网穿透:cpolar官网

具体配置可以查看该链接:将内网映射到公网【无需公网IP】

在服务器上开启web服务(Java)

将后端代码打包为jar包,并通过rz -be 命令上传到服务器上(可以利用XSHELL远程连接服务器)

rz -be

而后通过nohup java -jar jar包路径+你的jar包名称 > log.log 2>&1 &后台运行java服务

例如:

nohup java -jar ResumesDataService-0.0.1-SNAPSHOT.jar > log.log 2>&1 &

可以通过 jps 命令查看运行状态

[root@localhost ~]# jps24743 jar13080 Jps

24743 jar中第一个为进程pid,第二个为服务名称

要终止服务则运行kill -9 指定的pid即可

例如:

kill -9 24743

没有java环境的可以通过以下命令配置Java环境

yum install -y java-1.8.0-openjdk-devel

服务器配置监控Prometheus和Grafana可视化

搭集群可以查看该链接:centos安装prometheus+grafana

简单来讲即执行以下命令:

wget https://mirrors.tuna./github-release/prometheus/prometheus/LatestRelease/prometheus-2.37.8.linux-amd64.tar.gztar -zxvf prometheus-2.37.8.linux-amd64.tar.gznohup ./prometheus &wget https://mirrors.tuna./grafana/yum/rpm/Packages/grafana-9.5.1-1.x86_64.rpmyum -y install grafana-9.5.1-1.x86_64.rpmsudo systemctl daemon-reloadsudo systemctl start grafana-serversudo systemctl status grafana-serversudo systemctl enable grafana-server.service

打开web 服务器IP:3000

账号密码默认为admin

选择数据源为prometheus

具体图片示例可看链接

Prometheus监控mysql等服务,需要修改Prometheus的配置文件并安装相应的exporter,具体可以自行搜索,这里不展开讲解。

如果觉得《从零开始搭建一个完整的服务器包含监控 自动化部署 容器管理 内网穿透等》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。