首页 文章 精选 留言 我的

精选列表

搜索[个人知识库],共10005篇文章
优秀的个人博客,低调大师

个人服务器运维指南 (持续更新)

去年我写了一篇文章: 当我有一台服务器时做了什么。当时为了不至于浪费我在阿里云低价优惠买的服务器,于是使用 docker 跑了一个应用,并参照我司的技术架构搭建了相关的基础设施。 现在仔细想来,这些经验也非常有益于有一台服务器却不知所措的人,于是有了本系列文章,希望能够帮助到那些服务器买来已久却在吃灰的人。 另外如果你是一个自由开发者,本系列文章或许对你环境搭建也会有些许启发。 如果对你能够有所帮助,可以帮我在 shfshanyue/op-note 上点个 star。 如果你是新人的话,目前在阿里云买机器会有优惠,可以点击 链接 购买 邀请你一起 86元/年 购买云服务器 目录 序 序·当我有一台服务器时我做了什么 [序·当我有一台服务器时我做了什么(2019)]() - TODO 如果没有服务器 如果你只想搭一个博客 [静态网站托管: netlify]() - TODO [免费的 API Server 与数据存储]() - TODO [申请你的域名邮箱]() - TODO [使用 sentry 做异常监控]() - TODO 服务器初始化配置 服务器初始登录配置:ssh-config 服务器ssh key 以及 git 的配置 · (掘金) 系统信息查看相关命令 使用 vim 及其配置 窗口复用与 tmux openvpn 配置与内网安全 - TODO 自动化运维 使用 ansible 做自动化运维 ansible 中的细节问题 - TODO docker 与应用开发 使用 docker 高效部署前端 部署异常监控服务 Sentry k8s 与应用开发 搭建一个 k8s 集群 部署你的第一个应用: Pod,Deployment 与 Service · (掘金) 通过外部域名访问你的应用: Ingress · (掘金) 自动为你的域名添加 https 部署利器 Helm 安装及简介 监控 linux 各项监控指标 [linux 监控与报警]() - TODO 高频 linux 命令 sed awk jq iptables htop 00 如果没有服务器 · PaaS 随着 PaaS 的流行, 没有钱没有服务器也可以作很多事情。如 netlify 托管网站 github 托管私有仓库,并结合 github action 做 CI/CD quay 构建镜像 cloudflare 免费的 CDN sentry 异常上报 aws-lambda 简单的 API 如果说有什么缺陷的话,那就是因为网络而造成的速度问题了。 本章目录如下 如果你只想搭一个博客 [静态网站托管: netlify]() - TODO [免费的 API Server 与数据存储]() - TODO [申请你的域名邮箱]() - TODO [使用 sentry 做异常监控]() - TODO 01 服务器初始化配置 当我有了服务器时,我应该先在上边做点什么准备工作? ssh-config: 方便很快地进入服务器 ssh key: 方便 git 的设置,以及与其它服务器相互 ssh vim/tmux: 方便在 linux 下工作 htop/rsync/lsof/git/...: 等基础软件与依赖的配置 如果使用 ansible,能够在三分钟内快速配置完所有前置准备工作。 本章目录如下 服务器初始登录配置:ssh-config 服务器ssh key 以及 git 的配置 系统信息查看相关命令 使用 vim 及其配置 窗口复用与 tmux openvpn 配置与内网安全 - TODO 02 自动化运维 在做服务器初始的准备工作中,如果只有一台服务器就很简单,但是有了多台就需要考虑一下自动化运维了 使用 ansible 做自动化运维 ansible 中的细节问题 - TODO 03 docker 与应用开发 当服务器的准备工作结束后,就可以使用它部署一些服务或者简单的应用了: 一个简单的静态博客,能够了解前端部署的大致流程 postgres/redis,做一些测试,存一些有用的数据 一个有状态的后端应用,并用 docker 部署,简单了解后端部署以及前后端配合的大致流程 nginx 的反向代理 https 证书 如果你刚刚接触服务器,我建议你学习并实践下 docker,不管你是一个前端还是后端都会大有裨益,目录如下 使用 docker 高效部署前端 部署异常监控服务 Sentry 04 kubernetes 与应用开发 如果你有多台服务器,建议尽可能搭建一个 k8s cluster。结合 kubernetes 与 helm,部署也变得相当简单了 搭建一个 k8s 集群 部署你的第一个应用: Pod,Deployment 与 Service 通过外部域名访问你的应用: Ingress · (掘金) 自动为你的域名添加 https 部署利器 Helm 安装及简介 05 监控 linux 各项监控指标 [linux 监控与报警]() - TODO 06 高频 linux 命令 记录下来备忘 sed awk jq iptables htop

