Organizations

46 results for 部署
  • 搭建自我信息茧房 信息茧房 是指人们关注的信息领域会习惯性地被自己的兴趣所引导, 从而将自己的生活桎梏于像蚕茧一般的 "茧房" 中的现象. 在日常自媒体资讯流当中会根据你日常习惯来推送给你所需的相关资讯, 比如喜欢日常浏览 经济 相关新闻会推送时事相关对应的新闻, 而消息提供方之中会将该账号生成 用户个人画像 指明用户希望查看到相关的 经济人士 相关资讯新闻从而等待后续相关新闻推送. 只提取自己感兴趣的新闻就像 茧 当中只看自己相关消息, 这种方式很容易封闭自己的新闻渠道 日常新闻资源得益于 rss 可以采集相关数据从而提取所需的, 这里以 知乎 官方 rss 源做解析: 知乎RSS: https://www.zhihu.com/rss 该接口可以提取出每日的新闻数据, 可以以内部的 原文url 做唯一key标识 这里提供下另外新闻 JSON 格式来做实例, 这解析 RSS 之后数据库入库的消息示例: [ { "author": "zhihu", "link": "https://www.zhihu.com/aaa", "title": "指环王动画电影《指环王:洛汗之战》发布概念海报制作特辑", "content": "测试内容AAA", "key": "2e78390ab87d41ecd3bd1f301c51e8c6", "createAt": 1729328629 }, { "author": "zhihu", "link": "https://www.zhihu.com/bbb", "title": "2024年Q3国产游戏收入创新高,点点互动产品领跑9月出海榜", "content": "测试内容BBBB", "key": "0cc44849bda5d4f6a170515041700248", "createAt": 1729328568 } ] RSS 的数据源可以通过自己编写定时 Python 脚本爬虫抓取解析处理并且做数据库入库处理
    部署 Created Sat, 19 Oct 2024 15:27:44 +0800
  • PWA应用 如果 Chrome 浏览器版本比较新就可以直接让其安装到桌面上作为应用来处理: 无论手机还是桌面浏览器都能将网页安装到桌面从而变成 APP 来使用. 这里实现的方法其实十分简单, 只需要在 html 页面上追加 manifest 声明网页元数据: <head> <link rel="manifest" href="manifest.json"> </head> 这里的 manifest.json 就是声明 PWA 的 JSON 格式配置文件, 实际上就是相当于调用本地浏览器的 Web 应用入口, 也就是 轻应用 的概念的由来, 无须复杂的桌面|移动端开发来构建的应用. manifest.json 配置是所有浏览器通用的, 这里提供 Mozilla 的官方说明: Mozilla Manifest 配置的样例如下: { "name": "HackerWeb", "short_name": "HackerWeb", "start_url": ".", "display": "standalone", "background_color": "#fff", "description": "A simply readable Hacker News app.", "icons": [ { "src": "images/touch/homescreen48.png", "sizes": "48x48", "type": "image/png" }, { "src": "images/touch/homescreen72.
    部署 Created Mon, 14 Oct 2024 14:56:59 +0800
  • MariaDB安装配置 这里主要采用 MariaDB 作为主要数据库选择, 且内部系统采用 Debian 系的服务器来利用 Apt 进行源安装. 不涉及所有手动编译, 手动编译很多人直接都不写系统脚本让系统托管, 所以尽量能用官方源托管就利用官方源, 当然如果能够自己手动配置本地源更好. 重要: 如果完全不懂系统脚本编写, 切忌不要抄网上所有自己手动编译的教程, 直接 touch 后台托管危害是十分大的. 源安装命令 一般 Linux 发行版都内置了 MariaDB 的系统源仓库, 如果没有的需要配置仓库文件( 这个问题基本集中在 RHEL 系的服务器 ). 这里可以参考官方文档配置: 官方文档 这里直接配置 Debian11 的源( MariaDB 10.7 ): sudo apt-get install -y software-properties-common dirmngr apt-transport-https sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' sudo add-apt-repository 'deb [arch=amd64,i386,arm64,ppc64el] https://mirrors.aliyun.com/mariadb/repo/10.7/debian bullseye main' 此时源配置已经完成, 就可以准备安装服务: sudo apt-get -y update sudo apt-get -y install mariadb-server 服务会自动配置到系统之中, 直接采用系统去调取服务:
    部署 Created Thu, 04 Jul 2024 01:15:23 +0800
  • 自签证书内网穿透 这里是基于内网的自签名证书对外开放服务功能, 主要流程: Linux 定时自动 生成自签证书生成放置于 Nginx 特定目录, 建议每日|每月自动更新证书数据 在生成证书的同时挂载自签证书提供对外服务, 所有服务都必须经由自签证书访问 在生成证书的同时写入到公钥和证书数据到 Redis 之中保存 对外挂起单独 Web 服务提供登录服务用于统一登录授权 用户登录认证之后服务器返回 地址+端口+证书+公钥进行 从而保存到本地挂起 Web 通过自签证书访问服务 用户从登录多个返回授权服务列表可以直接访问到内部自签名服务 具体的请求时序图如下: 这种访问方式可以在外网防止中间人窃取访问数据, 从而保证内部服务的安全可靠性; 这里采用 Python|Bash 脚本处理都行, 另外还需要知道怎么 构建自签名证书. 上面的构建自签证书需要手动输入必要的信息, 这里采用连贯命令直接单行全部编写( 先测试脚本: /etc/nginx/auto.cer.sh ): #!/bin/bash # 注意: 这个脚本最后采用 root 方式管理, 因为要Nginx重载配置 if [ $UID -ne 0 ]; then echo "require permissions, please run as root" exit 1 fi # 证书有效天数, 最好采用动态生成不断周期更新 CER_DAY=60 # 构建的动态端口起始值 CER_INDEX=2 # 转发的内网服务地址 CER_PROXY="http://127.0.0.1:3000" # 证书输出路径, 这里默认在 Nginx 上构建出来, 注意必须先创建好目录 # mkdir -p /etc/nginx/auto_ssl CER_PATH="/etc/nginx/auto_ssl" # Nginx 放置的配置加载目录, 注意必须要创建好目录 # mkdir -p /etc/nginx/auto.
    部署 Created Wed, 24 Apr 2024 21:18:35 +0800
  • Nginx多机缓存 Nginx 常用来负载均衡, 用来多个服务端反向代理内部服务器组从而获取到内部网络资源对外提供服务, 后续还有些静态资源就需要考虑多地缓存而不走直接后端流量. 常见比如网状反向服务架构, 多个对外服务Nginx同时转发到内网单机情况; 需要缓存内网资源到外部访问服务器本地, 后续资源不走内部服务器. 假设目前内网机已经部署好对外静态资源服务端, 这时候则需要在可以被对外访问得服务器上安装配置 Nginx: # 安装好 NGINX 服务 sudo apt install -y nginx 之后这里就是假设需求: 目前需要 .mp4|.mkv|.avi|.wmv 这些视频文件十分庞大且占用流量十分多, 所以在对外服务器上需要将内网服务器的资源缓存, 并且后续超时时间设定为 6 个月才重新更新缓存. 这里编写配置来处理这方面设置即可: http { # 设定 video_cache 的缓存, 路径是 /var/nginx/cache # keys_zone 设定 key 名称和名称占用, 1m 可以存放 8000 个KEY # max_size 设定目录最大空间 # use_temp_path 表示是否为临时文件缓存 # inactive 则是设定多久没有访问则清理缓存 proxy_cache_path /var/nginx/cache levels=1:2 keys_zone=video_cache:1024m max_size=200g inactive=256d use_temp_path=off; # 这里就是具体的服务编写 server { # 其他访问设定, 略 # 拦截 .
    部署 Created Fri, 22 Mar 2024 19:45:10 +0800
  • 设备唯一标识 设备唯一标识用来表示设备唯一性, 起到作用包括绑定关联广告玩家防止设备多开等, 对于 移动端 来说: IMEI: 安卓的早期设备唯一码, Android10以后该设备码失效 Android版本 < 6.0, 只需要READ_PHONE_STATE静态权限(安装App时即可获取到该权限), 即可通过系统API TelephonyManager#getDeviceId API获取准确值. 6.0 <= Android版本 <= 9.0, READ_PHONE_STATE升级为动态权限, 安装App时不会获得该权限, 需要在App运行时用户在弹窗确认授权后才可以获取 Android版本 >= 10.0, 设备不可变ID的隐私保护得到进一步升级, 需要READ_PRIVILEGED_PHONE_STATE权限才可以获取IMEI, 而该权限只有系统级别的应用才可以获得, 因此一般App无法获取到IMEI. android10以上获取不到IMEI IDFA: iOS目前主流的获取设备码方式但获取很不稳定, 用户可开启/关闭每次切换会改变为新的取值. iOS10以下的版本关闭时也能取到唯一值, >=10的iOS版本关闭时取到的值为00000000000; 系统大版本升级(如11 到 12) IDFA也会发生变化. AndroidID: Android版本 = 8.0, 应用签名|用户(即系统上的用户账号)和设备的每个组合都具有唯一的 ANDROID_ID值, 即使系统升级也不变 OAID: 中国移动安装联盟(简称MSA)制定的匿名设备标识符, 可用于android系统的补充设备标示, 通常android10以上的国内主流设备都可以获取. 具体 OAID 介绍以及最新覆盖厂商范围请详见 MSA官网 HASH_OAID: 中国移动安装联盟制定的匿名设备标识符, 国内的需要接入对应的SDK. 获取指令命令: // IMEI获取方法, android版本>=10.0 无法获取 TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); deviceId = tm.
    部署 Created Tue, 26 Dec 2023 14:20:21 +0800
  • 部署SVN服务器 虽然 Git 已经满足代码版本托管, 但是对于美术/策划等工作来说没必要搞什么代码托管或者版本管理, 只需要不断推送就行了. 这里基于 debian 系统安装 # 安装 subversion 软件 sudo apt install -y subversion # 之后创建版本库 sudo mkdir /svn && cd /svn 生成版本库 这里多版本库首先定义好子版本库, 以后不断扩展不同版本库: # 创建子版本库 code sudo mkdir -p /svn/code && cd /svn/code # 生成版本库 sudo svnadmin create /svn/code # 没问题就含有以下文件目录: # conf # db # format # hooks # locks # README.txt 这里主要修改配置文件 conf: conf/authz: 权限控制 conf/passwd: 账号密码文件 conf/svnserve.conf: 服务器配置文件 首先修改账号密码文件( conf/passwd ):
    部署 Created Mon, 04 Dec 2023 20:48:40 +0800
  • 正式环境搭建 这里需要说明所有 Linux 应用部署过程之后, 对外隐藏可能暴露的信息/接口的处理方法. PHP 隐藏版本号和禁用系统API 相关文件配置: /etc/php.ini # 在 php.ini 之中找到下列项改写 Off, 这是在响应页面 Header 之中隐藏 PHP 版本信息 expose_php = Off # 在 php.ini 之中找到下列项目追加禁用函数 disable_functions = syslog,readlink,passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,symlink,popen,putenv,fsocket,fsockopen NGINX 相关文件配置: /etc/nginx/nginx.conf 隐藏版本和禁止爬虫请求 http{ # 关闭 NGINX 版本号展示 server_tokens off; # 设置客户端下载文件最大大小 client_max_body_size 2048M } 简单排除脚本请求 排除掉某些脚本小子简单爬虫, 首先创建配置文件: sudo vim /etc/nginx/block.conf # 追加禁用配置 填写配置内容: # 只允许 GET/POST 请求 if ($request_method !~* GET|POST) { return 444; } # 防止SQL注入(仅仅针对GET) if ($query_string ~* "[;'<>].
    部署 Created Fri, 29 Sep 2023 15:42:14 +0800
  • Nginx并发限制 这种请求针对某些合法接口的 CC(Challenge Collapsar) 攻击对某些接口进行重复合法访问, 能够有效利用 Nginx 来压低访问频率. 这里面基于 Nginx 的两个模块: ngx_http_limit_conn_module: 单一IP的连接限制( 限制连接并发 ) ngx_http_limit_req_module: 单一IP的请求限制( 限制请求并发 ) ngx_http_limit_conn_module 用于对单个 IP 地址限制连接数, 只有正常处理HTTP标头的时候才会被计算为一个连接; 这种请求下, 可以识别出单个 IP 是否只请求连接而不进行任何处理卡住访问链接. 这里配置如下: # 这里是 HTTP 请求, 所以放置于 HTTP 块配置之中 http { # 这里需要在内存之中定义内存区放置请求的标识区域, 注意重启会释放这块区域 # 关键点: # 1. 设置名为 `limitaddr` 的共享内存区域 # 2. 内存区以 `$binary_remote_addr(客户端请求地址)` 为唯一标识 # 3. 记录保存最大空间 `10m`, 可以根据内存情况和请求情况配置 limit_conn_zone $binary_remote_addr zone=limitaddr:10m; # 也可以直接限制唯一标识 limit_conn_zone $server_name zone=limitserver:10m; ...... # 之后就是在 HTTP 服务区使用 server { .
    部署 Created Fri, 29 Sep 2023 15:41:04 +0800
  • Java开发环境搭建 这里需要说明内部的环境需要区分: 开发测试环境(Development), 这里一般采用 Docker/虚拟机开发. 正式部署环境(Production), 这里习惯性由 Tomcat 托管 War 包或者直接 Jar 写入系统服务. 而且一般部署都是基于 Linux 环境, 所以基本上对于正式部署来说只需要处理 Linux 平台. 这里的采用平台是Debian系统, 剩下发行版大同小异; 且这里采用系统源安装, Java 版本采用系统默认版本来处理, 可以自己手动调整源安装 Java1.8. 对于正式服务器, 只需要安装 java 命令就行, 常规的直接命令挂起: # 最好不要安装 JDK, package.jar 是自己打的 Jar 包 java -jar package.jar # 直接前台运行, 如果想正规启用需要编写成系统应用, 这里仅仅是作为测试不做展开. Linux测试搭建 安装 Java/Jdk: apt install -y default-jre # 安装默认Java运行时 java -version # 安装成功之后就会显示 openjdk 输出 apt install -y default-jdk # 安装默认Java开发包 javac -version # 安装之后会显示版本信息 此时已经安装完成, 这时候就要配置好相关的 JAVA_HOME/CLASSPATH 环境变量, 这里可以先命令查看到路径:
    部署 Created Fri, 29 Sep 2023 15:39:55 +0800