Teamcity 安装部署和项目构建 初探

本篇初衷

  1. 学习和了解Teamcity的概念和功能。
  2. 基本使用 Teamcity ,实现代码提交到git后,自动化编译,运行。

Teamcity 一些复杂的操作也还在摸索当中,一样还是要看文档,所以有事没事多翻翻官网的文档,一定会有收货,英语不好也可以恰当的使用谷歌的全文翻译,不要被局限住。

看文档带着目的性去看,先看文档目录,然后让文档按照你的思路去组合,东翻翻西翻翻的结果还是一团浆糊。

测试

测试

1
2
3
public static void main() {
System.out.println("ss")
}

62511-106

fedora23 编译 WizNote2.3.3

前期环境准备

  1. 为了方便操作,请先切换到root环境下!
  2. 前期的gcc,make 等编译环境应该默认你们有了。

下载WizNote 源码

  1. 打开官网应该都知道源码的地址放在哪,如果你会点git操作就更好了。
    地址:
    https://github.com/WizTeam/WizQTClient
  2. 下载回来解压,然后cd进目录,直接执行./linux-package.sh 进行编译安装。
  3. OK,可以吗?反正我就是不行,报了一大堆问题,所以继续。

准备依赖环境

本次依赖环境所需是根据本次经验而成,如果有其他问题可以留言。

核心就是:缺什么装什么,有yum(dnf)就直接装,没有先找找有没现成的 rpm ,再没有就编译。所以不必惊慌。

以下是我所遇到的问题,如果同样问题的可以对号入座,如果不一样,可以留言,看到就回:

  1. 卡在了这,提示我找不到 这几个库文件。
1
2
3
4
5
cp /usr/lib/x86_64-linux-gnu/libQtWebKit.so.4 ./
cp /usr/lib/x86_64-linux-gnu/libQtGui.so.4 ./
cp /usr/lib/x86_64-linux-gnu//libQtXml.so.4 ./
cp /usr/lib/x86_64-linux-gnu/libQtNetwork.so.4 ./
cp /usr/lib/x86_64-linux-gnu/libQtCore.so.4 ./

php 用nginx实现拦截器的思路

首先感谢一老友提供的思路。
接着~,
PHP现有项目上发现一个问题,上传到项目的文件随意用了随机字符串,但只有登陆用户把这个地址发出去,其他人就可以直接访问或下载该文件。
比如:http://wwww.test.com/upload/xxxxx.xls
可以直接下载下来,因为是直接存在的文件。
此时要做限制,思路就是拦截下 /upload/ 这个路径,用Java的话就是加个拦截器,PHP的话没做过这个,友人提供的思路用nginx实现。
用nginx做匹配拦截,然后转发到对应的php方法,将之后的xxxxx.xls 当作参数传,如下:

1
2
3
4
5
location  ~ /upload/ {
rewrite ^/upload/(.*)$ /index.php/Filter/get_img?path=/$1 last;
break;

}

此时在 PHP做处理即可。
记录下~

有感而发 , 前端该如何与Java服务端配合开发

Java 最烦的的几点就是安装麻烦,配置麻烦,运行麻烦。
其中每一点只要遇到问题就进行不下去。
这点相比PHP真的差远了,只要安装一个XMAPP,一条龙服务到位,而且文件不用编译,不用重启,既改既生效。
工作这几年下来,与前端的分工总不是那么理想,前前后后尝试了好几种方式,都是不怎么太理想,最近所在的公司是让前端安装了一模一样的开发环境,Eclipse!,然后所有的环境Java人员帮配好,但是一旦有修改文件,而又不是Eclipse里面修改(现在前端习惯使用 sublime text ),就不会自动同步对应的容器中,要回到Eclipse中刷新才生效,繁琐的多余的流程,让前端也很不爽。

java amr格式转mp3格式(完美解决Linux下转换0K问题)

问题

因项目需求,需要将 amr 格式的文件转成 mp3格式。
网络上提供的思路大多是使用jave-x-x.jar。
这个包确实有用,因为开发时是在windows环境中,测试转换虽然报了异常:

1
it.sauronsoftware.jave.EncoderException:   Duration: N/A, bitrate: N/A

但也确实转换成功了,可以播放。
可是一旦部署到Linux环境当中,不是转换失败,就是转换的文件为大小 0 k。百思不得其解。

Tomcat 多实例部署脚本-下

思路

上一篇Tomcat 多实例部署脚本 大概说了些多实例的一些方案,现在这篇就纯粹的说自动化脚本。
轻拍。

思路(基于上篇博文的基础):

0、建立一个新目录, mkdir default_template
1、在Tomcat中的将所需的配置文件取出来,放到这个新目录中
2、修改 server.xml 文件,将所有所需手工替换的用占用符占用
3、在conf 目录中,建立一个./conf/Catalina/localhost/ROOT.xml 文件(注1 说明为什么建立这个文件)
4、在default_template目录中建立:logs,temp,work 等三个为目录
5、在目录中建立启动和停止实例的脚本,参考上篇博文,(见注2)
6、使用脚本,替换此目录中所有的占位符,替代手工操作

注1:Tomcat中,如果要使用域名的根目录访问,需要将项目文件放在ROOT目录中,否则只能采用二级目录访问,而建立此ROOT.xml 文件,则可以任意指定,此文件中仅一句:<Context path="" docBase="webapps_dir" />,其中path若为空,则默认为根目录没,具体可以下载此文件查看。 当然,还有其他的方式,只不过个人认为这种比较灵活

注2:或者直接下载此文最下面提供的示例

Tomcat 多实例部署脚本

单实例部署的麻烦

掀桌!单实例部署,TMD的每次重启所有项目都被影响!!

单实例部署时,不管是直接放在webapps下,还是增加配置文件./conf/server.xml 中的<host> ,关闭和启动都是所有项目都受到影响 ,特别一些启动时间比较长的项目,等待很艹蛋,更特别的在于如果没有热部署或者热部署失败时,修改一个class或配置文件,重启的效率能让你掀桌!!

多实例的几种方式

1.多Tomcat软件实例
2.增加 CATALINA_BASE
3.其他的先略过不表

Y,多实例不可避免,多实例的两种方式上面说了。

1.最简单就是多Tomcat,

部署时拷贝一个Tomcat,然后修改端口。

1
2
3
4
5
6
7
8
9
10
11
<!-- 用来停止Tomcat的端口(8005),需改 -->
<Server port="8005" shutdown="SHUTDOWN">
...
<!-- Http 访问端口(8080),续改 -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
....
<!-- Ajp端口(8009) ,负责和其他的HTTP服务器建立连接。没用到就注释掉。 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Server>