当前位置:首页 » 编程软件 » springboot部署脚本

springboot部署脚本

发布时间: 2022-06-10 04:03:26

A. spring boot 环境怎么搭建

SpringBoot是Spring产品中一个新的子项目,致力于简便快捷地搭建基于Spring的独立可运行的应用。大多数的SpringBoot应用只需要非常少的Spring配置。你能够使用SpringBoot创建java应用并通过java-jar来运行或者创建传统的通过war来部署的应用。SpringBoot也提供了一个命令行工具来运行spring脚本。SpringBoot的目标是:快速开发基于Spring的应用开箱即用的微服务提供一些大型项目常用的非功能性特性,例如:嵌入式服务、安全、监控、健康检查、外部配置不用生成代码,没有xml配置

B. 如何部署Spring Boot应用

  1. 在Ubuntu中安装Java8

  2. 以下是一个简单的安装方法。

  3. $ sudo add-apt-repository ppa:webupd8team/java

  4. $ sudo apt-get update

  5. $ sudo apt-get install oracle-java8-installer

$ java -version

java version "1.8.0_60"

Java(TM) SE Runtime Environment (build 1.8.0_60-b27)

Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)


2. 本地使用Gradle发布Spring Boot应用

我这里使用Jetty9作为内置的服务器。

// ...

bootRun {

systemProperties = System.properties

}


configurations {

compile.exclude mole: "spring-boot-starter-tomcat"

}


dependencies {

// spring boot

compile "org.springframework.boot:spring-boot-starter-web:1.3.0.M5"

compile "org.springframework.boot:spring-boot-starter-jetty"

// ...

}


//...


在本地运行默认使用src/main/resources/application.yml作为配置文件,而在proction环境中我们系统它支持提供外部的配置文件application-proction.yml。

./gradlew bootRun # 开发环境下默认使用项目里的application.yml


# 在本地测试使用外部配置文件

./gradlew bootRun -Dspring.config.location=/path/to/application-proction.yml


# 发布

./gradlew build


# 运行

java -jar build/libs/SpringBlog-0.1.jar # 默认使用jar包里面的application.yml配置文件


# 使用外部配置文件

java -jar build/libs/SpringBlog-0.1.jar --spring.config.location=/path/to/application-proction.yml


3. 在Ubuntu服务器上部署Spring Boot应用

# 上传SpringBlog-0.1.jar到服务器

scp build/libs/SpringBlog-0.1.jar root@your_server_ip:/root/spring-blog/current


# 在服务器上配置生产环境的配置文件

scp application-proction.yml root@your_server_ip:/root/spring-blog/current


然后SSH登录服务器,修改配置文件application-proction.yml,试运行应用。

ssh root@your_server_ip


cd spring-blog/current


java -jar SpringBlog-0.1.jar --spring.config.location=application-proction.yml

# application-proction.yml


server:

address: raysmond.com # 使用域名或者IP,启动之后就可以这个域名或IP访问网站了

port: 80

contextPath:

spring:

profiles:

active: proction


thymeleaf:

cache: true


jade4j:

caching: true


dataSource:

driverClassName: com.mysql.jdbc.Driver

url: jdbc:mysql://127.0.0.1/spring_blog

username: root

password:


hibernate:

dialect: org.hibernate.dialect.MySQLDialect

hbm2ddl.auto: update

show_sql: false


redis:

host: localhost

port: 6379


4. 如何在Ubuntu中后台运行Spring Boot应用?

推荐使用nohup这个命令。

cd /root/spring-blog/current

nohup java -jar SpringBlog-0.1.jar --spring.config.location=application-proction.yml

> ../logs/proction.log 2> ../logs/proction.err &


在Ubuntu还可以/etc/init.d目录下新建一个脚本,把SpringBlog作为service来运行,这样不用每次都打这么繁琐的命令了。新建一个/etc/init.d/spring_blog文件,内容如下:

