安装部署

开发

1. libogg

http://www.linuxfromscratch.org/blfs/view/svn/multimedia/libogg.html

报错:oggenc: Command not found
需要安装libogg

下载

https://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz

安装

1
2
3
4
5
./configure --prefix=/usr    \
--disable-static \
--docdir=/usr/share/doc/libogg-1.3.3 &&
make
make install

2. tar.xz如何解压

1
2
xz -d ***.tar.xz
tar -xvf ***.tar

系统

centos7 安装

1. 用到的工具有:

CENTOS7ISO镜像,U盘一个(最好16G),ultraiso

  • a、安装ultraiso,,打开-镜像文件-写入U盘。写入成功后,一定要把安装镜像拷备到U盘里
  • b、重启电脑,将BIOS启动设置为U盘启动
  • c、进入图形化安装界面。选择安装源-选择第二项是选择ISO文件-选择我们刚才拷到U盘的ISO镜像-点左上角的”完成”
  • d、选择打开网络,否则无法上网
  • e、完成

2. CentOS 7 yum安装Maven、Ant

1
2
3
4
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

yum -y install apache-maven
yum -y install ant

ubuntu 安装

1. 下载iso文件

2. 虚拟机安装为了可以通过ssh工具远程访问,网络需要设置成桥接网卡

3. 如需要远程root登录参考《Linux命令》里内容

新云服务器CentOS7后应该做的准备

1. 升级

1
yum -y update

2. 更改hostname

1
2
# hostnamectl --static set-hostname nealname
# logout

3. 替换 /etc/locale.conf 的内容,解决LC_CTYPE: cannot change locale (UTF-8)

1
2
3
LANG="en_US.utf8"
LC_CTYPE="en_US.utf8"
# source /etc/locale.conf

4. 安装基本工具

1
# yum install -y vim tree htop wget telnet curl unzip gcc pcre-devel zlib-devel perl-devel

5. 升级openssl

1
2
3
4
5
6
7
8
9
10
11
# cd /usr/local/src
# wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz
# tar zxvf openssl-1.1.0c.tar.gz
# cd openssl-1.1.0c
# ./config
# make
# make test
# make install
# mv /usr/bin/openssl /usr/bin/openssl.old
# ln -s /usr/local/bin/openssl /usr/bin/openssl
# openssl version

6. 解决openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory错误

1
2
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

7. 创建普通用户

1
# useradd nealname

8. 安装Java环境

1
2
yum search openJDK
yum install java-1.8.0-openjdk.x86_64

9. 安装nginx

1
2
3
4
5
6
$ sudo yum install -y nginx
$ sudo nginx -t
$ sudo systemctl start nginx
$ sudo systemctl stop nginx
$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

10. 阿里云控制台

  • 开通SLB
  • 配置域名A记录
  • 禁止外网访问 安全组

系统服务

安装g++

1. 查询是否缺失相对应的包

1
rpm -qa | grep "g++"

2. 确认系统是否安装

在确认系统未安装之后,查询可安装的相对应的功能的包:

1
yum whatprovides "*/g++"

3. 安装

上面步骤应该会查询到安装包,如果多个是一个列表,可以选择一个来安装,本例查询到的是gcc-c++-4.4.7-4.el6.x86_64,则输入下面命令安装

1
yum install gcc-c++-4.4.7-4.el6.x86_64

4. 确认是否安装

直接输入g++ -v,如果有版本号则表示安装成功。

CentOS6.4环境下布署LVS+keepalived

环境:

  1. CentOS 6.4
  2. ipvsadm 1.2.4
  3. keepalived 1.1.17

1. 查看kernel-devel是否安装

1
rpm -q kernel-devel

如果没装,查看内核版本

1
uname -r

2.6.32-358.el6.x86_64

这个表示64位的

In CentOS 5, there are three kernel-devel packages available:

  • kernel-devel (both 32- & 64-bit architectures)
  • kernel-xen-devel (both 32- & 64-bit architectures)
  • kernel-PAE-devel (32-bit architecture only)

2. 直接用下面安装

1
yum install kernel-devel

3. 下载

