安装部署


开发

  1. libogg

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

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

1
2
3
4
5
./configure --prefix=/usr    \
--disable-static \
--docdir=/usr/share/doc/libogg-1.3.3 &&
make
make install
  1. tar.xz如何解压
1
2
3
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

    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
  1. 更改hostname
1
2
3
4
5

# hostnamectl --static set-hostname nealname

# logout

  1. 替换 /etc/locale.conf 的内容,解决LC_CTYPE: cannot change locale (UTF-8)
1
2
3
4
5
6
7

LANG="en_US.utf8"

LC_CTYPE="en_US.utf8"

# source /etc/locale.conf

  1. 安装基本工具
1
2
3

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

  1. 升级openssl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 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

  1. 解决openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory错误
1
2
3
4
5

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

  1. 创建普通用户
1
2
3

# useradd nealname

  1. 安装Java环境
1
2
3
4
5

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


  1. 安装nginx
1
2
3
4
5
6
7
8
9
10
11
12
13

$ sudo yum install -y nginx

$ sudo nginx -t

$ sudo systemctl start nginx

$ sudo systemctl stop nginx

$ sudo systemctl restart nginx

$ sudo systemctl enable nginx

  1. 阿里云控制台
  • 开通SLB
  • 配置域名A记录
  • 禁止外网访问 安全组

系统服务

安装g++

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

    rpm -qa | grep "g++"

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

    yum whatprovides "*/g++"

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

    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是否安装
    rpm -q kernel-devel
    如果没装,查看内核版本

     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. 直接用下面安装
    yum install kernel-devel

  3. 下载
    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.

    解决办法:

     yum -y install openssl-devel
     ./configure
     
    

    configure: error: Popt libraries is required

    解决办法:

     yum install popt-devel
     make;make install
     
    

    安装完之后keepalived的配置:

     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

     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
              }
          }
     } 
    

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

     ipvsadm -v
    
  4. 查看IPVS表
    ipvsadm -ln

  5. 启动keepalived
    service keepalived start

  6. 查看lvs_server服务器启动keepalived的日志信息
    tail -f /var/log/messages

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

参考

  1. 下载elasticsearch。

     wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.2.tar.gz
     tar zxvf elasticsearch-1.3.2.tar.gz
    
  2. 解压后,进入bin目录。执行如下命令,让elasticsearch以前台方式启动:

     ./elasticsearch -f
    
  3. 访问默认的9200端口

     curl -X GET http://localhost:9200
    
  4. 安装Redis

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

     redis-server --loglevel verbose
    
  5. logstash日志生成器(shipper)。

     wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz
     tar zxvf logstash-1.4.2.tar.gz
    
  6. 新建一个配置文件:shipper.conf,

     cd logstash-1.4.2
     mkdir conf
    

    其内容如下

     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本身的日志位置。&是以守护进程方式启动。)

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

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

     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}
     
    

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

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

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

     [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
    其内容如下:

     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本身的日志位置。&是以守护进程方式启动。)

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

    启动logstash的图形界面服务

     bin/logstash-web
    

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

     settings.port = 9292
    

centos 安装 ntpdate 并同步时间

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

     yum install -y ntp
    
  2. 继续在命令行中操作,进行同步时间

     ntpdate time.nist.gov
    

rsync 文件同步

  1. 安装

     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的内容格式为:
    用户名:密码

     root:mike
     chown root.root rsyncd.secrets  #修改属主
     chmod 600 rsyncd.secrets     #修改权限
    
  3. 启动rsync服务器

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

     # 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 服务器端口通过,客户端上也应该让通过。

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

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

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

    rsync客户端同步数据

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

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

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

     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,内容是如下的:

     #!/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的内容;

   # echo “mima” > /etc/rsyncd/rsync5root.secrets

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

   #crontab -e

加入下面的内容:

   # 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 下的可执行脚本任务;

  1. 要重启crond 服务器;

     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安装

	yum -y install wget
    

centos7 iptables

  1. 关闭firewall:

     systemctl stop firewalld.service #停止firewall
     systemctl disable firewalld.service #禁止firewall开机启动
    
  2. 安装iptables防火墙

     yum install iptables-services #安装
    

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

     # 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! #保存退出

     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

yum -y list java*

yum -y install java-1.8.0-openjdk*