#!/bin/sh

SERVICE_NAME=spring_blog

HOME=/root/spring-blog

PATH_TO_JAR=$HOME/current/SpringBlog-0.1.jar

PID_PATH_NAME=/tmp/spring_blog.pid

LOG=$HOME/logs/proction.log

ERROR_LOG=$HOME/logs/proction.err

CONFIG=$HOME/application-proction.yml

case $1 in

start)

echo "Starting $SERVICE_NAME ..."

if [ ! -f $PID_PATH_NAME ]; then

cd $HOME/current

nohup java -jar $PATH_TO_JAR --spring.config.location=application-proction.yml > $LOG 2> $ERROR_LOG &

echo $! > $PID_PATH_NAME

echo "$SERVICE_NAME started ..."

else

echo "$SERVICE_NAME is already running ..."

fi

;;

stop)

if [ -f $PID_PATH_NAME ]; then

PID=$(cat $PID_PATH_NAME);

echo "$SERVICE_NAME stoping ..."

kill $PID;

echo "$SERVICE_NAME stopped ..."

rm $PID_PATH_NAME

else

echo "$SERVICE_NAME is not running ..."

fi

;;

restart)

if [ -f $PID_PATH_NAME ]; then

PID=$(cat $PID_PATH_NAME);

echo "$SERVICE_NAME stopping ...";

kill $PID;

echo "$SERVICE_NAME stopped ...";

rm $PID_PATH_NAME

echo "$SERVICE_NAME starting ..."

cd $HOME/current

nohup java -jar $PATH_TO_JAR --spring.config.location=application-proction.yml > $LOG 2> $ERROR_LOG &

echo $! > $PID_PATH_NAME

echo "$SERVICE_NAME started ..."

else

echo "$SERVICE_NAME is not running ..."

fi

;;

esac


现在就可以使用service的方式来运行网站了。

sudo service spring_blog start


sudo service spring_blog stop


sudo service spring_blog restart


5. 在本地自动化部署网站到远程服务器

在本地我用了一个shell脚本和一个python脚本来配合自动化部署。

deploy.sh 使用gradle的命令发布jar包,使用scp命令吧jar包上传到服务器上;

deploy.py 使用SSH远程登录服务器,并在服务器上执行部署命令。

# deploy.sh


#!/bin/bash


SERVER="your_server_ip"

JAR="build/libs/SpringBlog-0.1.jar"


echo "Building $JAR..."

./gradlew build


echo "Upload $JAR to server $SERVER..."

scp $JAR root@$SERVER:/root/spring-blog/


python deploy.py


deploy.py主要使用了一个paramiko库,用于SSH远程登录服务器,并执行命令。这个脚本会把服务器上/root/spring-blog/current/SpringBlog-0.1.jar备份到/root/spring-blog/releases中,并把新发布的jar包放到/root/spring-blog/current中,然后重启spring_blog服务。

全选复制放进笔记#!/usr/bin/python


import paramiko

import threading

import time


ip = 'your_server_ip'

user = 'root'

password = ''

jar = 'SpringBlog-0.1.jar'

home='/root/spring-blog'

current=home+"/current"

releases=home+"/releases"


def execute_cmds(ip, user, passwd, cmd):

try:

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(ip,22,user,passwd,timeout=5)

for m in cmd:

print m

stdin, stdout, stderr = ssh.exec_command(m)

# stdin.write("Y")

out = stdout.readlines()

for o in out:

print o,

print '%s OK '%(ip)

ssh.close()

except :

print '%s Error '%(ip)


if __name__=='__main__':

print 'Start deploying %s to server %s'%(jar, ip)


now = time.strftime("%Y%m%d%H%M%S")

