elasticsearch附加参数含义(持续补充)
可选参数:
1 | keep_first_letter启用此选项时,例如:刘德华> ldh,默认值:true |
可选参数:
1 | keep_first_letter启用此选项时,例如:刘德华> ldh,默认值:true |
docker pull sameersbn/gitlab:latest (官方镜像)
运行gitlab,443 22端口经常会冲突。这里我替换掉了,个人看情况使用
1 | docker run --detach \ |
更详细参考gitlab配置github
docker pull gitlab/gitlab-runner
运行gitlab-runner
1 | docker run -d --name gitlab-runner --restart always \ |
进入gitlab-runner容器里面
要在gitlab中添加一个runner,只需要执行:gitlab-runner register 进行注册管道
1 | gitlab-runner register |
上面的图形说明
简单的运行
1 | before_script: |
项目推上去就可以看到编译的结果打印输入上面的echo
Jenkins插件安装
1 | Jenkins其实没有什么需要特别配置的,由于这次任务中需要利用Jenkins与git,gitlab协作,所以需要安装一些插件。在主面板上点击Manage Jenkins -> Manage Plugins。 |
安装gitlib-hooks地址
安装gitlib-hooks报错
jenkins在安装Git hook plugins提示失败:
OS : CentOS 6.5 64位
Jenkins : 1.638
JDK : 1.8.0_66
Ruby-runtime : 0.13
问题 : gitlab hook plugin无法安装的原因是因为ruby-runtime无法安装.
<!--hexoPostRenderEscape:<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">java.io.IOException: Failed to dynamically deploy this plugin</span><br><span class="line">at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1308)</span><br><span class="line">at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1107)</span><br><span class="line">at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)</span><br><span class="line">at java.util.concurrent.FutureTask.run(Unknown Source)</span><br><span class="line">at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:104)</span><br><span class="line">at java.lang.Thead.run(Unknown Source)</span><br></pre></td></tr></table></figure>:hexoPostRenderEscape-->
解决办法:
看上去是在下载过程中文件出现了问题. 首先关闭Jenkins.找到jenkins主目录下面的插件目录,我的目录在/home/web/.jenkins/plugins, 删除相关文件gitlab-hook.jpi和ruby-runtime.jpi
重启jenkins, 试着重新安装.还是无法安装成功,报错信息,应该是下载文件的网络问题:手动下载相关的文件,现在地址在这里, 找到相关的插件,然后选择版本.下载到本地
进入jenkins的系统设置->插件管理->高级->上传插件,把下载到本地文件的插件上传到jenkins的服务器进行安装.
ruby文件比较大,直接上传可能会抛错,可以直接下载,放到${host}/jenkins/plugins中,然后重启
还是报错:
<!--hexoPostRenderEscape:<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line">java.io.IOException: Failed to dynamically deploy this plugin</span><br><span class="line">at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1328)</span><br><span class="line">at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1126)</span><br><span class="line">at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)</span><br><span class="line">at java.util.concurrent.FutureTask.run(FutureTask.java:266)</span><br><span class="line">at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110)</span><br><span class="line">at java.lang.Thread.run(Thread.java:745)</span><br><span class="line">Caused by: java.io.IOException: Failed to install ruby-runtime plugin</span><br><span class="line">at hudson.PluginManager.dynamicLoad(PluginManager.java:487)</span><br><span class="line">at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1324)</span><br><span class="line">... 5 more</span><br><span class="line">Caused by: java.io.IOException: Failed to initialize</span><br><span class="line">at hudson.ClassicPluginStrategy.load(ClassicPluginStrategy.java:441)</span><br><span class="line">at hudson.PluginManager.dynamicLoad(PluginManager.java:478)</span><br><span class="line">... 6 more</span><br><span class="line">Caused by: java.lang.ClassCircularityError: org/jruby/RubyClass</span><br><span class="line">at java.lang.Class.forName0(Native Method)</span><br><span class="line">at java.lang.Class.forName(Class.java:348)</span><br><span class="line">at org.jenkinsci.bytecode.ClassWriter.loadClass(ClassWriter.java:97)</span><br><span class="line">at org.jenkinsci.bytecode.ClassWriter.getCommonSuperClass(ClassWriter.java:64)</span><br><span class="line">at org.kohsuke.asm5.ClassWriter.getMergedType(ClassWriter.java:1654)</span><br><span class="line">at org.kohsuke.asm5.Frame.merge(Frame.java:1426)</span><br><span class="line">at org.kohsuke.asm5.Frame.merge(Frame.java:1374)</span><br><span class="line">at org.kohsuke.asm5.MethodWriter.visitMaxs(MethodWriter.java:1475)</span><br><span class="line">at org.kohsuke.asm5.tree.MethodNode.accept(MethodNode.java:833)</span><br><span class="line">at org.kohsuke.asm5.commons.JSRInlinerAdapter.visitEnd(JSRInlinerAdapter.java:187)</span><br><span class="line">at org.jenkinsci.bytecode.Transformer$1$1.visitEnd(Transformer.java:107)</span><br><span class="line">at org.kohsuke.asm5.MethodVisitor.visitEnd(MethodVisitor.java:877)</span><br><span class="line">at org.kohsuke.asm5.ClassReader.readMethod(ClassReader.java:1021)</span><br><span class="line">at org.kohsuke.asm5.ClassReader.accept(ClassReader.java:693)</span><br><span class="line">at org.kohsuke.asm5.ClassReader.accept(ClassReader.java:506)</span><br><span class="line">at org.jenkinsci.bytecode.Transformer.transform(Transformer.java:113)</span><br><span class="line">at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:800)</span><br><span class="line">at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1310)</span><br><span class="line">at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1366)</span><br><span class="line">at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1326)</span><br><span class="line">at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1079)</span><br><span class="line">at java.lang.ClassLoader.loadClass(ClassLoader.java:357)</span><br><span class="line">at org.jenkinsci.jruby.RubyClassConverter.<init>(RubyClassConverter.java:12)</span><br><span class="line">at org.jenkinsci.jruby.JRubyXStream.register(JRubyXStream.java:25)</span><br><span class="line">at ruby.RubyRuntimePlugin.initRubyXStreams(RubyRuntimePlugin.java:44)</span><br><span class="line">at ruby.RubyRuntimePlugin.start(RubyRuntimePlugin.java:28)</span><br><span class="line">at hudson.ClassicPluginStrategy.startPlugin(ClassicPluginStrategy.java:449)</span><br><span class="line">at hudson.ClassicPluginStrategy.load(ClassicPluginStrategy.java:438)</span><br><span class="line">... 7 more</span><br><span class="line"></span><br><span class="line">网上继续寻找问题,在Jenkins的官网找到一个issue, 描述的就是这个问题. Phellipe Ribeiro最后给出了一个在CentOS的临时解决方案:</span><br><span class="line"></span><br><span class="line">编辑Jenkins的配置文件 /etc/sysconfig/jenkins 的JENKINS_JAVA_OPTIONS</span><br><span class="line"></span><br><span class="line">修改后 : JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.ClassicPluginStrategy.noBytecodeTransformer=true"</span><br><span class="line"></span><br></pre></td></tr></table></figure>:hexoPostRenderEscape-->
如果安装没有问题,或者已经修好了,可以重新gitlib-hooks插件
在gitLab项目中添加web hook(Project Settings –> WebHooks)
原文参考地址
<!--hexoPostRenderEscape:<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">gitlab的web hook有很多种,可以满足不同的需求,因为我们的需求是push代码的时候触发,所以选的是Push events.</span><br><span class="line"></span><br><span class="line">Url的作用:这个地方填的url是gitlab发请求用的。其实它的原理就是当开发人员在git上的操作触发这个hook时,gitlab就向这个url发一个post请求。请求中带着一堆参数比如提交者是谁,提交的分支是哪个,commit号是多少等等。接受这个请求的那端可以利用这些信息去处理后续的一些事情,比如部署测试通知等等。</span><br><span class="line"></span><br><span class="line">此处,由于我们在jenkins上安装了gitlab hook插件,所以我们只需要按照它的使用方法在url里填上以下链接即可:</span><br><span class="line"></span><br><span class="line">http://your-jenkins-server/gitlab/notify_commit</span><br></pre></td></tr></table></figure>:hexoPostRenderEscape-->
在jenkins里需要自动触发的job里的“源码管理”部分添加设置,如下图。填好git仓库url和需要检测的分支名称
1 | 若非内嵌类,则不能使用类似belongsTo = [xx:XX] 或者 hasOne = [xx:XX] 或者 XX xx等的关联方式,需要指定使用String xxId |
1 | 若非内嵌类,则不能使用类似List<XX> xxs的关联方式,否则虽不会报错, |
1 | 假设Cart中有List<String> strIds;则可以针对数组进行各式查询: |
1 | 导出使用mongodump命令。mongodump --help查看命令的帮助。可以批量导出数据库表 |
1 | 导入备份 mongorestore命令。该命令可以导入一个文件夹下所有集合。mongoimport只能导入单个json |
1 | use test |
* [地址](http://docs.mongodb.org/manual/tutorial/change-own-password-and-custom-data/)
1 | use test |
1 | <?xml version="1.0" encoding="UTF-8"?> |
1.nexus下载地址选择对应的包
clean install -Dmaven.test.skip=true
1 | astcgi_buffers 32 8k; |
问题:no resolver defined to resolve xxx.xxx
引申问题 由于resolver加入 8.8.8.8那么域名都会解析到广域网中的ip。 如果需要将域名解析至特定的ip。可以自己搭建一个dns服务器。
1 | brew install dnsmasq |
1 | 安装到自己定义目录中,记住目录 |
准备 init.d 脚本(可以搜索 redis rpm,找到rpm包后解压获取相应的init.d脚本,然后在再其基础上修改配置项)
1 |
|
并修改其中的配置项 vi /etc/init.d/redis
1 | exec="/data/software/redis/redis-2.8.14/src/redis-server" |
最后为 init.d 脚本修改权限
1 | chmod u+x /etc/init.d/redis |
启动
1 | service redis start |
#centos7
1 | vi /usr/lib/systemd/system/redis.service |
redis-cli -h 127.0.0.1 -p 7001 -c keys “xxxx*” | xargs redis-cli -h 127.0.0.1 -p 7001 -c del {}
1 | 预置条件 |
数据库配置
1 | 进入数据库命令 |
安装sonar
1 | #vi conf/sonar.properties |
启动服务
1 | 目录切换至sonar的<install_directory>/bin/linux-x86-64/目录,启动服务 |
安装sonar-runner
1 | sonar是一个平台,运行还需要其他插件 |
添加到jenkins中
1 | http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins |
由于官方的 Nginx 缺乏一些常用特性。比如:
因此,服务器上决定使用 Tengine 来取代 Nginx 官方版。
安装依赖
1 | yum install openssl openssl-devel |
下载、编译并安装
1 | mkdir /usr/local/tengine |
修改配置
1 | cd /usr/local/tengine/tengine-2.1.0 |
新建 systemd 所需的 service 文件: vi /usr/lib/systemd/system/tengine.service
:
1 | [Unit] |
启用、启动
1 | systemctl enable tengine |
下载 init.d 脚本。从 这里 为 CentOS 下载 Red Hat /etc/init.d/nginx
, 并保存到 /etc/init.d/nginx
修改 /etc/init.d/nginx
,
1 | nginx="/usr/local/tengine-2.1.0/sbin/nginx" |
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev
1 |
|
1 | ---------------------------- 需要PCRE依赖,没报错跳过 |
1 | ./configure --with-openssl=/usr/local --prefix=/usr/local/openssl --with-pcre=/usr/pcre |
1 | description "tengine http daemon" |
启动
1 | sudo service tengine status |
1.复杂配置
1 | server { |
2.简单配置没有变量
1 | server { |
1 | -- tomcat中有这么一行代码,打开注释即可 |