CentOS7+STF环境搭建

一、简介

OpenSTF是一个手机设备管理平台,可以对手机进行远程管理、调试、远程手机桌面监控等操作,可以批量对大量设备进行WEB端管理。
STF (or Smartphone Test Farm) is a web application for debugging smartphones, smartwatches and other gadgets remotely, from the comfort of your browser.
二、环境搭建
1、基本命令安装
安装wget、zip等命令
yum install wget
yum install -y unzip zip
2、java环境配置
(1)下载jdk安装包并上传至Linux
因为在linux中直接使用curl或者wget下载jdk安装包会被重定向,所以我们要先在windows里先下载好所需的安装包再上传到linux中 jdk1.8官网下载地址 jdk1.9官网下载地址
我这里下载的包是:jdk-8u161-linux-x64.tar.gz

(2).解压安装
对安装包执行解压

[root@localhost ~]tar -zxvf jdk-8u161-linux-x64.tar.gz
解压出来一个文件夹jdk1.8.0_161
[root@localhost ~]# mv jdk1.8.0_161/ /usr/local/java
(3).配置环境变量
vi /etc/profile
在文件中增加如下内容:
export JAVA_HOME=/usr/local/java/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
验证环境是否ok:
java -version

3.android SDK环境配置

首先下载SDK
cd /usr/local 
mkdir android 
cd android 
wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip 
unzip sdk-tools-linux-3859397.zip
配置环境变量
vi /etc/profile
在文件中增加如下内容
export PATH=$PATH:/usr/local/android/tools/bin
然后执行
source profile 
查看已安装信息
sdkmanager --list
安装platform-tools
sdkmanager "platform-tools"
配置环境变量
vi /etc/profile
在文件中增加如下内容:
export PATH=$PATH:/usr/local/android/platform-tools
执行
source profile sdkmanager --list
验证环境是否ok:
adb --version

4.node安装

cd /usr/local 
mkdir node 
cd node
wget https://nodejs.org/download/release/v9.0.0/node-v9.0.0-linux-x64.tar.gz 
tar xvf node-v9.0.0-linux-x64.tar.gz 
ln -s /usr/local/node/node-v9.0.0-linux-x64/bin/node /usr/local/bin/node 
ln -s /usr/local/node/node-v9.0.0-linux-x64/bin/npm /usr/local/bin/npm
检查环境
node -v 
npm -v

5.rethinkdb安装

执行:
cd /opt/dong -----即在opt新建一个目录用来用来其他依赖 
wget http://download.rethinkdb.com/centos/7/`uname -m`/rethinkdb.repo -O /etc/yum.repos.d/rethinkdb.repo
yum install rethinkdb
检查环境是否ok:
rethinkdb -v

6.GraphicsMagick安装

1.安装依赖
[root@localhost ~]# yum install -y gcc libpng libjpeg libpng-devel libjpeg-devel ghostscript libtiff libtiff-devel freetype freetype-devel
2、执行:
cd /opt/dong 
wget https://iweb.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/1.3.26/GraphicsMagick-1.3.26.tar.gz 
tar xvf GraphicsMagick-1.3.26.tar.gz 
cd GraphicsMagick-1.3.26 
./configure 
make 
make install
验证环境是否ok:
gm

7.yasm安装

执行:
cd /opt/dong 
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz 
tar xvf yasm-1.3.0.tar.gz 
cd yasm-1.3.0 
./configure 
make 
make install
验证环境是否ok:
yasm --version

8.libsodium安装

执行:
cd /opt/dong 
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.15.tar.gz 
tar xvf libsodium-1.0.15.tar.gz 
./configure 
make 
make install
验证环境是否ok:
whereis libsodium

9.zeromq安装

执行:
cd /opt/dong 
wget https://github.com/zeromq/libzmq/releases/download/v4.2.2/zeromq-4.2.2.tar.gz tar xvf zeromq-4.2.2.tar.gz 
cd zeromq-4.2.2 
./configure 
遇到报错,yum install gcc-c++ 
make 
make install