cmd = [

'echo Stop spring_blog service... && service spring_blog stop',

'echo Flush all redis cache data... && redis-cli -r 1 flushall',

'echo Stop redis server... && service redis_6379 stop',

'echo Use new jar... ' +

' && mv ' + current + '/' + jar + ' ' + releases + '/' + now + '_' + jar ,

'mv ' + home + '/' + jar + ' ' + current + '/' + jar,

'echo Stop redis... && service redis_6379 start',

'echo Start spring_blog service... && service spring_blog start ' +

' && echo All done.'

]

a=threading.Thread(target=execute_cmds, args=(ip,user,password,cmd))

a.start()


配置完以后,在本地写完代码就可以运行./deploy.sh一键部署到远程服务器了。

C. SpringBoot项目如何进行打包部署

打成jar进行部署(步骤)
1. 需要在application.properties当中配置端口

2.marven的配置文件

注意:这块一定要配置否则打jar的时候会说找不到主类

3.在启动类当中加上extends SpringBootServletInitializer并重写configure方法,这是为了打包springboot项目用的

4.然后按照顺序运行mvn clean再mvn install

D. 为什么越来越多的开发者选择使用Spring Boot

(1) Spring Boot使编码变简单

(2) Spring Boot使配置变简单

(3) Spring Boot使部署变简单

(4) Spring Boot使监控变简单
Spring Boot继承了Spring的优点,并新增了一些新功能和特性:

(1)SpringBoot是伴随着Spring4.0诞生的,一经推出,引起了巨大的反向;

(2)从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架;

(3)SpringBoot帮助开发者快速启动一个Web容器;

(4)SpringBoot继承了原有Spring框架的优秀基因;

(5)SpringBoot简化了使用Spring的过程;

(6)Spring Boot为我们带来了脚本语言开发的效率,但是Spring Boot并没有让我们意外的新技术,都是Java EE开发者常见的额技术。
Spring Boot主要特性

(1)遵循“习惯优于配置”的原则,使用Spring Boot只需要很少的配置,大部分的时候我们直接使用默认的配置即可;

(2)项目快速搭建,可以无需配置的自动整合第三方的框架;

(3)可以完全不使用XML配置文件,只需要自动配置和Java Config;

(4)内嵌Servlet容器,降低了对环境的要求,可以使用命令直接执行项目,应用可用jar包执行:java -jar;

(5)提供了starter POM, 能够非常方便的进行包管理, 很大程度上减少了jar hell或者dependency hell;

(6)运行中应用状态的监控;

(7)对主流开发框架的无配置集成;

(8)与云计算的天然继承;

E. spring boot 需要安装吗

