ssh私钥权限问题,导致登录服务器时,提示异常
1 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
解决这个问题的一个手段是将它的权限设置为700
1 | chmod -R 700 .ssh/ |
ssh私钥权限问题,导致登录服务器时,提示异常
1 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
解决这个问题的一个手段是将它的权限设置为700
1 | chmod -R 700 .ssh/ |
本文记录一下将jar上传到maven中央仓库的全过程,文中项目依托在github上,使用的是mac环境 (关于maven、jdk的环境配置不属于本文内容)
文件迭代遍历,如下
1 | function read_file() { |
借助acem.sh
来迅速实现let’s encrypt的泛域名ssl证书颁发与续期,基本上五分钟就可以解决战斗
本文主要内容来自acme.sh的官方wiki,一切以官方说明为准: acme wiki
centos 6 修改方式
1 | # 修改hostname,立即生效 |
centos 7 修改方式
1 | # 修改hostname,立即生效 |
直接使用grep 发现一个奇怪的问题,居然提示
1 | $ grep 'error' cic.log |
grep如果碰到\000 NUL字符,就会认为文件是二进制文件。必须加上-a或–text选项强制让grep认为是文本文件才可以看到正常的结果
因此解决方案是:
1 | $ grep 'error' cic.log --text |
简单记录一下http代理服务器tinyproxy的搭建与简单配置过程
1 | # 安装 |
本文参考自: 重写代理链接-url-rewrite
使用nginx做发现代理,遇到一个场景,匹配 /console/
开头的域名,转发到目标端口号,但是希望转发过去的url,去掉 /console/
这个头
针对这个,可以借助 rewrite
+ proxy_pass
来实现
1 | location /console { |
nginx配置完毕之后,添加一个html页面,访问直接500错误,通过查看错误日志,显示 failed (13: Permission denied)
解决方法,修改配置文件中的user
为root
1 | vim /etc/nginx/nginx.conf |
修改完之后,重启即可
1 | nginx -s reload |
记录一下curl通过代理访问目标网站的几种姿势
原文请参考: How to use curl command with proxy username/password on Linux/ Unix
语法:
1 | curl -x '协议://[用户名:密码@]ip[:端口号]' url |
现在站点不挂个https,就连微信分享都开不了,然而商用https证书又特别贵,作为草根想搞个https证书,有下面两种方案:
下面手把手教你利用let’s encrypt进行证书申请
centos域名绑定与生效
1 | # 修改域名 |
ngxin 开启gzip压缩,减少数据包大小,默认场景下nginx没有开启gzip压缩,需要主动指定
关键配置修改如下(进入配置文件 nginx.conf)
1 | http { |
修改完毕之后重启nginx即可
1 | nginx -s reload |
之前在使用redis的case中,更多的只是单机的使用;随着业务的增长,为了更好的性能提供,集群是一个必然的发展趋势;下面记录一下搭建集群的步骤
单机安装手册,可以查看: 单机redis安装手册
docker要求使用root权限进行启动,但是启动之后,普通的账号会发现没有访问docker的权限,然而每次都使用root进行访问过于麻烦,那么有办法让普通账号也能正常访问么?
基于gittalk搭建个人站点的评论的完整记录,特别是遇到的一些鬼畜的问题,如Error not found, 404问题,Validation Failed(422)校验失败问题等,为大家避免采坑提供一些参考
ssh登录远程服务,忽然提示su: failed to execute /bin/bash: 资源暂时不可用
,然后通过root账号登录服务器没有问题,但是使用su切换用户时,依然失败,提示上面的错误,搜索一下可能原因是线程数沾满,杀掉一些占用大量线程的进程即可;然后记录下linux下线程数的相关操作
统计项目某个某个时间段的行数
1 | git log --author="$(git config --get user.name)" --before='2018-12-31 23:59:59' --after='2018-01-01 00:00:00' --pretty=tformat: --numstat | awk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' |
shell命令获取当前系统时间并格式化的方式记录
1 | time=$(date "+%Y-%m-%d %H:%M:%S") |
常见用于管道的处理中,拿到前面的数据进行后续的处理;
xargs 以空白字符或换行作为分割,默认使用echo输出结果,且会忽略空白行,官方说明如下
xargs reads items from the standard input, delimited by blanks (which can be protected with double or single quotes or a backslash) or newlines, and executes the command (default is /bin/echo) one or more times with any initial-arguments followed by items read from standard input. Blank lines on the standard input are ignored.
当我们希望项目打包为一个可执行的jar文件,丢到服务器上运行时,可以怎么做?借助maven。可以比较简单的实现这个
在pmo依赖文件中,添加下面的依赖
1 | <build> |
注意上面的mainClass标签中,指定的是main方法执行入口,上面这种打包方式,会将所有依赖的第三方包,也一同打包到最终生成的jar文件中
即,这个jar文件,包含了所有的依赖和业务代码,可以直接运行,执行方式
1 | java -jar xxx.jar |
源码验证case:
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
使用timedatectl命令同步时间并设置时区
1 | timedatectl -h |
1 | timedatectl |
1 | timedatectl set-time "YYYY-MM-DD HH:MM:SS" |
1 | timedatectl list-timezones |
1 | timedatectl set-timezone Asia/Shanghai |
1 | # 硬件时间默认为UTC |
1 | timedatectl set-ntp yes |
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
通过ssh免密方式登录远程服务器, 配置比较简单,就是讲自己的rsa公钥放在远端服务器的授权文件中
1 | vim ~/.ssh/authorized_keys |
平常工作中,经常会出现的一个case就是查询端口号占用情况,一般在linux下使用netstat
,在mac下则使用lsof
;本篇则记录下Linux之netstat命令的使用
最常用的一个查看端口号占用命令:
1 | netstat -alnp | grep port |
背景:
实际开发过程中,经常可能遇到的一个问题,当你在dev分支上正开发得happy的时候;突然来了个线上bug,得赶紧从release分支上切一个bugfix分支来解决线上问题,这个时候,正在开发的东西,就得暂存了
之前对于Git只是简单的了解了下,只处于入门的会用级别,遇到上面这个问题,采取的是一个比较笨的方案:
1 | # 1. 将当前改动保存,并提交一个tmp commit |
原来的域名过期了,重新买了一个hhui.top
,正好重新的配置一下,针对之前写过的几个不同的东西,通过不同的子域名来进行区分,因此简单记录一下nginx的多域名配置
因为资金有限,只有一台服务器,但是这个服务器上干的事情却不止一件,当前的状况是有下面几个
所以这台服务器上,从应用角度出发,有五个不同的功能的服务,主要区分为两类:
五个服务,会配置五个不同的子域名:
拿简单的 zweb 和 mweb 来设置,直接映射即可
1 | server { |
简单来讲,一个子域名对应一个配置项,设置其中的server_name
为目标域名
然后就是设置root,映射到不同的前端地址即可
个人博客虽然也是静态页面,但是不太一样的是博客的源码托管在git上,并借助了github的page服务,因此实际访问的域名会多一个后缀,如
1 | https://liuyueyi.github.io/hexblog/ |
所以如果直接用上面的方法,会导致js和css文件404,主要是因为借助hexo搭建博客时,指定了path路径,所以要做一个简单的域名匹配
1 | server { |
上面的配置,相比较前面的,主要就是拦截了下默认的首页,强制跳转到指定的目录下
1 | server { |
常见的代理转发配置了,nginx作为代理,将请求转发到Tomcat,也就那么一个简单的配置,主要利用的是 proxy_redirect
主要记录一个简单的配置,关于nginx详细的配置相关,之前写过一个博文,加上友情链接
上面配置体验:
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
在Github上也写了不少的项目了,然后经常遇到的一个问题就是,很多自己写的项目,希望在另外一个项目中使用时,只能把这个项目下载下来,相当之不方便
因为大多数的java后端项目都是基于maven管理依赖的,所以就希望能有一个公共的maven仓库,可以把自己的项目扔进去,然后再应用就方便很多了
基于此,就有了本文这个教程了
新建一个repository的前提是有github帐号,默认看到本文的是有帐号的
首先是在github上新建一个仓库,命令随意,如我新建项目为
本地指定一个目录,新建文件夹 maven-repository
, 如我的本地配置如下
1 | ## 进入目录 |
这个目录结构为什么是这样的?
我们直接看maven配置中默认的目录结构,同样拷贝一份出来而已
将本地的仓库和远程的github仓库关联起来,执行的命令也比较简单了
1 | git add . |
接着就是进行分支管理了
所以需要新创建两个分支
1 | ## 创建snapshot分支 |
项目的deploy,就需要主动的指定一下deploy的地址了,所以我们的deploy命令如下
1 | ## deploy项目到本地仓库 |
上面的命令就比较常见了,主要需要注意的是file后面的参数,根据自己前面设置的本地仓库目录来进行替换
每次进行上面一大串的命令,不太好记,特别是不同的版本deploy到不同的分支上,主动去切换分支并上传,也挺麻烦,所以就有必要写一个deploy的脚本了
由于shell实在是不太会写,所以下面的脚本只能以凑合能用来说了
1 | #!/bin/bash |
将上面的脚本,考本到项目的根目录下,然后执行
1 | chmod +x deploy.sh |
基于此,整个步骤完成
上面仓库的基本搭建算是ok了,然后就是使用了,maven的pom文件应该怎么配置呢?
首先是添加仓库地址
添加仓库
如果要区分snapshot和release的话,如下配置
1 | <repositories> |
如果不care的话,直接添加下面的即可
1 | <repositories> |
仓库配置完毕之后,直接引入依赖即可,如依赖我的Quick-Alarm包,就可以添加下面的依赖配置
1 | <dependency> |
基于hexo + github pages搭建的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
尽信书则不如,已上内容,纯属一家之言,因本人能力一般,见识有限,如发现bug或者有更好的建议,随时欢迎批评指正,我的微博地址: 小灰灰Blog
Update your browser to view this website correctly. Update my browser now