优秀的个人博客,低调大师

如何推送个人项目至Maven中央仓库

1. 开篇 前段时间使用Gitee仓库搭建了一个Maven私有仓库,将一些开源包放到上面去,感觉使用起来还是不太方便,最近就折腾将这些包提交到Maven的中央仓库中。项目第一次提交Maven还是挺麻烦的,所以写个文章Mark一下。 2. 操作步骤 2.1. 提交申请 注册一个sonatype.org帐号,登陆并提交一个issue,没错,就是提交一个issue,具体可参考如下: 其中: 问题类型:一定要选New Project; 概要:填项目名称; 描述:可不填; Group Id:填写你的项目ID,需注意的是这个Group Id对应的域名需要是你持有的,后续会验证这项; Project URL:就是项目主页地址; SCM url:就是Git仓库地址; username:填写你在sonatype JIRA的用户名,也可以填写别人的,这个用户名用于推送项目,所以要注意。 Already Synced to Central:是指你是否准备好提交到中央仓库了,应该是给官方人员判断是否需要优先处理。 2.2. 配置项目 2.2.1. 配置settings.xml 在Maven的settings.xml文件中增加<server>配置,配置你sonatype的账号密码,参考如下: <servers> <server> <id>sonatype-nexus-snapshots</id> <username>demo</username> <password>******</password> </server> <server> <id>sonatype-nexus-staging</id> <username>demo</username> <password>******</password> </server> </servers> 2.2.2. 配置pom.xml 增加license、scm、developer信息。 <licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <scm> <tag>master</tag> <url>git@gitee.com:centy/xxl-job-spring-boot-starter.git</url> <connection>scm:git:git@gitee.com:centy/xxl-job-spring-boot-starter.git</connection> <developerConnection>scm:git:git@gitee.com:centy/xxl-job-spring-boot-starter.git</developerConnection> </scm> <developers> <developer> <name>centychen</name> <email>292462859@qq.com</email> </developer> </developers> 增加release的profile配置,注意:distributionManagement.snapshotRepository和distributionManagement.repository的id需与settings.xml中对应的server记录ID一致;distributionManagement的url根据官方反馈的url修改。 <profiles> <profile> <id>release</id> <build> <plugins> <!-- Source --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <!-- Javadoc --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <!-- GPG --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.5</version> <executions> <execution> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> <!--Compiler--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>1.8</source> <target>1.8</target> <fork>true</fork> <verbose>true</verbose> <encoding>UTF-8</encoding> <showWarnings>false</showWarnings> </configuration> </plugin> <!--Release--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.5.3</version> </plugin> </plugins> </build> <distributionManagement> <snapshotRepository> <id>sonatype-nexus-snapshots</id> <name>Sonatype Nexus Snapshots</name> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> </snapshotRepository> <repository> <id>sonatype-nexus-staging</id> <name>Nexus Release Repository</name> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> </distributionManagement> </profile> </profiles> 2.3. 安装及配置PGP Mac安装PGP,我是通过brew安装的,使用命令brew install gpg执行安装; 使用命令gpg --gen-key生成公私钥,按照提示信息一步步操作,需要记住加密使用的Passphrase,下面步骤需使用; 上传公钥至公钥服务器,可通过gpg --list-keys查看公钥ID,通过一下命令上传: gpg --send-keys [公钥ID] --keyserver hkp://keyserver.ubuntu.com:11371 2.4. 构建并部署 2.4.1. 构建SNAPSHOT版本 版本号修改为***-SNAPSHOT格式,如1.0.0-SNAPSHOT。 执行以下命令开始构建: mvn clean deploy -P release -Dmaven.test.skip=true Deploy的时候会弹出一个输入Passphrase的页面,输入刚才生成pgp公私钥使用的密码。 构建完成后,在https://oss.sonatype.org/content/repositories/snapshots中应该可以找到刚刚提交的snapshot版本。 2.4.2. 构建RELEASE版本 版本号修改为***-RELEASE或者无后缀格式,如1.0.0-RELEASE、1.0.0。 构建并Deploy mvn clean deploy -P release -Dmaven.test.skip=true Deploy的时候会弹出一个输入Passphrase的页面,输入刚才生成pgp公私钥使用的密码。 登陆https://oss.sonatype.org/,点击左侧Staging Repositories,输入你的group id查找,可看到deploy记录: 选中Deploy记录点击Close并Confirm,刷新后会发现记录状态已经变成Closed。 再选中记录点击Release并Confirm完成发布,发布完成后需要等待中央仓库同步,我是等了1个多小时才能在中央仓库搜索出来。 3. 可能踩到的坑 3.1. gpg: signing failed: Inappropriate ioctl for device 使用mvn clean deploy命令构建时,可能会报gpg: signing failed: Inappropriate ioctl for device,是因为无法弹出Passphrase页面,需要在系统环境变量中增加export GPG_TTY=$(tty)。 3.2. Access denied to staging repository 如果Deploy的时候报 Access denied to staging repository...等错误,恭喜你,你的帐号权限有问题,需要再提一个issue处理该问题,可参考我提的issue。 3.3. 在Staging Repositories中执行Close操作不成功,状态依然是Open。 应该是执行close操作的数据校验有问题,比如pom.xml信息缺失等,我第一次提交的时候就没有在pom.xml中配置project name,校验就没有通过。留意页面下方Activity中的错误信息即可。