在开发Spring Boot应用的过程中,Spring Boot直接执行public static void main()函数并启动一个内嵌的应用服务器(取决于类路径上的以来是Tomcat还是jetty)来处理应用请求。对于生产环境,这样的部署方式同样有效,同时Spring Boot也支持传统的部署方式——将war包放入应用服务器中启动运行。内嵌应用服务器在使用Maven或Gradle构建Spring Boot应用的过程中,Spring Boot插件提供了巨大的帮助,除了生命各类预定义的依赖,它还能够构建可以直接运行的jar包——包含了所有的依赖以及内嵌应用服务器。应用的分发也就变得非常简单,任何人拿到了这个jar包,只需要简单运行java -jar your.jar就可以启动应用,无需任何构建工具、安装过程以及应用服务器。内嵌应用服务器配置在生产环境中,应用服务器需要各类配置,Spring Boot本身提供了一种非常简单的配置机制——application.properties:server.port=8080 # 监听端口server.address= # 绑定的地址server.session-timeout= #session有效时长server.context-path= #默认为/server.ssl.* #ssl相关配置Tomcat默认情况下,Spring Boot启动的内嵌容器就是Tomcat,对于Tomcat有几个非常重要的配置:server.tomcat.basedir=/tmptomcat的baseDir,日志、mp等文件都存在于这个目录中,一般是系统的临时文件夹/tmp,但也可以按照自己的需求变更位置。server.tomcat.access-log-pattern= # log pattern of the access logserver.tomcat.access-log-enabled=false # is access logging enabled这两个配置打开Tomcat的Access日志,并可以设置日志格式。Jetty如果你不喜欢Tomcat,Jetty也是一个非常不错的选择。使用Jetty的方式也非常简单——把tomcat依赖从Maven或Gradle中移除,加入Jetty内嵌容器的依赖: org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty Java EE应用服务器除了内嵌容器的部署模式,Spring Boot也支持将应用部署至已有的Tomcat容器, 或JBoss, WebLogic等传统Java EE应用服务器。以Maven为例,首先需要将从jar改成war,然后取消spring-boot-maven-plugin,然后修改Application.java:package demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.context.web.SpringBootServletInitializer;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@Configuration@ComponentScan@EnableAutoConfigurationpublic class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(applicationClass, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(applicationClass); } private static Class applicationClass = Application.class;}接下来打包应用,将生成的war包放入应用服务器目录即可。使用外部配置文件在应用程序中有很多配置项,例如数据库连接地址、日志文件位置、应用服务器配置等等。为了安全与灵活性,我们推荐将Spring Boot的配置文件放在生产环境的服务器上,并严格控制访问权限。在运行应用时可以通过命令行参数指定配置文件:java -jar location_of_your_jar_file.jar --spring.config.location=location_of_your_config_file.properties这样做的好处是:配置位于生产环境中,数据库连接等私密信息不容易泄露灵活性强,同一份代码(包括构建的jar包)可以应用于不同的环境配置(开发、测试、生产)使用Profile区分环境在某些情况下,应用的某些业务逻辑可能需要有不同的实现。例如邮件服务,假设EmailService中包含的send(String email)方法向指定地址发送电子邮件,但是我们仅仅希望在生产环境中才执行真正发送邮件的代码,而开发环境里则不发送以免向用户发送无意义的垃圾邮件。我们可以借助Spring的注解@Profile实现这样的功能,这样需要定义两个实现EmailService借口的类:@Service@Profile("dev")class DevEmailService implements EmailService { public void send(String email) { //Do Nothing }}@Service@Profile("prod")class ProdEmailService implements EmailService { public void send(String email) { //Real Email Service Logic }}@Profile("dev")表明只有Spring定义的Profile为dev时才会实例化DevEmailService这个类。那么如何设置Profile呢?在配置文件中指定在application.properties中加入:spring.profiles.active=dev通过命令行参数java -jar app.jar --spring.profiles.active=dev以服务的形式运行应用使用java命令运行应用非常简单,但是通常我们都是通过ssh命令连接到服务器并运行它,一旦ssh连接断开,那么由它fork的java子进程也就随之销毁了。所以我们必须借助工具将应用作为服务运行在服务器上:Systemdsystemd 是Linux 下的一款系统和服务管理器。可以为Spring Boot应用编写启动脚本:[Unit]Description=Spring Boot Application[Service]ExecStart=/usr/bin/java -jar location_of_jar_file.jar --spring.config.location=location_of_config.properties --spring.profiles.active=profileUser=${your expected user}[Install]WantedBy=multi-user.targetSupervisordSupervisord是用Python实现的一款非常实用的进程管理工具。可以为Spring Boot应用编写:[program:app]command=/usr/bin/java -jar location_of_jar_file.jar --spring.config.location=location_of_config.properties --spring.profiles.active=profileuser=${your expected user}autostart=trueautorestart=truestartsecs=10startretries=3spring boot 需要安装吗

F. springboot 怎么部署

1、要将$http中的Content-Type设置为application/x-www-form-urlencoded因为目前的浏览器只支持这种类型的跨域
2、需要在Application同级目录下写一个配置类,在里面配置一个返回类型为WebMvcConfigurerAdapter的Bean,用registry.addMapping("/*")设置拦截的范围"/*"代表拦截所有请求。

G. spring boot 使用脚本启动.bat怎么写

