Monthly Archive 一月 2019

By柏小白

有哪些鲜为人知,但是很有意思的网站?

扩展阅读

工具类

图片/视频工具

IT/AI/工具类

音乐/影视类

二次元/动漫类

文艺类

网盘/搜索类

文学/百科类

实用/行政类

趣味/无聊类

声音/太空类

怀旧类

游戏/测试类

网站之最

特别推荐

原文地址:

 

By柏小白

Linux中设置服务自启动的三种方式

有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务

主要用三种方式进行这一操作:

ln -s                       在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0~6七个运行级别之一)

chkonfig                命令行运行级别设置

ntsysv                   伪图形运行级别设置

 

注意:1.这三种方式主要用于以redhat为基础的发行版

2.如果还不知道运行级别是什么,那么最好先看看相关资料再实验

 

第一种方式:ln -s 建立启动软连接

在Linux中有7种运行级别(可在/etc/inittab文件设置),每种运行级别分别对应着/etc/rc.d/rc[0~6].d这7个目录

Tips:/etc/rc[0~6].d其实是/etc/rc.d/rc[0~6].d的软连接,主要是为了保持和Unix的兼容性才做此策

 

这7个目录中,每个目录分别存放着对应运行级别加载时需要关闭或启动的服务

由详细信息可以知道,其实每个脚本文件都对应着/etc/init.d/目录下具体的服务

K开头的脚本文件代表运行级别加载时需要关闭的,S开头的代表需要执行

因此,当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软链接即可