1
2
3
4
5
6
7
8
9
10
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
ln -s /usr/src/kernels/2.6.32-431.17.1.el6.x86_64/ /usr/src/linux
tar -zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make;make install
cd ..
tar -zxvf keepalived-1.1.17.tar.gz
cd keepalived-1.1.17
./configure

configure: error:

!!! OpenSSL is not properly installed on your system. !!!

!!! Can not include OpenSSL headers files.

解决办法:

1
2
yum -y install openssl-devel
./configure

configure: error: Popt libraries is required

解决办法:

1
2
yum install popt-devel
make;make install

安装完之后keepalived的配置:

1
2
3
4
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/sbin/keepalived /usr/sbin/

vi /etc/keepalived/keepalived.conf

!Configuration File for keepalived

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
global_defs {
notification_email {
sa@fminutes.com
}
notification_email_from defage@163.com
smtp_server smtp.163.com
smtp_connect_timeout 30
router_id LVS_DEVEL
}


vrrp_instance VI_1 {
state MASTER #备份服务器上将MASTER改为BACKUP
nopreempt
interface eth0
virtual_router_id 51
priority 100 # 备份服务上将100改为99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.104
#(如果有多个VIP,继续换行填写.)

}
}

virtual_server 192.168.0.104 80 {
delay_loop 6 #(每隔10秒查询realserver状态)
lb_algo wrr #(lvs 算法)
lb_kind DR #(Direct Route)
persistence_timeout 30 #(同一IP的连接60秒内被分配到同一台realserver)
protocol TCP #(用TCP协议检查realserver状态)


real_server 192.168.2.137 80 {
weight 8 #(权重)
TCP_CHECK {
connect_timeout 10 #(10秒无响应超时)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

安装成功应该能看到如下信息

1
ipvsadm -v

4. 查看IPVS表

1
ipvsadm -ln

5. 启动keepalived

1
service keepalived start

6. 查看lvs_server服务器启动keepalived的日志信息

1
tail -f /var/log/messages

安装logstash+kibana+elasticsearch+redis搭建集中式日志分析平台

参考

1. 下载elasticsearch。

1
2
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.2.tar.gz
tar zxvf elasticsearch-1.3.2.tar.gz

2. 解压后,进入bin目录。执行如下命令,让elasticsearch以前台方式启动:

1
./elasticsearch -f

3. 访问默认的9200端口

1
curl -X GET http://localhost:9200

4. 安装Redis

执行如下命令,使之在控制台输出debug信息:

1
redis-server --loglevel verbose

5. logstash日志生成器(shipper)。

1
2
wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz
tar zxvf logstash-1.4.2.tar.gz

6. 新建一个配置文件:shipper.conf,

1
2
cd logstash-1.4.2
mkdir conf

其内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
input {
stdin {
type => "example"
}
}

output {
stdout {
codec => rubydebug
}
redis {
host => "127.0.0.1"
port => 6379
data_type => "list"
key => "logstash"
}
}

7. 启动shipper(其中-f是指以指定的配置文件启动,-l是设置logstash本身的日志位置。&是以守护进程方式启动。)

1
bin/logstash agent -f conf/shipper.conf  -l logstash_shipper.log &

终端窗口将出现如下提示信息:

1
Using milestone 2 output plugin 'redis'. This plugin should be stable, but if you see strange behavior, please let us know! For more information on plugin milestones, see http://logstash.net/docs/1.3.2/plugin-milestones {:level=>:warn}

然后在终端窗口直接按回车,将出现如下信息:

1
2
3
4
5
6
7
{
"message" => "",
"@version" => "1",
"@timestamp" => "2014-01-16T08:15:19.400Z",
"type" => "example",
"host" => "redhat"
}

这个json信息将发送给redis, 同时redis的终端窗口将出现类似下面的提示信息:

1
2
3
[32470] 16 Jan 17:09:23.604 - Accepted 127.0.0.1:44640
[32470] 16 Jan 17:09:27.127 - DB 0: 1 keys (0 volatile) in 4 slots HT.
[32470] 16 Jan 17:09:27.127 - 1 clients connected (0 slaves), 304752 bytes in use

8. logstash日志索引器(indexer)

新建一个配置文件:indexer.conf
其内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
input {
redis {
host => "127.0.0.1"
# these settings should match the output of the agent
data_type => "list"
key => "logstash"

# We use the 'json' codec here because we expect to read
# json events from redis.
codec => json
}
}

output {
stdout { debug => true debug_format => "json"}

elasticsearch {
host => "127.0.0.1"
}
}

启动indexer(其中-f是指以指定的配置文件启动,-l是设置logstash本身的日志位置。&是以守护进程方式启动。)

1
bin/logstash agent -f conf/indexer.conf  -l logstash_indexer.log &

启动logstash的图形界面服务

1
bin/logstash-web

修改kibana端口,文件logstash-1.4.2/lib/logstash/kibana.rb

1
settings.port = 9292

centos 安装 ntpdate 并同步时间

1. 在命令行中做如下操作,来安装ntpdate

1
yum install -y ntp

2. 继续在命令行中操作,进行同步时间

1
ntpdate time.nist.gov

rsync 文件同步

1. 安装

1
2
3
4
5
6
yum install rsync
touch /etc/rsyncd.conf #创建rsyncd.conf,这是rsync服务器的配置文件。
touch /etc/rsyncd.secrets #创建rsyncd.secrets ,这是用户密码文件。
chmod 600 /etc/rsyncd.secrets #将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法
备份成功!
touch /etc/rsyncd.motd

2. 设定密码文件

密码文件格式很简单,rsyncd.secrets的内容格式为:
用户名:密码

1
2
3
root:mike
chown root.root rsyncd.secrets  #修改属主
chmod 600 rsyncd.secrets #修改权限

3. 启动rsync服务器

1
/usr/bin/rsync --daemon

4. 设定 /etc/xinetd.d/rsync, 简单例子如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
# default: off
# description: The rsync server is a good addition to am ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}

上述, 主要是要打开rsync這個daemon, 一旦有rsync client要连接時, xinetd会把它转介給 rsyncd(port 873)。然后service xinetd restart, 使上述设定生效.

5. rsync服务器和防火墙

Linux 防火墙是用iptables,所以我们至少在服务器端要让你所定义的rsync 服务器端口通过,客户端上也应该让通过。

1
2
iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
iptables -L 查看一下防火墙是不是打开了 873端口

6. 实例:

列出rsync 服务器上的所提供的同步内容

1
2
rsync  --list-only  root@192.168.145.5::
rsync --list-only root@192.168.145.5::rhel4home

rsync客户端同步数据

1
rsync -avzP --password-file=/etc/rsyncd.secrets root@192.168.201.5::home home

让rsync客户端自动与服务器同步数据

step1:创建同步脚本和密码文件

1
2
3
4
5
6
7
mkdir   /etc/cron.daily.rsync
cd /etc/cron.daily.rsync
touch rhel4home.sh
chmod 755 /etc/cron.daily.rsync/*.sh
mkdir /etc/rsyncd/
touch /etc/rsyncd/rsync5root.secrets
chmod 600 /etc/rsyncd/rsync*

编辑rhel4home.sh,内容是如下的:

1
2
3
#!/bin/sh
#backup 192.168.201.5:/home
/usr/bin/rsync -avzP --password-file=/etc/rsyncd/rsync5root.secrets root@192.168.201.5::home /bk/home/

接着我们修改 /etc/rsyncd/rsync5root.secrets的内容;

1
# echo "mima" > /etc/rsyncd/rsync5root.secrets

step2:修改crond服务器的配置文件 加入到计划任务

1
#crontab  -e

加入下面的内容:

1
2
# Run daily cron jobs at 4:10 every day  backup rhel4 data: 
10 4 * * * /usr/bin/run-parts /etc/cron.daily.rsync 1> /dev/null

注:

第一行是注释,是说明内容,这样能自己记住。
第二行表示在每天早上4点10分的时候,运行 /etc/cron.daily.rsync 下的可执行脚本任务;

7. 要重启crond 服务器;

1
2
3
4
5
6
7
killall crond    注:杀死crond 服务器的进程;
ps aux |grep crond 注:查看一下是否被杀死;
/usr/sbin/crond 注:启动 crond 服务器;
ps aux |grep crond 注:查看一下是否启动了?

root 3815 0.0 0.0 1860 664 ? S 14:44 0:00 /usr/sbin/crond
root 3819 0.0 0.0 2188 808 pts/1 S+ 14:45 0:00 grep crond

wget安装

1
yum -y install wget

centos7 iptables

1. 关闭firewall:

1
2
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

2. 安装iptables防火墙

1
yum install iptables-services #安装

vi /etc/sysconfig/iptables #编辑防火墙配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

:wq! #保存退出

1
2
systemctl restart iptables.service #最后重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动

3. Failed to start IPv4 firewall with iptables.

备份iptables配置文件
yum remove iptables
yum remove iptables-services
重复第1步

centos7 安装jdk8

1
2
yum -y list java*
yum -y install java-1.8.0-openjdk*

maven 安装

1
2
wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum -y install apache-maven

centos7 安装docker

1
2
yum install epel-release
yum install docker

其他服务

Centos 7下一键安装ffmpeg

1. 安装EPEL Release,因为安装需要使用其他的repo源,所以需要EPEL支持

1
2
3
4
5
yum install -y epel-release 
#如果出现缺少Code提示,可以:
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
#安装完成之后,可以查看是否安装成功
yum repolist

2. 安装Nux-Dextop源

1
2
3
4
5
6
#导入一个Code
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
#安装nux-dextop 源
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
#查看repo源是否安装成功
yum repolist

3. yum安装ffmpeg

1
2
3
yum install -y ffmpeg
#安装完成后检查ffmpeg 版本
ffmpeg -version

Centos下搭建NTP时间服务器

NTP协议可使多台客户机的时间与指定的NTP服务器的时间保持一致。在实际生产过程中,保证所有服务器的时间同步还是很有必要的。

1. 安装NTP服务

1
2
3
4
5
6
7
8
9
yum install ntp #安装NTP时间服务器,默认端口是使用了Network Time Protocol Daemon(UDP 123 port)
# 启动NTP服务
service ntpd restart #重启NTP服务
date #查看当前系统时间
ntpdate 192.168.4.183 #客户端访问NTP时间服务器
no server suitable for synchronization found #意思是没有可用的时间服务器
解决办法:
server 127.127.1.0
fudge 127.127.1.0 stratum 8

2. NTP相关命令

/usr/sbin/ntpd NTP服务的守护进程,配置文件为/etc/ntp.conf 。

/usr/sbin/ntpdate 用来连接NTP服务器命令,比如ntpdate 192.168.6.51 。

/usr/sbin/ntpq NTP查询命令

git库的简单安装

1. 首先需要安装Git,可以使用yum源在线安装

1
yum install -y git

2. 创建一个git用户,用来运行git服务

1
2
3
adduser git 
passwd git
su git

3. 初始化git仓库:这里我们选择/data/git/learngit.git来作为我们的git仓库

1
git init --bare learngit.git  

4. 保证里面的所有文件把owner改为git:

1
2
chown git:git learngit.git
chown git:git learngit.git/* -R

5. 客户端clone

1
git clone git@192.168.1.130:/data/git/learngit.git

6. 出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

1
git:x:1001:1001:,,,:/home/git:/bin/bash  

最后一个冒号后改为:

1
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell  

搭建svn

1. 通过 yum install subversion来安装

1
svnserve --version

2. 建立svn目录库

1
2
mkdir svn
svnadmin create svn/repo

3. 进入版本库中的配置目录conf,此目录有三个文件:

svn服务综合配置文件(svnserve.conf)

1
2
3
4
5
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = repo

用户名口令文件(passwd)

1
john.zhang = zh123456

权限配置文件(authz)

1
2
3
4
5
6
7
8
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin = john.zhang

[repo:/]
admin = rw
john.zhang = rw

4. 修改/root/.subversion/servier选项

1
store-plaintext-passwords = yes

5. 启用svn

1
svnserve -d -r /www/svn/

6. 修改防火墙,开放3690端口

1
2
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
service iptables restart

7. 建立test目录进行上传svn测试

1
2
mkdir test
svn import test svn://211.101.18.76/repo/test -m "test" --force-log

8. svn提交代码

1
svn ci -m "20160627"

9. svn添加新文件到库中

1
svn add */*.md

NodeBB论坛安装

1. 环境准备

1
yum -y update

CentOS 7

1
2
yum -y install epel-release
yum -y groupinstall "Development Tools"

安装redis 和 npm等

1
2
3
yum -y install redis
yum -y install npm
yum -y install git ImageMagick

启动redis

1
2
systemctl start redis
systemctl enable redis

2. 下载NodeBB

1
2
cd /path/to/nodebb/install/location
git clone -b v1.0.3 https://github.com/NodeBB/NodeBB nodebb

3. 安装nodebb

1
2
3
cd nodebb
npm install
./nodebb setup

4. 启动

1
./nodebb start

countly安装

1. 安装 ubuntu

2. 下载 countly

3. 安装 nodejs 4以上

1
2
3
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

4. 安装 countly

1
sh ./countly.install.sh

centos 6.x 安装 countly

1. 修改bin\countly.install_rhel.sh

如果安装了nodejs mongodb nginx,则注释掉相应语句

2. 解决问题 error: #error This version of node/NAN/v8 requires a C++11 compiler

安装devtoolset-3

1
2
rpm -ivh https://www.softwarecollections.org/en/scls/rhscl/devtoolset-3/epel-6-x86_64/download/rhscl-devtoolset-3-epel-6-x86_64.noarch.rpm
yum install devtoolset-3-gcc-c++

安装完毕后使用命令,临时覆盖系统原先的gcc引用

1
scl enable devtoolset-3 bash

若想永久覆盖,可在.bashrc中添加

1
source /opt/rh/devtoolset-3/enable

然后再继续npm install,就能够正常安装以前无法编译通过的module了

3. 运行countly.install_rhel.sh安装

4. 启动nginx

1
service nginx restart

默认是80端口,如果被占修改nginx配置文件

5. 启动countly

countly start

Tomcat

1. 为了保证get数据采用UTF8编码,在server.xml中进行了如下设置(URIEncoding=”UTF-8”):

1
2
3
4
<Connector port="8080" maxThreads="150" minSpareThreads="25" 
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" debug="99" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="UTF-8"/>

2. catalina.out 日志分割

安装cronolog

1
2
3
4
5
6
wget http://cronolog.org/download/cronolog-1.6.2.tar.gz 
tar zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install

查看cronolog安装后所在目录(验证安装是否成功)

1
which cronolog

一般情况下显示为:/usr/local/sbin/cronolog

打开catalina.sh文件

找到下面行并把它用 # 注释掉

1
touch "$CATALINA_OUT"
1
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out

改为:

1
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out
1
2
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"

改为:

1
2
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
| /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &

3. Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式,按天存放,解决catalina.out日志文件过大问题

准备jar包:

log4j-1.2.17.jar (从 下载

tomcat-juli.jar, tomcat-juli-adapters.jar (从 下载 ,根据你的Tomcat版本选择对应的分支)

将上面的三个jar包拷贝到 Tomcat 的 lib 目录下;

将 tomcat-juli.jar 拷贝到 Tomcat 的 bin 目录下,替换原有的jar包;

修改 Tomcat 的 conf/context.xml 文件,

(增加 swallowOutput=”true” 的属性配置,只有这样才能完全的把tomcat的stdout给接管过来。这一步很关键 在官网及网上找了许多资料都没有提及。);

删除 Tomcat 的 conf/logging.properties 文件(或者重命名-建议);

在 Tomcat 的 lib 目录下创建 log4j.properties 文件:

配置Lua运行环境

1
2
3
wget http://www.lua.org/ftp/lua-5.3.1.tar.gz
tar zxf lua-5.3.1.tar.gz
cd lua-5.3.1

修改Makefile文件

1
2
vim Makefile
INSTALL_TOP= /usr/local/lua
1
2
3
yum install -y readline-devel ncurses-devel
make linux
make install

通过yum安装gcc 4.9 5.2等高版本gcc

gcc 4.9 安装

1
2
3
4
yum install centos-release-scl -y
yum install devtoolset-3-toolchain -y
scl enable devtoolset-3 bash
gcc --version

gcc 5.2 安装

1
2
3
4
yum install centos-release-scl -y
yum install devtoolset-4-toolchain -y
scl enable devtoolset-4 bash
gcc --version

Hyperic HQ系统监控

安装 Hyperic HQ 5.8.2.1 中文版

1. 环境描述查询

1
2
cat /etc/issue
uname -a

2. 安装文件准备

下载地址

下载安装文件: hyperic-hq-installer-x86-64-linux-5.8.2.1.tar.gz ,放在 /work/temp目录下

3. 安装过程

1
2
3
4
5
6
7
mkdir /work
mkdir /work/hq-zh
mkdir /work/temp
cd /work/temp
tar xzvf hyperic-hq-installer-x86-64-linux-5.8.2.1.tar.gz
cd hyperic-hq-installer-5.8.2.1/
./setup.sh

打开另一终端窗口,进入到 root 用户

1
/work/temp/hyperic-hq-installer-5.8.2.1/installer/data/hqdb/tune-os.sh

回到原窗口继续安装:

运行

1
2
3
4
5
cd /work/hq-zh/server-5.8.2.1/bin
./hq-server.sh start

cd /work/hq-zh/agent-5.8.2.1/bin
./hq-agent.sh start

4. 使用

打开浏览器访问 http://192.168.1.103:7080/

hqadmin

xxxxx

修改iptables,打开agent接口

1
2
3
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7443 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2144 -j ACCEPT
/etc/init.d/iptables restart

5. 监控tomcat7,要打开tomcat的JMS,找到catalina.sh里面的这句

1
# ----- Execute The Requested Command -----------------------------------------

在这句前面加上下面

1
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=xsb37-int.cnhubei.com -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

其中xsb37-int.cnhubei.com为host的名称

/etc/hosts文件里要加入

1
127.0.0.1       xsb37-int.cnhubei.com localhost.localdomain localhost 

在linux下使用rpm版本安装的mysql,HQ Agent不能对其进行自动发现,只能手动添加。

具体是

  1. 点击进入该linux的监控平台
  2. 点击Tools Menu – > New Server进行添加server的页面,填入Name,选中Mysql的插件,在Install Path:填入mysql的安装目录(一般是/var/lib/mysql),保存。
  3. 配置属性里的jdbcUrl属性里输入:jdbc:mysql://10.99.113.32:3306

apache安装

1. 删除系统自带的Apache

1
rpm -qa | grep httpd

2. 关闭并删除httpd服务

1
2
service httpd stop
chkconfig --del httpd

3. 然后倒序删除

1
2
rpm -e system-config-httpd-1.3.3.3-1.el5 --nodeps
等等.......

4. 下载Apache

下载

5. 安装Apache

1
2
3
tar -zxvf httpd-2.2.27.tar.gz
cd httpd-2.2.27
./configure --prefix=/zewspaper/apache --enable-so --enable-mods-shared=most --enable-rewrite=shared --enable-proxy=shared --enable-proxy-ajp=shared --enable-proxy-balancer=shared --enable-speling=shared

其中–prefix=/zewspaper/apache 是设置安装的目录

如果报错,则运行

1
yum -y install gcc安装gcc
1
2
make
make install

6. Apache启动

1
cd /zewspaper/apache/bin/

修改/zewspaper/apache/conf/httpd.conf文件

将里面的#ServerName localhost:80注释去掉即可。

1
2
3
./apachectl start        #启动Apache
./apachectl stop #关闭Apache
./apachectl restart #重启Apache

禅道

1. 安装

http://www.zentao.net/download/

下载linux64版

1
2
3
4
5
6
cd /opt/
wget http://dl.cnezsoft.com/zentao/8.2.4/ZenTaoPMS.8.2.4.zbox_64.tar.gz
tar -zxvf ZenTaoPMS.8.2.4.zbox_64.tar.gz
/opt/zbox/zbox start -ap 8088 -mp 3307
cd zbox/
./auth/adduser.sh

http://192.168.1.132:8088/adminer/ 输入刚才的数据库root和密码,选择zentao库,可以导入数据库了

http://192.168.1.132:8088/ 访问禅道

2. 导出数据库

1
2
mysqldump -u root -p zentao > zentao.sql 
mysqldump -u root -h 127.0.0.1 -P 3307 -p zentao > zentao-2017-11-14.sql

3. 升级

http://www.zentao.net/book/zentaopmshelp/93.html

Jenkins

安装

1. 安装

1
wget http://mirrors.jenkins-ci.org/war-stable/latest/jenkins.war

2. 运行

1
nohup java -jar jenkins.war --httpPort=8990 >>jenkins.out &

3. 安装插件

Artifact Deployer Plug-in

用于生成jar包后复制到指定目录,如下配置:

1
2
3
Artifacts to deploy:*.jar
Basedir:critz-rest/critz-rest/target/
Remote File Location:/www/jenkins/

Hudson Post build task

用于复制到指定目录后执行相应的启动shell脚本命令,如:sh /www/jenkins/critz-rest-1.0.sh restart

注意事项,

svn路径的配置,一定要完整,不要使用Local module directory (optional),否则可能导致无法发现新提交的svn代码。。。。。

注册用户需要建立,(系统管理- Configure Global Security)勾选”启用安全”-“ Jenkins专有用户数据库”-“允许用户注册”,然后保存

点击右上角”注册”,进行新用户注册。

(系统管理- Configure Global Security)勾选”项目矩阵授权策略”,添加新注册的用户,并勾选”Overall”里面的”Administer”,保存

jenkins目录迁移

1. 拷贝原/root/.jenkins 目录到xxxx

2. 在启动Web容器之前设置JENKINS_HOME环境变量.

用root用户登录

编辑profile文件:

1
vi /etc/profile

在最后加入:export JENKINS_HOME=xxxx

保存,退出后执行:

1
source  /etc/profile

让配置生效

3. 登入jenkins-系统管理-系统设置-Maven-Maven安装

MAVEN_HOME改成

1
${JENKINS_HOME}/tools/hudson.tasks.Maven_MavenInstallation/Maven3

https的keystore

HTTPS requires a signed certificate certificate and a certificate password which we provide using property values. To do so, we can use the JDK’s keytool like this:

1
$ keytool -genkey -alias bookmarks -keyalg RSA -keystore src/main/resources/tomcat.keystore

1. 文件说明

1
2
3
4
5
ca-certs.crt	ssl.key和ssl.crt合并后的ca文件
ssl.crt 证书文件
ssl.key 私钥文件,有密码(目前是lexiangkudong)
ssl.p12 p12文件,是证书文件和私钥文件合并成的,需要在startssl网站生成
ssl.keystore 通过p12文件生成的,java的密钥库,java部署https时只需要这个文件

2. 按照网站的步骤,在startssl网站申请证书文件和私钥文件

http://www.chinaz.com/free/2010/1111/142581_3.shtml
http://www.deepvps.com/apply-startssl-ssl-certificate.html
http://www.freehao123.com/startssl-ssl/

3. 用在startssl网站申请的证书文件和私钥文件生成p12文件,网站左边栏

4. 使用下面的步骤利用p12文件,生成keystore文件

1
2
keytool -rfc -list -keystore ssl.p12 -storetype pkcs12
keytool -importkeystore -v -srckeystore ssl.p12 -srcstoretype pkcs12 -srcstorepass 12345678 -destkeystore ssl.keystore -deststoretype jks -deststorepass 11111111

其中12345678为key文件的密码,11111111为给keystore文件设置的密码

1
keytool -list -keystore ssl.keystore

这样就在目录中生成keystore文件了

5. 把keystore放入linux的某个目录

6. 在spring boot的jar文件的配置application.properties文件中设置ssl

1
2
3
4
5
6
7
8
#443是https的端口号
server.port=443
#keystore文件的路径
server.ssl.key-store=/usr/local/ssl/crt/ssl.keystore
#kestore文件的密码
server.ssl.key-store-password=11111111
#key文件的密码
server.ssl.key-password=12345678

Jenkins进阶之远程部署、构建Git分支、回滚

https://www.toutiao.com/i6508546172448145934/

1. 远程服务器部署、启动

常用两种方式:

Publish over SSH

准备工作

ssh免密配置
通过设置SSH key免密访问远程服务器
如有服务器A、B,现想A通过ssh免密码访问B,则将A机器中的id_rsa.pub ,拷贝到B机器的 .ssh/authorized_keys 文件中

1
2
3
4
$ cat id_rsa.pub >> .ssh/authorized_keys
#拷贝A服务器公钥到B服务器authorized_keys文件,默认该文件不存储,系统会新建该文件。
$ chmod 600 authorized_keys
#设置.ssh目录权限

A机器第一次ssh 登录到B机器时,需要输入B机器的密码,以后就可以不输入了。

安装Publish over SSH插件

系统管理→管理插件→可选插件→Publish Over SSH

插件配置

“系统管理>系统设置”中进行配置
参数说明

  • Passphrase:SSH的密码
    创建ssh key时指定,本文创建ssh key时默认为空。故,此处为空,不填写。
  • Path to key:SSH私钥的文件路径
    私钥文件的路径,可以是绝对路径,也可以是相对$JENKINS_HOME的相对路径
  • Key:私钥
    私钥导出后的文本内容
    如果”Key”和”Path to key”都设置,则”Key”的优先级较高
  • Disable exec:禁止在目标机上执行命令

SSH Server 配置

指定远程服务器的ip,存放目录。可以配置多个ssh server ,jenkins自动将打包成果发送到多个远程服务器。
配置完成后,可以 通过 “Test Configuration” 测试是否配置正确。
参数说明

  • Name
    SSH节点配置的名称,在Job中使用Publish over SSH插件时,此名称将出现在”SSH Server”中”Name”的下拉列表中,如下图:
  • Hostname
    通过SSH连接到的机器的主机名或IP
  • Username
    SSH服务使用的用户名,使用key进行连接时为key指定的用户名
  • Remote Derictory
    运程机器上真实存在的目录,并且”Username”指定的用户要有访问此目录的权限,插件将把文件传送到此目录下。

Publish over SSH 的应用

创建项目时,设置 构建环境,与Publish over ssh 的设置一一对应

2. Jenkins生产环境回滚

回滚的原理:

将历史构建的部署包备份,回滚时选择历史构建编号,重新拷贝部署包到远程服务器。

创建回滚任务

选择参加化构建,便于在触发回滚时指定回滚版本号。
参数说明:

建议选择Run Parameter,回滚时从下拉框选择回退版本号。

  • Name:任意名称,此名称是在下面的回滚构建脚本中以变量的方式使用。
  • Project:必须是构建列表里的名称,回滚脚本依赖该名称查找回滚的包。

源码管理

选择None
构建:
变量说明:

  • WrappeRollback:
    对应Run Parameter中配置的名称。该变量的值是构建的包的默认存放地址。
  • BUILD_NUMBER:历史构建版本号。

执行回滚

选择任务列表中的回滚任务:
选择回滚版本号,开始构建

错误汇总

1. Error Message: ios notification length should be less than 220 bytes

极光推送ios最多55个汉字,包括extras字段内容。

2. 手机连电信3g网访问服务器,报504错误。

把手机上的联网模式 由ctwap 改成ctnet就可以正常访问了

3. 如果tomcat或jvm崩溃报如下错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fbc6578afad, pid=6312, tid=140446257850112
#
# JRE version: Java(TM) SE Runtime Environment (7.0_51-b13) (build 1.7.0_51-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.51-b03 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# J com.tipoff.server.rest.controller.BrokenAPIController.setupBrokenAPI(Lredis/clients/jedis/Jedis;Ljava/lang/Integer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Lcom/tipoff/server/cms/model/Broken;)Lcom/tipoff/server/rest/model/BrokenAPI;
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
#

解释归结于:JIT在做编译优化的时候处理时出错,可能是触发了JVM的编译器的BUG导致的。

在这里,导致本次错误的是这个方法:

1
com.tipoff.server.rest.controller.BrokenAPIController.setupBrokenAPI

解决办法:让jvm跳过该方法的编译优化

catalina.sh找到JAVA_OPTS

增加下边的代码就可以了!

1
-XX:CompileCommand=exclude,com/tipoff/server/rest/controller/BrokenAPIController,setupBrokenAPI

4. CentOS 6.6,/etc/sysconfig/下没有iptables的问题

任意运行一条iptables防火墙规则配置命令

1
iptables -P OUTPUT ACCEPT

对iptables服务进行保存

1
service iptables save

编辑/etc/sysconfig/下iptables文件

重启iptables服务

1
service iptables restart

5. c++: error: unrecognized command line option ‘-std=gnu++14’

升级高版本gcc