『贴代码』
我的博文
个人作品
优选问答
「搜索」
【本期话题】更多
三人寄语更多
需求就是系统的千年杀,相爱相杀那种!
点赞:0
慎用redis的同步我的意见是redis都走异步!!!
点赞:0
谋而后动,往往会让你对自己的代码更具信心!
点赞:1
测试没问题的不一定没问题,测试有问题的那肯定有问题!
点赞:2
能通过内网IP访问的,尽量不要使用域名访问!
点赞:1
实际遇到的问题往往在那些视频课程中是不会出现的!
点赞:0
抛开需求讲架构,和纸上谈兵无差!
点赞:1
没有最好的语言,只有更合适的语言!
点赞:0
你连F12都不关注,你好意思说你是前端?
点赞:0
微信的app这个东西很鬼,有时候你刷新页面,会造成部分数据重置,部分不重置,不妨试试把对象放app.globalData里面去,会有意外惊喜!
点赞:0
【【【PasteSpider的安装--一键拉取镜像】】】
尘埃 2023-05-01 3776 167 1 编辑
PasteSpider理论上可以安装到Linux的系统上,目前测试的有CentOS7和Ubuntu22,由于pastespider是通过SSH进行交互和作业的,所以暂不支持WINDOWS服务器,后续可能会适配windows。

更多PasteSpider的操作介绍,请前往 PasteSpider操作文档


;

PasteSpider的安装,你可以使用linux自己部署,不过这里建议采用容器部署,支持podman/docker

上面是V2版本的内容,新版本V5已经发布

V5版本支持把你得服务发布到podman/docker/linux.systemd/windows.iis/windows.service,所以叫V5版本!


目前大多数Linux都支持!你可以加入我们的讨论群(QQ群296245685 ),在安装遇到问题的时候可以找到解答!

数据库方式一Postgresql

PasteSpider目前的版本只支持postgresql数据库和sqlite数据库,所以先要安装postgresql数据库,如何安装可以参照文章

如何在docker中安装postgresql数据库

?我想简单测测,可以不安装这个数据库么???可以的!

本文下方会提供一个sqlite和程序内存的启动方法,就是不需要安装postgersql和redis就能跑pastespider!

docker run -it --name postgres --restart always -e POSTGRES_PASSWORD=12345678  -e KeepConfig:SqlDataType="pgsql" -e ALLOW_IP_RANGE=0.0.0.0/0 -v /outdata/postgres/data:/var/lib/postgresql/data -p 8765:5432 -d postgres

如果安装后,一直链接不上postgres,提示密码错误,如果从日志上看可以看到如下提示

2023-11-11 02:53:56.414 UTC [31] FATAL:  password authentication failed for user "postgres"
2023-11-11 02:53:56.414 UTC [31] DETAIL:  Connection matched file "/var/lib/postgresql/data/pg_hba.conf" line 129: "host all all all scram-sha-256"

这个是因为postgres改版了,意思是要你把密码加密后在填入,你如果还要用明文的话,按照提示打开这个文件/var/lib/postgresql/data/pg_hba.conf,看到提示把这一整行改成host all all all trust 即可,然后重启Postgresql这一整个容器。

数据库方式二Sqlite

   配置文件中默认是使用Postgresql数据库的,你也可以切换到Sqlite数据库(只能单例部署的时候,如果是集群部署必须要使用远端数据库),注意如果切换到Sqlite数据库,必须要把数据库的目录(/app/data/默认在容器中是这个路径,这个路径不能随意更改,因为内部要创建这个文件夹)映射出去。

docker run启动命令的时候,注意修改配置项目中的 -e KeeperConfig:SqlDataType="sqlite",同理缓存也可以更改为程序内存缓存而不使用redis作为缓存!

缓存服务Redis安装

如果你要使用redis作为缓存,可以使用命令(记得把yourpassword换成你自己的密码,记住好了!)

docker run -it --name redis -p 8004:6379 -d --restart always redis --requirepass yourpassword


获取PasteSpider的镜像

!!!---一键拉取PasteSpider的最新版本镜像---!!!

PasteSpider的镜像后续都将使用阿里云的方式,版本号是基于上传的日期而定的,采用yyMMdd的模式


docker pull registry.cn-heyuan.aliyuncs.com/apeart/pastespider:latest

如果你是使用podman的,则为