Spring Boot 是 Spring 产品中一个新的子项目,致力于简便快捷地搭建基于 Spring 的独立可运行的应用。大多数的 Spring Boot 应用只需要非常少的 Spring 配置。
你能够使用 Spring Boot 创建 Java 应用并通过 java -jar 来运行或者创建传统的通过 war 来部署的应用。Spring Boot 也提供了一个命令行工具来运行 spring 脚本。
Spring Boot 的目标是:
快速开发基于 Spring 的应用
开箱即用的微服务
提供一些大型项目常用的非功能性特性,例如:嵌入式服务、安全、监控、健康检查、外部配置
不用生成代码,没有 xml 配置

H. 如何在Ubuntu 14.04服务器上自动化部署Spring Boot的应用

1. 在Ubuntu中安装Java8
以下是一个简单的安装方法。
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
$ java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
2. 本地使用Gradle发布Spring Boot应用
我这里使用Jetty9作为内置的服务器。
// ...
bootRun {
systemProperties = System.properties
}
configurations {
compile.exclude mole: "spring-boot-starter-tomcat"
}
dependencies {
// spring boot
compile "org.springframework.boot:spring-boot-starter-web:1.3.0.M5"
compile "org.springframework.boot:spring-boot-starter-jetty"
// ...
}
//...
在本地运行默认使用 src/main/resources/application.yml
作为配置文件,而在proction环境中我们系统它支持提供外部的配置文件 application-proction.yml

./gradlew bootRun # 开发环境下默认使用项目里的application.yml
# 在本地测试使用外部配置文件
./gradlew bootRun -Dspring.config.location=/path/to/application-proction.yml
# 发布
./gradlew build
# 运行
java -jar build/libs/SpringBlog-0.1.jar # 默认使用jar包里面的application.yml配置文件
# 使用外部配置文件
java -jar build/libs/SpringBlog-0.1.jar --spring.config.location=/path/to/application-proction.yml
3. 在Ubuntu服务器上部署Spring Boot应用
# 上传SpringBlog-0.1.jar到服务器
scp build/libs/SpringBlog-0.1.jar root@your_server_ip:/root/spring-blog/current
# 在服务器上配置生产环境的配置文件
scp application-proction.yml root@your_server_ip:/root/spring-blog/current
然后 SSH
登录服务器,修改配置文件 application-proction.yml
,试运行应用。
ssh root@your_server_ip
cd spring-blog/current
java -jar SpringBlog-0.1.jar --spring.config.location=application-proction.yml
# application-proction.yml
server:
address: raysmond.com # 使用域名或者IP,启动之后就可以这个域名或IP访问网站了
port: 80
contextPath:
spring:
profiles:
active: proction
thymeleaf:
cache: true
jade4j:
caching: true
dataSource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1/spring_blog
username: root
password:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
hbm2ddl.auto: update
show_sql: false
redis:
host: localhost
port: 6379
4. 如何在Ubuntu中后台运行Spring Boot应用?
推荐使用 nohup
这个命令。
cd /root/spring-blog/current
nohup java -jar SpringBlog-0.1.jar --spring.config.location=application-proction.yml \
> ../logs/proction.log 2> ../logs/proction.err &
在Ubuntu还可以 /etc/init.d
目录下新建一个脚本,把SpringBlog作为service来运行,这样不用每次都打这么繁琐的命令了。新建一个 /etc/init.d/spring_blog
文件,内容如下:
#!/bin/sh
SERVICE_NAME=spring_blog
HOME=/root/spring-blog
PATH_TO_JAR=$HOME/current/SpringBlog-0.1.jar
PID_PATH_NAME=/tmp/spring_blog.pid
LOG=$HOME/logs/proction.log
ERROR_LOG=$HOME/logs/proction.err
CONFIG=$HOME/application-proction.yml
case $1 in
start)
echo "Starting $SERVICE_NAME ..."
if [ ! -f $PID_PATH_NAME ]; then
cd $HOME/current
nohup java -jar $PATH_TO_JAR --spring.config.location=application-proction.yml > $LOG 2> $ERROR_LOG &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is already running ..."
fi
;;
stop)
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME stoping ..."
kill $PID;
echo "$SERVICE_NAME stopped ..."
rm $PID_PATH_NAME
else
echo "$SERVICE_NAME is not running ..."
fi
;;
restart)
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME stopping ...";
kill $PID;
echo "$SERVICE_NAME stopped ...";
rm $PID_PATH_NAME
echo "$SERVICE_NAME starting ..."
cd $HOME/current
nohup java -jar $PATH_TO_JAR --spring.config.location=application-proction.yml > $LOG 2> $ERROR_LOG &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is not running ..."
fi
;;
esac
现在就可以使用service的方式来运行网站了。
sudo service spring_blog start
sudo service spring_blog stop
sudo service spring_blog restart
5. 在本地自动化部署网站到远程服务器
在本地我用了一个shell脚本和一个python脚本来配合自动化部署。