[root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动

如果需要在多个运行级别下设置自启动,则需建立多个软链接

这种方式比较繁琐,适用于自定义的服务脚本

如果系统中已经存在某些服务(比如安装apache时就会有httpd服务项),可以使用下面的两种方式

 

第二种方式:chkconfig

如果需要自启动某些服务,只需使用chkconfig 服务名 on即可,若想关闭,将on改为off

在默认情况下,chkconfig会自启动2345这四个级别,如果想自定义可以加上–level选项

上面我们先将sshd服务的所有启动级别关闭,然后使用–level选项启动自定义级别

Tips:–list选项可查看指定服务的启动状态,chkconfig不带任何选项则查看所有服务状态

 

第三种方式:ntsysv 伪图形

ntsysvchkconfig其实是一样的,只不过加上了图形而已

启动ntsysv有两种方式,一是直接在命令行中输入ntsysv,二是使用setup命令,然后选择系统服务

默认情况下,当前运行级别为多少,在ntsysv中设置的启动服务的级别便是多少

比如,我当前的运行级别是3,那么我在伪图形界面中选择启动服务后,它的运行级别也会是3

如果想自定义运行级别可使用ntsysv –level方式

 

以上三种操作需要保证服务脚本文件可执行,并且要有root权限

其中,第一种方式多用于自定义脚本,第二、三种多用于系统已存在的服务

比如ftp、samba、ssh、httpd等等

并且,要做相关设置需要弄清楚运行级别的问题

 

Tips:如果想手动启动某服务,传统的方式是 /etc/init.d 服务名 start

实际上还可以这样,service 服务名 start

转自:https://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html

By柏小白

jenkins配置记录(1)–添加用户权限

 

这样我直接用QQ截图直接粘贴就可以把简书的外链图片全部替换成本地图片链接了。

前一阵子在线上部署了一套jenkins环境,作为线上代码发布平台使用。
部署记录:http://web.xn--w0sz4as21fs7k.com/?p=1895

下面重点记录下jenkins安装后的一些配置:

(1)添加用户权限

jenkins初次登陆后,要先注册一个用户作为管理员:

依次点击“系统管理”->“Configure Global Security”

1548228117-5908-6-20161101155031049-98639631

 

如下:
选择“启用安全”模式,
“安全域”->“Jenkins专用用户数据库”->不选择“允许用户注册”(如果此处选择了”允许用户注册“,那么任何人都可以注册,只是注册后没有任何的操作权限,登陆后会提示“Access Denied,没有Overall/Read权限”,还是需要在管理员账号下授权后才能操作)。先注册一个管理员账号,然后在管理员下创建普通账号,再授予这些账号相应的操作权限。
“授权策略”->“项目矩阵授权策略”,添加账号。

1548228114-9862-20161101155821643-1395315569

 

 

首先添加一个admin账号作为管理员,先”应用“,注意这个时候千万别点击“保存”。由于admin用户还没有注册,所以这里添加到权限策略内会显示红色,等后面将这个admin用户注册后就会变成正常的绿色。

1548228116-5046-20161101160747565-2035208245

如上,点击“应用”后,再点击回到“jenkins”首页,会提示进行注册,则使用上面添加的管理员账号admin进行注册

1548228113-2373-20161101161617236-510924690

 

注册成功后,就可以用管理员admin账号登陆了

1548228118-2462-20161101161240080-369601404

 

在管理员账号下就可以创建普通用户

依次点击“系统管理”->“管理用户”

1548228119-9716-20161101161442315-1791228697

 

1548228121-9704-20161101161518721-415777939

1548228122-1515-20161101161729580-1298369009

 

然后在“系统管理”->“Configure Global Security”的->“授权策略”->“项目矩阵授权策略”里授予wangshibo用户相应的权限。
由于wangshibo用户已经注册好了,所以这里添加进去后是绿色的

1548228124-1199-20161101162206315-1425033646

其他用户的添加步骤跟上面一样操作即可。

一般而言,除了运维人员(管理员)具有所有项目操作的权限外,一般只给开发人员(通常是项目组的负责人)Beta环境下的项目操作权限。如下,只给caogaokui和yuxiaogang这两个用户设置构建项目的权限。

 

“系统管理”->“管理用户”->“创建用户”

1548228125-4966-20161103011609580-190636434

“系统管理”->“Configure Global Security”->“授权策略”->“项目矩阵授权策略”

1548228126-7193-20161103012153799-1436603609

 

 

然后再相应的项目构建配置里,“启用项目安全”,将相应的用户添加进去,赋予操作权限,说明他们对该项目由构建的权限。如下:

1548228127-6465-20161103011954471-850219423

1548226500-9090-20161103011954471-850219423

 

By柏小白

Jenkins安装及入门配置

一、安装Jenkins

Jenkins是开源的,使用Java编写的持续集成的工具,在Centos上可以通过yum命令行直接安装。记录下安装的过程,方便以后查找。需要先安装Java,如果已经Java可以跳过该步骤。

安装Java

看到当前系统Java版本的命令:

java -version

如果显示Java版本号,说明已经正确安装,如果显示没有该命令,需要安装Java:
sudo yum install java

该命令如果检测到Java不存在可以直接安装Java,如果已存在则可以升级Java。

最新版本Jenkins安装**

首先要先添加Jenkins源:

sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo

sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

添加完成之后直接使用yum命令安装Jenkins:

yum install jenkins

历史版本安装

通过yum直接安装的是最新版本的Jenkins,必须使用JDK1.8,,由于我们使用的是jdk1.7,所以需要安装历史版本的jenkins。以下是安装步骤。

一、下载历史版本

https://jenkins.io/网站,点击下载进入下载页面

1548227927-8497-2223516-d8a8a896f5499066
image

选择对应操作系统

1548227928-8663-2223516-e4e498d842434397
image

选择版本,由于2.54以上的版本需要JDK1.8,所以我们选择选择低版本,这里选择使用2.46.3的版本

1548227931-5418-2223516-5c68677cb31029ef
image

将下载下来的rpm文件上传到服务器

1548227934-9764-2223516-e055089c2e917312
image

首先先添加Jenkins源:

sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo

sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

使用rpm命令安装jenkins

1548227932-4578-2223516-16b272eead3aae31
image

启动Jenkins

使用命令启动Jenkins:

sudo service jenkins start

Starting Jenkins [ OK ]

在浏览器中输入:http://<服务器ip>:8080/ 就可以进入Jenkins界面直接使用了 。

停止Jenkins服务的命令为:

sudo service jenkins stop

相关配置

Jenkins安装目录:

/var/lib/jenkins/

Jenkins配置文件地址:

/etc/sysconfig/jenkins

这就是Jenkins的配置文件,可以在这里查看Jenkins默认的配置。

cat jenkins

这里介绍下三个比较重要的配置:

  • JENKINS_HOME
  • JENKINS_USER
  • JENKINS_PORT

JENKINS_HOME是Jenkins的主目录,Jenkins工作的目录都放在这里,Jenkins储存文件的地址,Jenkins的插件,生成的文件都在这个目录下。

<pre class="md-fences md-end-block" lang="shell" contenteditable="false" cid="n105" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, &quot;Liberation Mono&quot;, Courier, monospace; font-size: 0.9em; white-space: pre; display: block; break-inside: avoid; text-align: left; background: var(--code-block-bg-color); background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(221, 221, 221); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">## Path:    Development/Jenkins
## Description: Jenkins Continuous Integration Server
## Type:    string
## Default:   "/var/lib/jenkins"
## ServiceRestart: jenkins
#
# Directory where Jenkins store its configuration and working
# files (checkouts, build reports, artifacts, ...).
#
JENKINS_HOME="/var/lib/jenkins"</pre>

JENKINS_USER是Jenkins的用户,拥有$JENKINS_HOME和/var/log/jenkins的权限。

<pre class="md-fences md-end-block" lang="shell" contenteditable="false" cid="n108" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, &quot;Liberation Mono&quot;, Courier, monospace; font-size: 0.9em; white-space: pre; display: block; break-inside: avoid; text-align: left; background: var(--code-block-bg-color); background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(221, 221, 221); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">## Type:    string
## Default:   "jenkins"
## ServiceRestart: jenkins
#
# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins.
#
JENKINS_USER="jenkins"</pre>

JENKINS_PORT是Jenkins的端口,默认端口是8080,我们这里修改为8000。

<pre class="md-fences md-end-block" lang="shell" contenteditable="false" cid="n111" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, &quot;Liberation Mono&quot;, Courier, monospace; font-size: 0.9em; white-space: pre; display: block; break-inside: avoid; text-align: left; background: var(--code-block-bg-color); background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(221, 221, 221); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">## Type:    integer(0:65535)
## Default:   8080
## ServiceRestart: jenkins
#
# Port Jenkins is listening on.
# Set to -1 to disable
#
JENKINS_PORT="8000"</pre>

主要问题

一、没有那个文件或目录

1548227935-5894-2223516-a5955ae08a2a75fb
image

这是由于找不到jdk目录报的错,只要修改/etc/init.d/jenkins配置文件,配置下jdk目录就好了。

1548227937-8885-2223516-b03bf8102d7619b6
image

保存,重新启动,启动成功

1548227938-4914-2223516-6dc3cab073eb5792
image

二、Jenkins的访问

验证jenkins是否运行正常,通过访问http://localhost:8000

这里有一个临时密码需要输入,在/home/tomcat/.jenkins/secrets/initialAdminPassword里面

1548227939-5880-2223516-6411c1e94adceae7
image

输入密码进入:

1548227941-1161-2223516-33c7ded732879540
image

这里选择把建议的插件全装上去

1548227942-3286-2223516-a03b47b94c74d5a6
image

–设置用户名和密码

1548227943-8985-2223516-84300bb4d31c1088
image

保存,进入主界面

1548227945-5214-2223516-10d4e95114675bb5
image

三、主要配置

系统配置

点击系统管理-系统设置配置邮件通知,通过Test测试,能收到邮件表明配置成功

1548227946-3405-2223516-c62e65781d022202
image

点击系统管理-管理插件,安装SSH插件

1548227948-8138-2223516-527b98d617bc4c88
image

这样,在配置邮件的下面就会有Publish over ssh选项

1548227949-3719-2223516-713f24e65b1910ca
image

配置远程ssh主机地址,通过Test返回success表示配置成功

1548227952-5047-2223516-51bfb993fe4c709a
image

点击保存

全局工具配置

系统管理-全局工具配置,配置JDK,Git,Maven等信息。

1548227954-7097-2223516-b0136eba51d2beec
image

四、新建项目

安装Git plugin插件,注意,由于我们使用的是旧版的jerkin,所以直接安装Git plugin插件是失败的,所以我们需要自己手动下载安装。

插件手动安装步骤

1、下载插件

首先,在可选插件上面过滤输入git,就可以搜索到Git plugin插件,点击此插件

1548227956-4589-2223516-cd7d49d118b052fa
image

进入后查看ID,知道ID为git。

1548227958-3467-2223516-cd21acfaa3bad49f
image

浏览插件网站http://updates.jenkins-ci.org/download/plugins/,找到对应插件git,点击进去。

1548227960-3429-2223516-aa13567c5a636dab
image

注意不要选择最新版本,我们这里选择历史版本,即3.5.0下载

1548227962-7282-2223516-4f882cce085be92a
image

下载到本地。

1548227964-8430-2223516-bee71e0a169d7edc
image

2、安装

还是系统管理-插件管理,选择高级,有上传插件选项,点击文件并上传。

1548227965-7604-2223516-57a523b11f50c926
image

上传之后,会开始安装,这里安装失败,点击查看原因,是缺少另外一个插件,这里需要先安装对应插件,按照上面的步骤。

1548227968-1497-2223516-7321b851ab95b5eb
image

插件安装过程中,如果需要重启jenkins的,可以直接在页面上出入restart重启

1548227970-7246-2223516-ea553e81048f2cc3
image

安装完成之后,在已安装插件中就可以找到对应插件

1548227971-3194-2223516-58050c7a3ac82d9b
image

项目创建

点击新建

1548227973-8848-2223516-58d43228387fb646
image

书写项目名称,选择风格

1548227974-6657-2223516-5a5b59732617a686
image

店家ok之后进入配置界面,在源码管理中选择git,输入项目url,设置分支。如果有账号密码,点击add添加

1548227976-5611-2223516-e8ca5e26b5f5340a
image

添加git的账号密码

1548227978-7010-2223516-f0ad49fd2fbf2ac1
image

构建,选择之前配置的maven,并配置要执行的操作,保存。

1548227980-5316-2223516-f9f0df87f5cec44f
image

点开立即构建,即开始构建项目

1548227982-6524-2223516-8187fa2df9edf5b8
image

构建成功后显示为蓝色,如果有问题显示为红色或黄色。点击任何一次可以进入。

1548227984-8122-2223516-a8bf894695bfa3bf
image

点击Console Output可以查看对应的控制台输出

By柏小白

frp-linux下配置运行

群晖NAS+frp发挥更大作用
Posted by SunnyRx on October 21, 2016
原文地址:http://www.sunnyrx.com/2016/10/21/simple-to-use-frp/

该文章于2018年7月7日将frp版本从0.13.0更新到0.20.0,下文针对frp 0.20.0配置。

NAS没有公网IP是一件很不方便的事情,尤其是在国内的网络环境,学校和小区内的用户通常都没有公网IP。为了解决这个问题,则需要内网穿透,而内网穿透的方法有很多种,例如使用花生壳ngrok等,该文章要介绍的是使用frp让群晖实现内网穿透。

实际上frp有官方的中文文档,上面的内容已经非常详尽,对相关操作比较熟悉的人可以直接阅读官方的中文文档。

什么是frp

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。

准备

在使用frp之前,需要一台有公网IP的服务器(下文称外网主机),一台需要实现内网穿透的机器(下文称内网主机),SSH工具,以及一个域名(如果只是建立SSH反向代理则不需要域名)。

该文章中笔者所使用的服务器是朋友推荐的Vultr服务器,虽然服务器是在国外,但胜在带宽够,有需要的朋友可以注册一个。而需要实现内网穿透的机器则是笔者用上网本搭建的黑群晖。SSH工具使用的是Xshell 5。而域名笔者则是使用自己个人网站的域名。

开始使用

根据机器的操作系统,在Release页面中找到对应的frp程序,然后分别在外网主机和内网主机中下载它。

下面的所示范用的frp程序版本是以笔者的服务器为主的。

外网主机

SSH连接上外网主机后,使用wget指令下载frp。

wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz

使用tar指令解压tar.gz文件

tar -zxvf frp_0.20.0_linux_amd64.tar.gz

使用cd指令进入解压出来的文件夹

cd frp_0.20.0_linux_amd64/

外网主机作为服务端,可以删掉不必要的客户端文件,使用rm指令删除文件。

  1. rm -f frpc
  2. rm -f frpc.ini

接下来要修改服务器配置文件,即frps.ini文件。使用vi指令对目标文件进行编辑。

vi frps.ini

打开frps.ini后可以看到默认已经有很多详细的配置和示范样例,该文章仅以达到内网穿透为目的,所以这里选择删掉或注释掉里面的所有内容,然后根据群晖的情况,按照官方的中文文档添加以下配置。(这里的操作都使用vi命令,关于vi命令的使用方式这里不作详细介绍,可以自行搜索相关使用方法。)

  1. [common]
  2. bind_port = 7000
  3. vhost_http_port = 8080

[common]部分是必须有的配置,其中bind_port是自己设定的frp服务端端口,vhost_http_port是自己设定的http访问端口。

保存上面的配置后,使用以下指令启动frp服务端。(如果需要在后台运行,请往下翻阅关于后台运行的部分。)

./frps -c ./frps.ini

服务端的工作就到此结束了。

客户端

客户端前面的操作和服务端是一模一样的,这里不一一解释。

  1. wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz
  2. tar -zxvf frp_0.20.0_linux_amd64.tar.gz
  3. cd frp_0.20.0_linux_amd64
  4. rm -f frps
  5. rm -f frps.ini
  6. vi frpc.ini

客户端的配置如下

  1. [common]
  2. server_addr = x.x.x.x
  3. server_port = 7000
  4. [ssh]
  5. type = tcp
  6. local_ip = 127.0.0.1
  7. local_port = 22
  8. remote_port = 6000
  9. [nas]
  10. type = http
  11. local_port = 5000
  12. custom_domains = no1.sunnyrx.com
  13. [web]
  14. type = http
  15. local_port = 80
  16. custom_domains = no2.sunnyrx.com

上面的配置和服务端是对应的。

[common]中的server_addr填frp服务端的ip(也就是外网主机的IP),server_port填frp服务端的bind_prot

[ssh]中的local_port填群晖的ssh端口。

[nas]中的type对应服务端配置。local_port填群晖的DSM端口。custom_domains为要映射的域名,记得域名的A记录要解析到外网主机的IP。

[web]同上,local_port填群晖的web端口。这里创建了两个http反向代理是为了分别映射群晖两个重要的端口,500080,前者用于登录群晖管理,后者用于群晖的Web StationDS Photo

保存配置,输入以下指令运行frp客户端。(同样如果需要在后台运行,请往下翻阅关于后台运行的部分。)

./frpc -c ./frpc.ini

此时在服务端会看到”start proxy sucess”字样,即连接成功。

现在可以用SSH通过外网主机IP:6000和群晖建立SSH连接。通过浏览器访问no1.sunnyrx.com:8080打开群晖nas的管理页面,访问no2.sunnyrx.com:8080打开群晖Web Station的网站,DS Photo app可以连接no2.sunnyrx.com:8080进入DS Photo管理。

让frp在后台运行

虽然现在frp运作起来了,内网穿透也实现了,但这还是不够的。此时如果断开与服务端或者客户端的SSH连接(比如关掉了Xshell)也就中止了frp的运行。

保持frp运行是关键是让服务端的frp和客户端的frp在后台运行,这里提两个方法供参考,一个是使用screen指令,另一个是使用nohup指令。由于群晖的系统默认是没有screen指令的,这里也不提供安装screen的方法,所以推荐群晖直接使用nohup

其实服务端也直接用’nohup’就好了。

使用screen让frp在后台运行

下面的示范是运行服务端的frp,客户端就不示范了,前面提过群晖的系统没有screen指令。

首先使用screen指令创建一个会话。

screen -dmS frp

然后进入这个会话。

screen -r frp

最后使用运行frp的指令,在后面加上” &”。(如果之前断开了SSH连接,记得用cd指令进入frp的目录先。)

./frps -c ./frps.ini &

这样就让frp在后台运行了。

使用nohup指令

nohup指令的使用方法相对简单,只需要在nohup后面加上frp的运行指令即可。下面示范的指令是运行frp客户端。(同样,如果之前断开了SSH连接,记得用cd指令进入frp的目录先。)

nohup ./frpc -c ./frpc.ini &

这样就成功让frp在后台运行了。