安装部署


开发

  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、完成
    
  1. 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

# hostnamectl --static set-hostname nealname

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

LANG="en_US.utf8"

LC_CTYPE="en_US.utf8"

# source /etc/locale.conf
  1. 安装基本工具
1
2

# 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

# 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

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

# useradd nealname
  1. 安装Java环境
1
2
3

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

$ 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
  1. 查看IPVS表

    ipvsadm -ln
    
  2. 启动keepalived

    service keepalived start
    
  3. 查看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
    
  1. logstash日志生成器(shipper)。

    wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz
    tar zxvf logstash-1.4.2.tar.gz
    
  2. 新建一个配置文件: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"
        }
    }
    
  3. 启动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
    
  4. 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
    
  1. 设定密码文件

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

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

    /usr/bin/rsync --daemon
    
  3. 设定 /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, 使上述设定生效.

  1. rsync服务器和防火墙

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

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

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

  1. 启动nginx

    service nginx restart
    

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

  2. 启动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"/>
  1. 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 &
    
  2. 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/

  1. 用在startssl网站申请的证书文件和私钥文件生成p12文件,网站左边栏
  1. 使用下面的步骤利用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文件了

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

  3. 在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