deploy.sh
使用 gradle
的命令发布jar包,使用 scp
命令吧jar包上传到服务器上;

deploy.py
使用 SSH
远程登录服务器,并在服务器上执行部署命令。
# deploy.sh
#!/bin/bash
SERVER="your_server_ip"
JAR="build/libs/SpringBlog-0.1.jar"
echo "Building $JAR..."
./gradlew build
echo "Upload $JAR to server $SERVER..."
scp $JAR root@$SERVER:/root/spring-blog/
python deploy.py
deploy.py
主要使用了一个 paramiko
库,用于 SSH
远程登录服务器,并执行命令。这个脚本会把服务器上 /root/spring-blog/current/SpringBlog-0.1.jar
备份到 /root/spring-blog/releases
中,并把新发布的jar包放到 /root/spring-blog/current
中,然后重启 spring_blog
服务。
#!/usr/bin/python
import paramiko
import threading
import time
ip = 'your_server_ip'
user = 'root'
password = ''
jar = 'SpringBlog-0.1.jar'
home='/root/spring-blog'
current=home+"/current"
releases=home+"/releases"
def execute_cmds(ip, user, passwd, cmd):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,user,passwd,timeout=5)
for m in cmd:
print m
stdin, stdout, stderr = ssh.exec_command(m)
# stdin.write("Y")
out = stdout.readlines()
for o in out:
print o,
print '%s\tOK\n'%(ip)
ssh.close()
except :
print '%s\tError\n'%(ip)
if __name__=='__main__':
print 'Start deploying %s to server %s'%(jar, ip)
now = time.strftime("%Y%m%d%H%M%S")
cmd = [
'echo Stop spring_blog service... && service spring_blog stop',
'echo Flush all redis cache data... && redis-cli -r 1 flushall',
'echo Stop redis server... && service redis_6379 stop',
'echo Use new jar... ' + \
' && mv ' + current + '/' + jar + ' ' + releases + '/' + now + '_' + jar ,
'mv ' + home + '/' + jar + ' ' + current + '/' + jar,
'echo Stop redis... && service redis_6379 start',
'echo Start spring_blog service... && service spring_blog start ' + \
' && echo All done.'
]
a=threading.Thread(target=execute_cmds, args=(ip,user,password,cmd))
a.start()
配置完以后,在本地写完代码就可以运行 ./deploy.sh
一键部署到远程服务器了。

I. spring boot 怎么部署

1、使用maven
2、maven install,生成一个jar包,假设名字是“MyApp-1.10.jar”
3、在命令行窗口输入 java -jar MyApp-1.10.jar就可以运行了!

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:336
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:378
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:612
java用什么软件写 发布:2025-05-18 03:56:19 浏览:32
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:944
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:741
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:803
网卡访问 发布:2025-05-18 03:35:04 浏览:511
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:372