maven 安装

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

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
  1. 安装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
  1. 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
  1. 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源在线安装

     yum install -y git
    
  2. 创建一个git用户,用来运行git服务

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

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

     chown git:git learngit.git
     chown git:git learngit.git/* -R
    
  5. 客户端clone

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

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

    最后一个冒号后改为:

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

搭建svn

  1. 通过 yum install subversion来安装

     svnserve --version
    
  2. 建立svn目录库

     mkdir svn
     svnadmin create svn/repo
    
  3. 进入版本库中的配置目录conf,此目录有三个文件:

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

     anon-access = none
     auth-access = write
     
     password-db = passwd
     
     authz-db = authz
     
     realm = repo
    

    用户名口令文件(passwd)

     john.zhang = zh123456
    

    权限配置文件(authz)

     [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选项

     store-plaintext-passwords = yes
    
  5. 启用svn

     svnserve -d -r /www/svn/
    
  6. 修改防火墙,开放3690端口

     -A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
     service iptables restart
    
  7. 建立test目录进行上传svn测试

     mkdir test
     svn import test svn://211.101.18.76/repo/test -m "test" --force-log
    
  8. svn提交代码

     svn ci -m "20160627"
     
    
  9. svn添加新文件到库中

     svn add */*.md
    

NodeBB论坛安装

  1. 环境准备

     yum -y update
    

    CentOS 7

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

    安装redis 和 npm等

     yum -y install redis
     yum -y install npm
     
     yum -y install git ImageMagick
    

    启动redis

     systemctl start redis
     systemctl enable redis
    
  2. 下载NodeBB

     cd /path/to/nodebb/install/location
     git clone -b v1.0.3 https://github.com/NodeBB/NodeBB nodebb
    
  3. 安装nodebb

     cd nodebb
     npm install
     
     ./nodebb setup
    
  4. 启动

     ./nodebb start
    

countly安装

  1. 安装 ubuntu

  2. 下载 countly

  3. 安装 nodejs 4以上

     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

     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

     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引用

     scl enable devtoolset-3 bash
    

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

     source /opt/rh/devtoolset-3/enable
    

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

  3. 运行countly.install_rhel.sh安装

  4. 启动nginx

     service nginx restart
    

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

  5. 启动countly

    countly start

Tomcat

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

     <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

     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安装后所在目录(验证安装是否成功)

     which cronolog
    

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

    打开catalina.sh文件

    找到下面行并把它用 # 注释掉
    touch “$CATALINA_OUT”

    CATALINA_OUT=”$CATALINA_BASE”/logs/catalina.out
    改为:

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

    改为:

     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 文件,

     将<Context>为<Context swallowOutput="true">
    
     (增加 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. 环境描述查询
    cat /etc/issue

    uname -a

  2. 安装文件准备
    下载地址

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

  3. 安装过程
    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 用户

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

    回到原窗口继续安装:

    运行

     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接口

     -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里面的这句

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

    在这句前面加上下面

     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文件里要加入

     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

     rpm -qa | grep httpd
    
  2. 关闭并删除httpd服务

     service httpd stop
     chkconfig --del httpd
    
  3. 然后倒序删除

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

    等等…….

  4. 下载Apache

    下载

  5. 安装Apache

     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 是设置安装的目录

    如果报错,则运行

     yum -y install gcc安装gcc
    
     make
     make install
    
  6. Apache启动

     cd /zewspaper/apache/bin/
    

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

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

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

禅道

  1. 安装

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

下载linux64版

    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/ 访问禅道
  1. 导出数据库

    mysqldump -u root -p zentao > zentao.sql

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

  2. 升级

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

Jenkins

安装

  1. 安装

     wget http://mirrors.jenkins-ci.org/war-stable/latest/jenkins.war
    
  2. 运行

     nohup java -jar jenkins.war --httpPort=8990 >>jenkins.out &
    
  3. 安装插件

    Artifact Deployer Plug-in

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

     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文件:

     vi /etc/profile
    

    在最后加入:export JENKINS_HOME=xxxx

    保存,退出后执行:

     source  /etc/profile
    

    让配置生效

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

    MAVEN_HOME改成

     ${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:

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

     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文件

     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文件设置的密码

     keytool -list -keystore ssl.keystore
     
    

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

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

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

     #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 文件中
      $ 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 的设置一一对应
    
  1. 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崩溃报如下错误

     #
     # 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导致的。

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

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

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

    catalina.sh找到JAVA_OPTS

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

     -XX:CompileCommand=exclude,com/tipoff/server/rest/controller/BrokenAPIController,setupBrokenAPI
    
  4. CentOS 6.6,/etc/sysconfig/下没有iptables的问题

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

     iptables -P OUTPUT ACCEPT
     
    

    对iptables服务进行保存

     service iptables save
     
    

    编辑/etc/sysconfig/下iptables文件

    重启iptables服务

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

    升级高版本gcc

a