podman pull registry.cn-heyuan.aliyuncs.com/apeart/pastespider:latest

关于版本,会在同专题下的更新纪要说明!

注意之前的镜像获取方式全部取消,那个太复杂了!

拉取镜像后,可以使用tag修改下镜像名称


docker tag registry.cn-heyuan.aliyuncs.com/apeart/pastespider:[镜像版本号] pastespider:[镜像版本号]



启动PasteSpider

PasteSpider的启动依赖于他里面的appsettings.json配置文件,里面记录了数据库链接等,注意启动命令中的镜像名称要和你实际的相符,有些电脑的镜像会添加localhost/的前缀,有些不会,然后是后面的TAG(我比较习惯这里用版本号标识)

你也可以直接解药这个images包,特别查看appsettings.json这个文件,这个文件是配置信息。大致信息如下:

{
  "App": {
    "CorsOrigins": "http://localhost:5000"
  },
  "ConnectionStrings": {
    "MainConnectionString": "User id=postgres;Password=123456;Host=192.168.1.168;Port=8765;Database=spiderdb;Pooling=true;MaxPoolSize=10;MinPoolSize=0;Connection Lifetime=0;",
    "SqliteConnectionString": "Data Source=data/spider.db" //sqlite的链接字符串,注意使用-v进行映射,否则下次更新后数据就丢失了 容器内文件夹为/app/data/spider.db 示例 -v /spider/sqlite/:/app/data/ 记得宿主要先创建文件夹/spider/sqlite
  },
  "KeeperConfig": {
    "GroupName": "default", //集群模式中的群组划分 同一个群组名称的服务器会划分给同名的spider管理
    "UseRedis": true, //是否采用redis缓存机制,还是使用内存缓存机制,集群部署模式必须使用redis作为缓存
    "SqlDataType": "pgsql", //sqlite pgsql(推荐) 我们将在后续版本中支持mysql(mariadb)/mssql等
    "RecoveryHour": 3, //每日凌晨几点进行资源回收
    "RecoveryDay": 90, //资源回收跨度(天)
    "SingleModel": true, //是否是单例模式(单个PasteSpider,也是可以连接多台服务器的),否则为集群模式(多个PasteSpider组合)
    "SlaveToken": "123qwe456asd789cvb", //集群密钥,防止spider接入到其他的集群中
    "WorkDir": "/spider/", //绑定的执行目录,如果不需要构建可以不需要设定在docker/podman run 中使用 -v /xxx/:/spider/指定,映射到宿主服务器上 请保持两边一致,否则在直连的时候会有问题
    "WaitNginxLoadTime": 10, //等待nginx生效时间
    "WaitRunTime": 20, //等待启动最大时间,超过这个时间则判定启动失败!
    "LoginAccount": "admin@spider.com", //默认的账号
    "LoginPassWord": "123456",//如果不为123456则可以使用这个登陆 默认账号的密码
    "Version": "template-version", //系统版本号line_version
    "TestImage": "pastetestimage", //创建仓库的时候创建的测试镜像的镜像名称
    "UserToken": "1qazxsw23edcvfr4", //token的加密字符串,建议必须更改!!!
    "SyncSoftToken": "time_token" //CS客户端文件同步软件使用密钥time_temptoken
  },
  "RedisConfig": {
    "MainConnection": "192.168.1.168:8379,password=123456", //redis连接字符串
    "Prefix": "spider:", //redis的key的前缀,防止和其他项目撞库
    "ClientName": "spider" //redis连接名称,在redis客户端后台可以查看
  },
  "IpRateLimiting": {
    //false,则全局将应用限制,并且仅应用具有作为端点的规则*。例如,如果您设置每秒5次调用的限制,则对任何端点的任何HTTP调用都将计入该限制
    //true, 则限制将应用于每个端点,如{HTTP_Verb}{PATH}。例如,如果您为*:/api/values客户端设置每秒5个呼叫的限制,
    "EnableEndpointRateLimiting": false,
    //false,拒绝的API调用不会添加到调用次数计数器上;如 客户端每秒发出3个请求并且您设置了每秒一个调用的限制,则每分钟或每天计数器等其他限制将仅记录第一个调用,即成功的API调用。如果您希望被拒绝的API调用计入其他时间的显示(分钟,小时等)  //,则必须设置StackBlockedRequests为true。
    "StackBlockedRequests": false,
    //Kestrel 服务器背后是一个反向代理,如果你的代理服务器使用不同的页眉然后提取客户端IP X-Real-IP使用此选项来设置
    "RealIpHeader": "X-Real-IP",
    //取白名单的客户端ID。如果此标头中存在客户端ID并且与ClientWhitelist中指定的值匹配,则不应用速率限制。
    "ClientIdHeader": "X-ClientId",
    //限制状态码
    "HttpStatusCode": 429,
    "QuotaExceededResponse": {
      "Content": "{{ \"message\": \"Too many requests,Please try again in {2} second(s).\", \"code\": 429,\"data \":\"\"}}",
      "ContentType": "application/json"
    },
    ////IP白名单:支持Ip v4和v6 
    //"IpWhitelist": [ "127.0.0.1", "::1/10", "192.168.0.0/24" ],
    ////端点白名单
    "EndpointWhitelist": [ "post:/api/spider/upload/drop","post:/api/spider/upload/delete"],
    ////客户端白名单
    //"ClientWhitelist": [ "dev-id-1", "dev-id-2" ],
    //通用规则
    "GeneralRules": [
      {
        //端点路径
        "Endpoint": "*",
        //时间段,格式:{数字}{单位};可使用单位:s, m, h, d
        "Period": "5s",
        //限制
        "Limit": 30
      }
    ]
  },
  "Serilog": {
    "LevelSwitches": {
      "$errorSwitch": "Error",
      "$infoSwitch": "Information",
      "$warnSwitch": "Warning"
    },
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Information",
        "System": "Information"
      }
    },
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "restrictedToMinimumLevel": "Warning"
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "logs/log.txt",
          "levelSwitch": "$infoSwitch", //也可以使用 restrictedToMinimumLevel:Information
          "rollingInterval": "Day", // "创建文件的类别,可以是分钟,小时,天,月,年": null, 
          "retainedFileCountLimit": 60, // "--设置日志文件个数最大值,默认31,意思就是只保留最近的31个日志文件", "等于null时永远保留文件": null,
          "fileSizeLimitBytes": 3145728, //设置单个文件大小为3M 默认1G
          "rollOnFileSizeLimit": true //超过文件大小后创建新的
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "logs/warning.txt",
          "levelSwitch": "$warnSwitch",
          "rollingInterval": "Day", // "创建文件的类别,可以是分钟,小时,天,月,年": null,
          "retainedFileCountLimit": 60, // "--设置日志文件个数最大值,默认31,意思就是只保留最近的31个日志文件", "等于null时永远保留文件": null,
          "fileSizeLimitBytes": 3145728, //设置单个文件大小为3M 默认1G
          "rollOnFileSizeLimit": true //超过文件大小后创建新的
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "logs/error.txt",
          "levelSwitch": "$errorSwitch",
          "rollingInterval": "Day", // "创建文件的类别,可以是分钟,小时,天,月,年": null,
          "retainedFileCountLimit": 60, // "--设置日志文件个数最大值,默认31,意思就是只保留最近的31个日志文件", "等于null时永远保留文件": null,
          "fileSizeLimitBytes": 3145728, //设置单个文件大小为3M 默认1G
          "rollOnFileSizeLimit": true //超过文件大小后创建新的
        }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ]
  }
}