10.protobuf安装

执行:
cd /opt/dong 
wget https://github.com/google/protobuf/releases/download/v3.5.0/protobuf-cpp-3.5.0.tar.gz 
tar xvf protobuf-cpp-3.5.0.tar.gz 
cd protobuf-3.5.0 
./configure --prefix=/usr/local/protobuf 
make 
make install
配置变量:
vi /etc/profile
在文件中增加如下内容:
export PATH=$PATH:/usr/local/protobuf/bin/ 
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
执行
source profile
验证环境是否ok:
protoc --version

11.pkg-config安装

执行:
cd /opt/dong 
wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz 
tar xvf pkg-config-0.29.2.tar.gz 
cd pkg-config-0.29.2 
./configure --prefix=/usr/local/pkg-config --with-internal-glib 
make 
make install
验证环境是否ok:
pkg-config --version

12.stf安装

执行:
npm install -g stf
如果安装失败,先执行如下命令,再安装
npm config set unsafe-perm=true
下载完成后,进入:
cd /usr/local/node/node-v9.0.0-linux-x64/lib/node_modules/stf/bin 
./stf doctor

检查结果

[root@localhost bin]# ./stf doctor
INF/cli:doctor 10067 [*] OS Arch: x64
INF/cli:doctor 10067 [*] OS Platform: linux
INF/cli:doctor 10067 [*] OS Platform: 3.10.0-327.el7.x86_64
INF/cli:doctor 10067 [*] Using Node 8.9.1
INF/cli:doctor 10067 [*] Using ZeroMQ 4.2.2
INF/cli:doctor 10067 [*] Using RethinkDB 2.3.6
INF/cli:doctor 10067 [*] Using GraphicsMagick 1.3.26
INF/cli:doctor 10067 [*] Using ADB 1.0.39
INF/cli:doctor 10067 [*] Using ProtoBuf 3.5.0
ok,至此环境搭建成功

启动stf

进入stf目录:
cd /usr/local/node/node-v9.0.0-linux-x64/lib/node_modules/stf/bin 
./stf local --public-ip 111.67.203.89 --allow-remote (172.31.3.243位centos服务器地址即stf服务器地址)
在其他地址的电脑上,打开浏览器,输入
http://111.67.203.89:7100
即可访问stf

遇到的问题

1、zmq.node文件错误
转到stf工程根目录执行:
npm rebuild
备注:
如果上述命令失败,可能会出现一个死循环,按Ctrl+C停止,执行npm config set unsafe-perm=true,再执行上述命令

2、libzmq.so.5 not found

cd /etc
vi /etc/ld.so.conf
#新增一行:
/usr/local/zeromq/lib
ldconfig

3、远程访问失败
可能是防火墙未关闭,关闭方法

#检查防火墙状态
firewall-cmd --state
#关闭防火墙
systemctl stop firewalld.service
#禁止开机启动
systemctl disable firewalld.service

CentOS7 安装远程桌面

Xrdp是Microsoft远程桌面协议(RDP)的一个开源实现,它允许以图形方式控制远程系统。使用RDP,您可以登录到远程计算机并创建一个真正的桌面会话,就像您登录到本地计算机一样。
系统环境
  • 服务端:Centos7.7 Minimal
  • 客户端:Windows10
安装桌面环境

本实验中安装的系统没有安装桌面环境,我们需要自己安装,如果已经安装桌面了清跳过这一步。Centos7提供了”Cinnamon Desktop”,”MATE Desktop”,”GNOME Desktop”,”KDE Plasma Workspaces”,”LXQt Desktop”,”Xfce”让我们安装。

下面的命令列出可用环境组:

[root@localhost ~]# yum grouplist
Loaded plugins: fastestmirror
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * epel: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Available Environment Groups:
   Minimal Install
   Compute Node
   Infrastructure Server
   File and Print Server
   Cinnamon Desktop
   MATE Desktop
   Basic Web Server
   Virtualization Host
   Server with GUI
   GNOME Desktop
   KDE Plasma Workspaces
   Development and Creative Workstation
