jiemin's Blog

本来无一物,何处惹尘埃


  • 首页

  • 归档

  • 标签

CentOS7二进制文件安装nodejs

发表于 2017-08-07

下载二进制文件

进入nodejs官网复制下载链接

1
wget https://nodejs.org/dist/v8.2.1/node-v8.2.1-linux-x64.tar.xz

安装编译环境

1
yum -y install gcc make gcc c++ openssl-devel

解压

1
2
xz -d node-v8.2.1-linux-x64.tar.xz
tar xvf node-v8.2.1-linux-x64.tar

添加环境变量

1
vim /etc/profile

在export PATH的上一行添加如下内容
PATH=$PATH:/zndata/server/nodejs/node-v8.2.1-linux-x64/bin

保存后执行source /etc/profile,使环境变量生效

测试

在任意目录下输入node -v,显示如下则表示安装成功

参考文章

CentOS 7二进制文件安装nodejs

nginx集群

发表于 2017-08-07

已有环境

  1. centos7
  2. nginx服务器
  3. 多台tomcat服务器

nginx配置文件

nginx配置文件是conf目录下的nginx.conf文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
upstream tomcats {
server 192.168.1.241:8080 weight=5;
server 192.168.1.241:9090 weight=5;
server 192.168.1.242:8080 weight=5;
}
server {
listen 80;
server_name 192.168.1.241;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://tomcats;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

说明:

  1. upstream tomcats中表示tomcat服务器的ip和端口。
  2. weight表示的权重,数越大,权重越高,分配到的机会越大。
  3. proxy_pass对应的是集群名称tomcats。

测试

  1. 将tomcat默认页面修改成各不相同的页面。
  2. 同台机器中的多个tomcat还需修改其端口号,默认的8080,8005,8009均要修改。
  3. 启动tomcat。
  4. 重启nginx。
  5. 访问nginx不停刷新,不同的页面轮流显示表示nginx集群配置成功。

nginx源码安装

发表于 2017-08-07

nginx安装

安装依赖环境

1
2
3
4
yum install gcc-c++
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel

下载源码包

1
wget https://nginx.org/download/nginx-1.13.3.tar.gz

解压

1
tar zxvf nginx-1.13.3.tar.gz

安装

1
2
3
./configure --prefix=/zndata/server/nginx #指定安装目录
make
make install

启动

进入nginx目录下的sbin目录

1
./nginx

出现以下页面表示安装成功

停止和重启命令

1
2
./nginx -s stop
./nginx -s reload

4月总结及5月计划

发表于 2017-05-02

4月总结

由于公司新项目还没有开始,4月份每天在公司各种打酱油,时而写写需求文档,时而处理中普审计软件所在服务器出现的问题。完成这些工作之余,4月份IT学习方面我主要做了以下几件事:

1、 上实验楼学习了C语言、python、php等课程。

2、 写了三篇博客

3、 看电子版《thinking in java》

总结: 首先是第一件事,实验楼是我学习linux的时候发现的IT学习网站,对于学习linux很有帮助。出于强迫症,我把实验楼其他的免费课程也都学习了一遍,但效果有限,仅作为扩宽知识面用。5月我应该把重心重新放回java,加强对java的学习。第二件事是博客:4月份我并没有完成每周达成至少写一篇博客的目标,还有4月份我写的博客质量不高,只有《Mac上搭建jenkins+docker+maven+git自动部署》这篇博客让我自己比较满意。五月份我打算先暂停写博客,多看书,沉淀一下自己,不为写博客而写博客。第三件事是看《thinking in java》,这本书是我看其他博客时博主推荐的,正好我打算巩固下java便开始看了。我是在mac上看的电子版,但我发现在电脑上看我容易受各种因素影响,比如qq信息,阅读效果很差,而且看电子版不利于我做笔记。五月份我买了纸质版的《thinking in java》。

总体来说我对我的4月份的学习状况是不满意的,究其主要原因还是我没有一个短期目标,学习目的性不强,完全是想到什么学什么。5月已经开始,我要制定一个5月计划,鞭策自己不断进步。

五月计划

1、看一本java方面的书,目前已经购买了《thinking in java》。

2、每天背30个英文单词,目前已下载百词斩app。

Mac中item2使用代理

发表于 2017-05-02

在mac中开启了shadowsocks代理只有通过浏览器访问才生效,默认命令行模式中代理不生效,想要使得命令行模式下生效需要设置一下,我命令行窗口使用的是item2

在item2中输入以下代码行:

1
2
export http_proxy=socks5://127.0.0.1:1080
export https_proxy=$http_proxy

注意: 只在当前的命令行窗口有效,关闭后需要重新输入以上代码,代理生效。

学习笔记-使用poi替换word内容

发表于 2017-04-18

所需用到的maven依赖

word内容替换

Service层

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.model.FieldsDocumentPart;
import org.apache.poi.hwpf.usermodel.Field;
import org.apache.poi.hwpf.usermodel.Fields;
import org.apache.poi.hwpf.usermodel.Range;
import org.springframework.stereotype.Service;
@Service
public class WordService {
public void readwriteWord(String sourcefilePath, String filepath, String fileName, Map<String, String> map) {
// 读取word模板
FileInputStream in = null;
try {
in = new FileInputStream(new File(sourcefilePath));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
HWPFDocument hdt = null;
try {
hdt = new HWPFDocument(in);
} catch (IOException e1) {
e1.printStackTrace();
}
Fields fields = hdt.getFields();
Iterator<Field> it = fields.getFields(FieldsDocumentPart.MAIN).iterator();
while (it.hasNext()) {
System.out.println(it.next().getType());
}
// 读取word文本内容
Range range = hdt.getRange();
// 替换文本内容
for (Map.Entry<String, String> entry : map.entrySet()) {
range.replaceText(entry.getKey(), entry.getValue());
}
ByteArrayOutputStream ostream = new ByteArrayOutputStream();
FileOutputStream out = null;
try {
out = new FileOutputStream(filepath + fileName, true);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
hdt.write(ostream);
} catch (IOException e) {
e.printStackTrace();
}
// 输出字节流
try {
out.write(ostream.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
ostream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Controller层

根据word模版生成文件,并下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import tk.jiemin.gx.service.WordService;
@Controller
public class IndexController {
@Resource
WordService wordService;
@RequestMapping("/download")
public ResponseEntity<byte[]> export(@RequestParam("company") String company, HttpServletRequest request)
throws IOException {
String path = request.getSession().getServletContext().getRealPath("/");
Map<String, String> map = new HashMap<String, String>();
map.put("${company}", company);
String srcPath = "/Users/zjm/Documents/tongda/1、高新技术企业认定委托协议书.doc";
String fileName = "1、高新技术企业认定委托协议书"+"_"+company+ ".doc";
wordService.readwriteWord(srcPath, path, fileName, map);
File file = new File(path + fileName);
HttpHeaders headers = new HttpHeaders();
String fn = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", fn);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
}
}

Mac上搭建jenkins+docker+maven+git自动部署

发表于 2017-04-13

前言

公司之前的项目发布是通过jenkins自动发布的,只要在jenkins上选择项目,点击构建项目,项目就自动部署好了。对于开发人员来说这非常方便,只要修改好源码,提交到github中后,登录jenkins的Web界面,选择项目点击构建就行了。几经摸索后,我终于在自己的Mac上搭建成功了,期间碰到的问题大多是关于docker方面的,其中有个问题还没有从根本上解决,只是通过变通的方式使得部署成功,在后文中将会提到。

阅读全文 »

git学习笔记

发表于 2017-04-06

前言

使用git已经有一段时间了,好记性不如烂笔头,这里将常用的命令整理下做个记录。

git常用命令

命令 说明
git init 创建版本库
git add 将文件添加到仓库
git commit 将文件提交到仓库
git status 查看仓库状态,文件是否有修改
git diff 查看修改内容
git clone 从远程仓库克隆项目
git push 提交本地代码到远程仓库
git pull 从远程仓库拉取项目到本地
git checkout 切换分支
git merge 合并分支
git stash 备份当前工作区内容
阅读全文 »

windows2016server部署中普审计软件服务端

发表于 2017-03-25

前言

公司之前安装的中普审计软件网络版由于服务器被黑,需要请中普实施人员重新部署。本着下次需要重新安装能自己解决的心态,看中普实施人员部署一遍后,我又重新部署了一遍,并将安装过程整理了一下,记录成了文档。部署过程主要分为安装中普审计软件,安装IIS服务器,配置数据库,初始化数据库这么几步。

阅读全文 »

Centos7搭建FTP服务器

发表于 2017-03-24

前言

阿里云上使用Ngnix部署了一个静态项目,想通过FTP来管理这个静态项目。搭建前先去了解了一下FTP,FTP是文件传输协议,用于Internet上的控制文件的双向传输,实现服务端和客户端的文件上传和下载。阿里云线上环境是Centos7,这里使用vsftpd来搭建FTP服务。

阅读全文 »
1…456
我爱的乌托邦

我爱的乌托邦

60 日志
23 标签
© 2020 我爱的乌托邦
由 Hexo 强力驱动
主题 - NexT.Pisces