如果你要修改数据库的链接字符串,可以在docker run的后面加入如下配置 -e ConnectionStrings:MainConnectionString="PostgresqlConnectionString"

如果你要修改日志文件的文件夹路径,则是这样的 -e "Serilog:WriteTo:1:Args:path=/logs/abc.txt"

这里面 -e 后面的双引号放哪里,主要要看你的值里面有没有=,有的话你就把他弄值后面,如果没有,则可以全部包裹。

先要在docker中安装postgresql数据库,如果你没有这个数据库的话,安装好了后测试下链接字符串有没有问题,然后启动的时候配置如链接串,建议采用局域网的IP,如果允许的话。

参考启动命令

docker run -d --name myspider -v "/spider/:/spider/" -e ConnectionStrings:MainConnectionString="你的数据库连接字符串" -e RedisConfig:MainConnection="你的redis数据量连接字符串" -e KeeperConfig:UserToken="随机码请修改"  - p 12345:80 imgspider:1097

上方要注意的是 -v /spider/:/spider/是把当前服务器的/spider/文件夹映射给这个容器内的/spider/,这样PasteSpider好使用文件更新,打包等功能!

启动后,使用docker ps查看下运行情况,看看mypastespider是否在运行。注意KeeperConfig:UserToken的作用是这个字符串作为加密的密文,所以请自己随机修改一下,有序可以一直用同一个!