Available Groups:
   Cinnamon
   Compatibility Libraries
   Console Internet Tools
   Development Tools
   Educational Software
   Electronic Lab
   Fedora Packager
   General Purpose Desktop
   Graphical Administration Tools
   Haskell
   LXQt Desktop
   Legacy UNIX Compatibility
   MATE
   Milkymist
   Scientific Support
   Security Tools
   Smart Card Support
   System Administration Tools
   System Management
   TurboGears application framework
   Xfce
Done

我们可以选择自己喜欢的桌面环境,在这里选择安装Xfce桌面:

[root@localhost ~]# yum -y install epel-release && yum groupinstall Xfce
安装Xrdp
[root@localhost ~]# yum -y install xrdp

安装完成之后,设置开机启动并启动xrdp

[root@localhost ~]# systemctl start xrdp && systemctl enable xrdp

创建~/.Xclients,设置默认启动xfce4桌面

[root@localhost ~]# echo "xfce4-session" > ~/.Xclients
[root@localhost ~]# chmod +x .Xclients
在客户端远程连接

Centos7安装Xrdp远程桌面服务Centos7安装Xrdp远程桌面服务

Centos7安装Xrdp远程桌面服务Centos7安装Xrdp远程桌面服务

Centos7安装Xrdp远程桌面服务Centos7安装Xrdp远程桌面服务

jenkins 通过shell启动java应用程序会随着job完成而被自动关闭的解决方法

我们使用jenkins进行构建打包后,实现自动部署,但 通过shell启动应用程序后,构建job完成应用程序也会自动关闭。下面以tomcat为例

如上执行后,tomcat先关闭,而后部署启动成功,可以访问。但构建job只完成后,tomcat自动关闭。

解决如下:

在脚本前面添加上BUILD_ID=XXXXX,即可如下:

这样job结束后,tomcat不会自动关闭。

shell条件判断

1.判断语法

a)  test 条件表达式

b)  [ 条件表达式 ]

c)  [[ 条件表达式 ]]        可匹配正则 =~

d)  判断后执行多个命令

[  条件1 ] && {
          命令1
          命令2
}

例如:

[ 1 -eq 2 ]&&{
    echo aa;
    echo bb;
}||{
    echo cc
    echo dd
}

 

man test去查看,很多的参数都用来进行条件判断

 

2.文件类型判断

-e 是否存在 不管是文件还是目录,只要存在,条件就成立
-f 是否为普通文件
-d 是否为目录
-S socket
-p pipe
-c character
-b block
-L 软link

 

3.文件内容判断

-s 是否为非空文件

! -s 表示空文件

 

4.文件权限判断

-r  当前用户对其是否可读
-w 当前用户对其是否可写
-x 当前用户对其是否可执行
-u 是否有suid
-g 是否sgid
-k 是否有t位

 

5.两个文件的比较判断

file1 -nt file2	 比较file1是否比file2新
file1 -ot file2	 比较file1是否比file2旧
file1 -ef file2	 比较是否为同一个文件,或者用于判断硬连接,是否指向同一个inode

 

6.整数之间的判断

-eq	 相等
-ne	 不等
-gt	 大于
-lt  	 小于
-ge	 大于等于
-le	小于等于

 

7.字符串之间的判断

-z  是否为空字符串 字符串长度为0,就成立
-n  是否为非空字符串 只要字符串非空,就是成立
string1 = string2    是否相等           --等号两边要有空格
string1 != string2   不等
! 结果取反

 

注意

[ “$1” = “abc” ]       —判断字符是否相等,变量也要用双引号

 

8.多重条件判断

逻辑判断符号:

-a 和 && 逻辑与

只有两个条件都成立,整个大条件才成立

[ 1 -eq 1 ] && [ 2 -ne 3 ]

[ 1 -eq 1 -a 2 -ne 3 ]

 

-o 和 || 逻辑或

只要其中一个条件成立,整个大条件就成立

[ 1 -eq 1 -o 2 -ne 2 ]

[ 1 -eq 1 ] || [ 2 -ne 2 ]

 

 