优秀的个人博客,低调大师

用阿里云产品搭建个人网站全教程

申明:这是整体流程,看完这个你至少知道搭建网站怎么个流程了,相当于一个说明书,具体操作时,阿里会给你提示的,很人性化.建站的三个核心关键步骤1注册域名建议直接在阿里云注册,方便快捷,管理也方便,还有优惠呦,附阿里云域名优惠口令【优惠口令】com英文域名续费:珠光宝气cn英文域名续费:诸事顺利令不定期更新,仅PC端适用,仅普通词适用,限时限量,最新的优惠口令可以扫描下图中二维码关注阿里云域名公众号,然后直接在公众号中回复“优惠口令”即可获取 2买阿里云服务器主要分两种,一是轻量应用型的轻量应用服务器,二是ECS云服务器,分为国内、香港以及海外的。如何选择看你需求。3.备案备案是指域名指向国内服务器的用户,需要提交备案申请。如您域名指向海外或香港服务器,则无需进行域名备案。4.部署项目(网站)简单来说就是将网站程序上传部署到阿里云服务器

优秀的个人博客,低调大师

jpush-react-native android端集成——个人记录

为什么选用极光?因为这个 jpush-react-native 是极光官网维护的 ,而且关于原生方面配置也不是很多,方便搞前端从事RN的同学使用。 官网注册 账号https://www.jiguang.cn/,获取 AppKey image.png 自动link配置 npm install jpush-react-native --save rnpm link jpush-react-native 我这里报错了 需要 link jcore-react-native Project :app declares a dependency from configuration 'compile' to configuration 'default' which is not declared in the descriptor for project :jcore-react-native. 执行完 link 项目后可能会出现报错,需要手动配置一下 build.gradle 文件。 如果没有 手动加上 image.png image.png image.png 在AndroidManifest 添加 <meta-data android:name="JPUSH_APPKEY" android:value="${JPUSH_APPKEY}" /> <meta-data android:name="JPUSH_CHANNEL" android:value="${APP_CHANNEL}" /> 配置好后 sync 同步 一下项目, jpush-react-native 以及 jcore-react-native 作为 android Library 项目导进来了。 在app 下的 MainApplication.java 文件,加入 JPushPackage import cn.jpush.reactnativejpush.JPushPackage; @Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), ..... new JPushPackage(SHUTDOWN_TOAST, SHUTDOWN_LOG) //注意 在 MainApplication类下要定义 这两个变量 在下图位置 private boolean SHUTDOWN_TOAST = false; private boolean SHUTDOWN_LOG = false; ); } image.png 在 MainActivity.java下添加如下代码 别忘记导入包 import cn.jpush.android.api.JPushInterface; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); JPushInterface.init(this); } @Override protected void onPause() { super.onPause(); JPushInterface.onPause(this); } @Override protected void onResume() { super.onResume(); JPushInterface.onResume(this); } @Override protected void onDestroy() { super.onDestroy(); } Android 配置到这里已经完成,然后就是RN 中的使用 在我们工程的根目录下 componentDidMount(){ // 接收自定义消息 JPushModule.addReceiveCustomMsgListener((message) => { console.log("message :" + JSON.stringify(message)) }); // 接收推送通知 JPushModule.addReceiveNotificationListener((message) => { //这种情况 是一般 我们app处于运行状态 下会触发 console.log("接受通知: " + JSON.stringify(message)); }); // 打开通知 JPushModule.addReceiveOpenNotificationListener((map) => { console.log("打开通知!"); //这里的 map.extras //可选设置的键值对 //map.alertContent //推送的消息内容 //ios 是 alert console.log(JSON.stringify(map)) console.log("map.extra: " + map.extras); // 在这里 就可以处理 我们的路由跳转了 根据 我们推送的时候 约定好的键值对 image.png 这里有个可选项 可以判断我们的路由跳转等 image.png 这里我们只是手动发送推送,进行测试,还要服务层配合我们 后台集成推送 主动触发 。 android效果 ios端集成待更新

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册