比如我的启动命令是

docker run -it -v "/spider/:/spider/" -e ConnectionStrings:MainConnectionString="User id=postgres;Password=12345678;Host=192.168.0.29;Port=8002;Database=spiderdb;Pooling=true;MaxPoolSize=10;MinPoolSize=0;Connection Lifetime=0;" -e RedisConfig:Mainconnection="192.168.0.29:8004,password=12345678,defaultdatabase=9" -e KeeperConfig:UserToken="112uuyt7765bsgehdeuw23iewe" --name myspider -d imgspider:1097

PasteSpider采用netcore的EF编写,并不需要执行sql语句创建数据库啥的,系统第一次运行的时候会自行判断设定的数据库是否存在,是否需要升级等,这便于后续的自动升级。你只要确保这个数据库连接字符串中的数据库是否和你其他的数据库重复了。

最简单的模式Sqlite+MemoryCache

这里提供一个最简单的版本模式,单例PasteSpider,数据库采用Sqlite,内存服务使用程序的内存不使用redis,则有启动命令可以参考如下:(注意路径的映射,不然下次升级的时候数据就丢失了,下面案例使用的sqlite数据库映射到了宿主的/spider/data/文件夹下)

docker run -it -v "/spider/:/spider/" -v /spider/data/:/app/data/ -p 8012:80 -e KeeperConfig:SqlDataType="sqlite" -e KeeperConfig:UseRedis=false -e KeeperConfig:UserToken="67uiyt876jyhb567" --name myspider -d imgspider:2000


V5版本注意

升级V5的时候,如果不是使用sqlite数据库的,是以容器方式部署的,注意添加环境参数-e KeeperConfig:SqlDataType="pgsql",这个值新版本改成sqlite了!!!

注意

   启动命令要保存好,下次升级PasteSpider的时候就简单了,直接修改引用的镜像版本号就行了,也就是最后面的imgspider:xxxx

打开浏览器输入地址,这个地址是多少就要看你的centos7服务器的IP和你上面启用PasteSpider的-p的配置了。

PasteSpider的初始账号是:admin@spider.com 密码是:123456,为了你的服务器安全,建议登陆后更改密码!

在docker中

docker logs myspider

可以查看执行日志,或者查看日志文件夹!

   由于PasteSpider要上传文件,所以一般要修改上传文件的大小限制。

   nginx中配置spier的路由规则的地方添加如下代码



