tus/tusd, 这是项目官网, 该项目是一个后端服务, 用于接收从前端页面所上传的文件。搭配前端 JS 库 transloadit/uppy, 即可实现完整的文件上传功能。
tusd 这个库的一大亮点, 是可以实现文件的断点续传。
官网
https://tus.io/
github地址:
https://github/tus/tusd
https://github/tus/tus-js-client
下载地址
tus.js
https://cdn.jsdelivr/npm/tus-js-client@latest/dist/tus.js
tus.min.js
https://cdn.jsdelivr/npm/tus-js-client@latest/dist/tus.min.js
安装:
> # git clone https://github/tus/tusd.git
> # cd tusd
> # go build -o tusd cmd/tusd/main.go
查看帮助
> # ./tusd --help
Usage of ./tusd:
-base-path string
Basepath of the HTTP server (default "/files/")
-behind-proxy
Respect X-Forwarded-* and similar headers which may be set by proxies
-cpuprofile string
write cpu profile to file
-expose-metrics
Expose metrics about tusd usage (default true)
-gcs-bucket string
Use Google Cloud Storage with this bucket as storage backend (requires the GCS_SERVICE_ACCOUNT_FILE environment variable to be set)
-gcs-object-prefix string
Prefix for GCS object names (can't contain underscore character)
-hooks-dir string
Directory to search for available hooks scripts
-hooks-enabled-events string
Comma separated list of enabled hook events (e.g. post-create,post-finish). Leave empty to enable default events (default "pre-create,post-create,post-receive,post-terminate,post-finish")
-hooks-grpc string
An gRPC endpoint to which hook events will be sent to
-hooks-grpc-backoff int
Number of seconds to wait before retrying each retry (default 1)
-hooks-grpc-retry int
Number of times to retry on a server error or network timeout (default 3)
-hooks-http string
An HTTP endpoint to which hook events will be sent to
-hooks-http-backoff int
Number of seconds to wait before retrying each retry (default 1)
-hooks-http-forward-headers string
List of HTTP request headers to be forwarded from the client request to the hook endpoint
-hooks-http-retry int
Number of times to retry on a 500 or network timeout (default 3)
-hooks-plugin string
Path to a Go plugin for loading hook functions (only supported on Linux and macOS; highly EXPERIMENTAL and may BREAK in the future)
-hooks-stop-code int
Return code from post-receive hook which causes tusd to stop and delete the current upload. A zero value means that no uploads will be stopped
-host string
Host to bind HTTP server to (default "0.0.0.0")
-max-size int
Maximum size of a single upload in bytes
-metrics-path string
Path under which the metrics endpoint will be accessible (default "/metrics")
-port string
Port to bind HTTP server to (default "1080")
-s3-bucket string
Use AWS S3 with this bucket as storage backend (requires the AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY and AWS_REGION environment variables to be set)
-s3-disable-content-hashes
Disable the calculation of MD5 and SHA256 hashes for the content that gets uploaded to S3 for minimized CPU usage (experimental and may be removed in the future)
-s3-endpoint string
Endpoint to use S3 compatible implementations like minio (requires s3-bucket to be pass)
-s3-object-prefix string
Prefix for S3 object names
-s3-part-size int
Size in bytes of the individual upload requests made to the S3 API. Defaults to 50MiB (experimental and may be removed in the future) (default 52428800)
-s3-transfer-acceleration
Use AWS S3 transfer acceleration endpoint (requires -s3-bucket option and Transfer Acceleration property on S3 bucket to be set)
-timeout int
Read timeout for connections in milliseconds. A zero value means that reads will not timeout (default 6000)
-tls-certificate string
Path to the file containing the x509 TLS certificate to be used. The file should also contain any intermediate certificates and the CA certificate.
-tls-key string
Path to the file containing the key for the TLS certificate.
-tls-mode string
Specify which TLS mode to use; valid modes are tls13, tls12, and tls12-strong. (default "tls12")
-unix-sock string
If set, will listen to a UNIX socket at this location instead of a TCP socket
-upload-dir string
Directory to store uploads in (default "./data")
-verbose
Enable verbose logging output (default true)
-version
Print tusd version information
> # ./tusd -upload-dir=./data -port 8080
[tusd] 2021/01/23 10:42:26 Using '/data/tusd/data' as directory storage.
[tusd] 2021/01/23 10:42:26 Using 0.00MB as maximum size.
[tusd] 2021/01/23 10:42:26 Using 0.0.0.0:8080 as address to listen.
[tusd] 2021/01/23 10:42:26 Using /files/ as the base path.
[tusd] 2021/01/23 10:42:26 Using /metrics as the metrics path.
[tusd] 2021/01/23 10:42:26 Supported tus extensions: creation,creation-with-upload,termination,concatenation,creation-defer-length
[tusd] 2021/01/23 10:42:26 You can now upload files to: http://0.0.0.0:8080/files/
开放端口号
> # firewall-cmd --permanent --zone=public --add-port=8080/tcp
> # firewall-cmd --reload
上传地址:
http://192.168.117.130:8080/files/
方法一:下载源进行安装
1.Oracle官网下载jdk1.8:https://www.oracle/java/technologies/javase/javase-jdk8-downloads.html需要注册用户。
2.上传到服务器。
3.解压:
tar -zxvf jdk-8u211-linux-x64.tar.gz
4.配置环境变量:vim /etc/profile文件末尾增加:
export JA_HOME=/DATA/jdk/jdk1.8.0_211export CLASSPATH=$:CLASSPATH:$JA_HOME/lib/export PATH=$PATH:$JA_HOME/bin
刷新环境变量文件:
source /etc/profile
查看版本:
java -version
方法二:yum安装
1.查询源:
yum -y list java*
2.安装jdk1.8:
yum install -y java-1.8.0-openjdk.x86_64二、安装Jenkins并运行
1.下载jenkins:https://www.jenkins.io/download/
2.上传到服务器。
3.运行:
nohup java -jar jenkins.war --httpPort=80 > jenkins.out 2>&1 &
4.配置jenkins开机运行:
4.1创建启动脚本
(1)创建脚本jenkins.sh,内容如下:
#!/bin/bash###主要目的用于开机启动服务,不然 启动jenkins.war包没有java -jar的权限JA_HOME=/usr/local/jdk1.8 pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'| wc -l` if [ "$1" = "start" ];then if [ $pid -gt 0 ];then echo 'jenkins is running...'else ### java启动服务 配置java安装根路径,和启动war包存的根路径 nohup $JA_HOME/bin/java -jar /usr/local/jenkins/jenkins.war --httpPort=8080 > jenkins.out 2>&1 & fi elif [ "$1" = "stop" ];then exec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9 echo 'jenkins is stop..'else echo "Please input like this:"./jenkins.sh start" or "./jenkins stop"" fi
将JA_HOME的路径改为自己的jdk安装路径。
(2)设置jenkins.sh可执行权限
chmod +x jenkins.sh
此时可以使用一下命令:
启动:
jenkins.sh start
停止:
jenkins.sh stop
4.2设置开机启动服务
(1)到 /lib/systemd/system 服务注册目录下创建 jenkins.service,内容如下:
[Unit]Description=JenkinsAfter=network.target[Service]Type=forkingExecStart=/usr/local/jenkins/jenkins.sh startExecReload=ExecStop=/usr/local/jenkins/jenkins.sh stopPrivateTmp=true[Install]WantedBy=multi-user.target
(2)执行刷新命令:systemctl daemon-reload,此时可以通过systemctl start jenkins.service启动jenkins
(3)设置开机启动:systemctl list-units --type=service
5.浏览器打开jenkins管理地址:http://ip:8080/login?from=%2F,等待几分钟
6.安装推荐的插件,等待安装插件
7.创建第一个管理用户:admin 123456
8.安装以下几个插件,根据自己需要了,也可以不安装。
点击jenkins 系统管理->插件管理,点击可选插件,搜索以下插件并安装:
(1)Git plugin 可能默认已经安装
(2)Git client plugin 可能默认已经安装
(3)Maven Integration plugin
(4)Publish Over SSH 用于远程部署
(5)Gitlab Hook Plugin 用于gitlab提交触发自动部署
9.远程应用服务器信息配置
打开系统管理-》系统设置,找到Publish over SSH,设置远程服务器信息SSH Servers:
name:随便起名字
Hostname:ip
Username:登录用户名,可以用root
Remote Directory:jenkins将jar包上传到服务器的初始路径,需要提前在远程服务器中创建好,不设置默认为根目录
选择“高级”选中“Use password authentication, or use a different key”使用密码进行验证。
Passphrase / Password:root密码
若还有其他远程服务器,点击新增继续添加,否则点击保存退出。
10.全局工具配置
分别配置它的JDK GIT 和MEN,如果本机已经有了,则输入安装路径即可,如果没有可以使用JENKINS的自动安装功能
(1)jdk:JA_HOME填写jdk安装路径即可。
(2)git:需要下载安装git:yum -y install git,查找git安装路径:whereis git
(3)maven:选择自动安装即可
11.接下来就可以创建部署任务啦。。。