! 逻辑非 优先级最低

-a 优先级 比 -o 优先级要高

[[]] 和(())中可以使用&& || 不能使用 -a -o

9.实例

# [ $(id -u) -eq 0 ] && echo “当前是超级用户”            –id -u  username  可以查看用户id

$ [ $UID -eq 0 ] && echo “当前是超级用户” || echo “you不是超级用户”

# ((1==2));echo $?      –C语言风格的数值比较

# ((1>=2));echo $?

 

 

题目:输入一个路径,判断路径是否存在,而且输出是文件还是目录,如果是链接文件,还得输出是有效的连接还是无效的连接

思路:链接文件也属于文件,所以先判断链接文件,再去判断是否为文件

 #!/bin/bash
read -p "Input your path:" path
if [ -e $path -a -L $path ];then 
    echo "$0 is link file"
elif [ ! -e $path ] && [ -L $path ];then
    echo "$0 is not effctive link file"
elif [ -d $path ];then
    echo "$0 is a dirctory"
elif [ -f $path ];then
    echo " $0 is file"
else
    echo "$0 is other file"
fi

ls -L  dir                   -L可以判断软链接

–无效链接用-e判断会不存在

-L   如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;

nginx配置快捷启动service

1,/etc/init.d/目录下缺少nginx默认启动脚本
vim /etc/init.d/nginx
新建脚本文件,然后把下面的代码复制进去

#! /bin/sh
# chkconfig: 2345 55 25
# Description: Startup script for nginx webserver on Debian. Place in /etc/init.d and
# run 'update-rc.d -f nginx defaults', or use the appropriate command on your
# distro. For CentOS/Redhat run: 'chkconfig --add nginx'

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

# Author:   licess
# website:  http://lnmp.org

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=nginx
NGINX_BIN=/usr/local/nginx/sbin/$NAME
CONFIGFILE=/usr/local/nginx/conf/$NAME.conf
PIDFILE=/usr/local/nginx/logs/$NAME.pid

case "$1" in
start)
    echo -n "Starting $NAME... "

    if netstat -tnpl | grep -q nginx;then
        echo "$NAME (pid `pidof $NAME`) already running."
        exit 1
    fi

    $NGINX_BIN -c $CONFIGFILE

    if [ "$?" != 0 ] ; then
        echo " failed"
        exit 1
    else
        echo " done"
    fi
    ;;

 stop)
    echo -n "Stoping $NAME... "

    if ! netstat -tnpl | grep -q nginx; then
        echo "$NAME is not running."
        exit 1
    fi

    $NGINX_BIN -s stop

    if [ "$?" != 0 ] ; then
        echo " failed. Use force-quit"
        exit 1
    else
        echo " done"
    fi
    ;;

 status)
    if netstat -tnpl | grep -q nginx; then
        PID=`pidof nginx`
        echo "$NAME (pid $PID) is running..."
    else
        echo "$NAME is stopped"
        exit 0
    fi
    ;;

 force-quit)
    echo -n "Terminating $NAME... "

    if ! netstat -tnpl | grep -q nginx; then
        echo "$NAME is not running."
        exit 1
    fi

    kill `pidof $NAME`

    if [ "$?" != 0 ] ; then
        echo " failed"
        exit 1
    else
        echo " done"
    fi
    ;;

 restart)
    $0 stop
    sleep 1
    $0 start
    ;;

 reload)
    echo -n "Reload service $NAME... "

    if netstat -tnpl | grep -q nginx; then
        $NGINX_BIN -s reload
        echo " done"
    else
        echo "$NAME is not running, can't reload."
        exit 1
    fi
    ;;

 configtest)
    echo -n "Test $NAME configure files... "

    $NGINX_BIN -t
    ;;

 *)
    echo "Usage: $0 {start|stop|force-quit|restart|reload|status|configtest}"
    exit 1
    ;;

esac

2,切换目录,修改权限

cd /etc/init.d

chmod +x nginx

/sbin/chkconfig --level 345 nginx on

service nginx start