server {
  server_name spider.pastecode.cn;
  listen 80;
  #charset koi8-r;
  #access_log  logs/pastecode.access.log main;

  #由于PasteSpider部分使用了长连接,在这里需要配置下
  location /statushub {
    proxy_pass http://127.0.0.1:8012;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
  
  location / {
   #这个要看你的服务是部署在哪个端口的,我是部署在宿主的8012端口
    proxy_pass http://127.0.0.1:8012/;
    index index.html;
    proxy_set_header Host "$server_addr:$server_port";
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header referer "$server_addr:$server_port";
    proxy_http_version 1.1;
    client_max_body_size 2M;
    client_body_buffer_size 2M;
    proxy_set_header Connection "Keep-Alive";
    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;
  }

}

    这个配置其实看个人哈,比如我的话会把前端和后端分开,后端的是接口都是/api/开头,当然了上面的/statushub除外

    前端文件在??? 容器内的/wwwroot/文件夹内,也就是你把这个文件夹的文件弄到宿主文件夹上,就可以前后端分离部署了,如果你访问/swagger/你还可以针对性的执行二次开发!

    上面中有一个配置要注意client_max_body_size client_body_buffer_size,我感觉因该是后者,这个是限制文件上传大小的,在为服务同步项目文件的时候要用

    比如我的配置修改成2MB的限定,默认好像是1MB,至于要调整多少要看你的项目的最大文件的大小,如果超过大小的,你使用SFTP自己上传也是可以的,这个看个人需求。

如果官网的版本更新了如何升级?

停止和删除现有的容器

docker stop myspider && docker rm myspider

然后重新按照本文的从官网打包最新版本并下载。解压缩,docker load镜像,然后把之前的启动命令找出来,修改后面调用的版本号就行了。

然后试着访问下,默认管理端的页面地址为/page/index.html

打开后看到如下:

image.png

   使用默认的账号密码登陆即可!

   默认账号:admin@spider.com

   默认密码:123456

   登陆后,记得点击右上方修改密码!

image.png

   如上所示,就是登陆后台后的样子,通过上面的菜单可以大致看出PasteSpider的功能!

   以下是PasteSpider在实际环境中占用的资源情况:

image.png

image.png

image.png

   以上罗列出的是三台使用pastespider的linux服务器中pastespdier的资源占用情况,pastespider附带的服务postgres数据库(后续版本将支持mysql等)和redis缓存。第四列为内存占用,大概在137MB~253MB之间,可以看成是非常节省资源的!


    每次升级服务的文件都要打开网页找到服务,很麻烦,有更简单的办法么?

    1.直接配置SVN/GIT模式,也就是你源码提交,系统自动升级

    使用PasteSpider实现类似Jenkins的功能,让你的2G服务器也可以飞起

    2.使用PasteSpiderFile进行文件的同步和服务的升级操作!

    PasteSpiderFile文件同步器介绍!


评论列表
尘埃
tar -zxvf spider.1015.tar.gz

要先解压,然后一层一层找到.tar

然后

docker load -i spider.tar


尘埃

我的启用命令是这个

docker run -it -v "/Users/apeart/spider/:/spider/" -e ConnectionStrings:MainConnectionString="User id=postgres;Password=12345678;Host=192.168.0.29;Port=8002;Database=spiderdb;Pooling=true;MaxPoolSize=10;MinPoolSize=0;Connection Lifetime=0;" -e RedisConfig:Mainconnection="192.168.0.29:8004,password=12345678,defaultdatabase=9" --name myspider -d imgspider:1021

-e 后面的字符串是认大小写的,注意!

尘埃

如果没有redis,你也可以使用程序的内存缓存,配置信息是

-e KeeperConfig:UseRedis=false


尘埃

如果不想使用Postgresql和Redis你可以使用应用内存缓存和Sqlite数据库,配置可以参考如下:

docker run -it -v "/spider/:/spider/" -v /spider/data/:/app/data/ -p 8012:80 -e KeeperConfig:SqlDataType="sqlite" -e KeeperConfig:UseRedis=false --name myspider -d imgspider:2000


启动命令如下

docker run -it -v "/spider/:/spider/" -v /spider/data/:/app/data/ -p 8012:80 -e KeeperConfig:SqlDataType="sqlite" -e KeeperConfig:UseRedis=false --name myspider -d imgspider:2000

尘埃

介绍的顺序有点乱,好多人直接去安装postgresql了

心易暖亦会凉
哪里查看历史版本?一直用latest,会和本地的冲突!
尘埃
167 3776 1
快捷注册
热门推荐更多
PasteTalk
是在线客服系统更是在线营销系统,引入特有的页面话序机制,能够针对不同访客实现丰富的营销话语,提高开发效率!引入分词功能提升关键字命中概率,提高服务质量!;
最新动态
  • 49.****.74 正在查看 在Centos7中安装Nginx !
  • 49.****.74 正在查看 在Centos7中安装Nginx !
  • 165.****.82 正在查看 Postgresql的安装 !
  • 165.****.82 正在查看 Postgresql的安装 !
  • 50.****.220 正在查看 记PasteSpider部署工具的Windows.IIS版本开发过程之草稿-需求分析(1) !
  • 50.****.220 正在查看 记PasteSpider部署工具的Windows.IIS版本开发过程之草稿-需求分析(1) !
  • 204.****.21 正在查看 PasteSpider更新摘要,持续更新 !
  • 204.****.21 正在查看 PasteSpider更新摘要,持续更新 !
  • 51.****.53 正在查看 PasteSpider管理端从开始配置到使用 !
  • 51.****.53 正在查看 PasteSpider管理端从开始配置到使用 !
  • 1.****.152 正在查看 PasteSpiderV5版本更新内容一览 !
欢迎加入QQ讨论群 296245685 [PasteSpider]介绍 [PasteForm]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2