Archive

Archive for the ‘零敲碎打’ Category

CentOS6 使用rc.local实现开机自启动

November 9th, 2018 No comments

CentOS6 可以在rc.local中增加启动shell脚本实现开启自启动

这里假设需要启动

/usr/share/autostartup/demo-service.sh

STEP1. 将需要开启启动的脚本设置为标记为可执行文件

chmod +x /usr/share/autostartup/demo-service.sh

STEP2. 执行如下命令将/etc/rc.d/rc.local文件标记为可执行文件

chmod +x /etc/rc.d/rc.local

在CentOS7 中,/etc/rc.d/rc.local文件的权限被降低了,开机的时候执行在自己的脚本是不能起动一些服务的。

将需要执行的脚本写入到 /etc/rc.d/rc.local

echo/usr/share/autostartup/demo-service.sh” >> /etc/rc.d/rc.local
Categories: 系统管理, 零敲碎打 Tags: ,

CentOS使用run-as-user.sh处理运行环境的用户不同问题

November 9th, 2018 No comments

很多时候,部署运行环境的用户和实际运行的用户是不同的,
当因为环境限制,当时碰到以下场景的时候,就比较麻烦了,需要编写一个脚本来实现运行。
1.不能使用su和sudo时
2.用户没有shell不支持login时,比如nobody,服务用户
3.使用Docker等容器时
4.使用SSH远程执行命令,但是不能使用登陆用户

实现前提
1.需要运行用户的用户名和用户分组以及密码
2.需要运行用户的PUID和PGID

使用前请修改代码中实际运行的用户名,且用户存在

./run-as-user.sh 命令 命令参数

Read more…

Categories: 系统管理, 零敲碎打 Tags: , ,

CentOS一键编译安装 NodeJS脚本

November 9th, 2018 No comments

如题 CentOS一键编译安装 NodeJS脚本,使用NodeJS源代码编译,适用于CentOS和Debian,
默认安装的Nodejs版本已经老掉牙了
脚本支持选择node的版本和prefix
两个编译变量
NODE_VERSION=v8.11.3
NODE_PREFIX=/usr/local

使用了系统vCPU数量来控制NPROC数量,支持各种虚拟机的情况
NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1)
对于物理机编译安装,建议按实际CPU数量*单个CPU核心数量进行参数设置

另外使用国内的taobao作为NPM的第一来源镜像。

 
#!/bin/bash
 
##############################################################################
# Build develop enviroment for running npm and nodejs
#
# version="1.0.0" 
# node="v8" 
# os="CentOS v7.4" 
# user=“dev”
# description="Node v8 compiled from source running on CentOS v7.4"
##############################################################################
 
##############################################################################
# If is root
##############################################################################
if [ "$(whoami)" != 'root' ]; then
echo "install need root user"
exit
fi
 
##############################################################################
# Export enviroment variant
##############################################################################
export TERM=xterm
export NLS_LANG=American_America.AL32UTF8
export LANG=C        # C.UTF-8
export LANGUAGE=C    # C.UTF-8
export LC_ALL=C      # C.UTF-8
export TIMEZONE=Asia/Shanghai
 
##############################################################################
# Build variant
##############################################################################
NODE_VERSION=v8.11.3
NODE_PREFIX=/usr/local
 
##############################################################################
# Setup build enviroment
##############################################################################
yum -y update
yum -y install \
    ca-certificates \
    gcc \
    gcc-c++ \
    gnupg \
    libgcc \
    libstdc++ \
    kernel-headers \
    openssl \
    openssl-devel \
    mercurial \
    subversion \
    git
##############################################################################
# Install Node & NPM
##############################################################################
 
# Download and validate the NodeJs source
for key in \
    94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
    FD3A5288F042B6850C66B31F09FE44734EB7990E \
    71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
    DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
    C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
    B9AE9905FFD7803F25714661B63B535A4C206CA9 \
    56730D5401028683275BD23C23EFEFE93C4CFFFE \
; do \
    gpg --keyserver pgp.mit.edu --recv-keys "$key"|| \
    gpg --keyserver keyserver.pgp.com --recv-keys "$key" || \
    gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key" ; \
done
 
mkdir /node_src 
cd /node_src
curl -o node-${NODE_VERSION}.tar.gz -sSL https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}.tar.gz
curl -o SHASUMS256.txt.asc -sSL https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc
gpg --verify SHASUMS256.txt.asc
grep node-${NODE_VERSION}.tar.gz SHASUMS256.txt.asc | sha256sum -c -
 
# Compile and install
cd /node_src
tar -zxf node-${NODE_VERSION}.tar.gz
cd node-${NODE_VERSION}
./configure --prefix=${NODE_PREFIX}
#./configure
NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) 
make -j${NPROC}
make install
 
# Set PATH enviroment variant
export PATH=${PATH}:${NODE_PREFIX}/bin
# Add the environment variable to /etc/profile
echo "export PATH=${PATH}:${NODE_PREFIX}/bin" >> /etc/profile
 
##############################################################################
# Install Package use NPM
##############################################################################
npm config set unsafe-perm true \
npm config set strict-ssl false \
npm config set registry https://registry.npm.taobao.org 
# npm config set proxy http://[email protected]:xxxx
# npm config set https-proxy=http://[email protected]:xxxx
 
# Install node packages
npm install -g \
    gulp-cli \
    grunt-cli \
    markdown-styles \
    yarn
 
##############################################################################
# Setup users
##############################################################################
 
groupadd dev
useradd -s /bin/bash -g dev dev
echo "dev:password" | chpasswd
 
##############################################################################
# Clean up
##############################################################################
find ${NODE_PREFIX}/lib/node_modules/npm -name test -o -name .bin -type d | xargs rm -rf
rm -rf \
    /node_src \
    /tmp/* \
    /var/cache/yum/* \
    ${NODE_PREFIX}/lib/node_modules/npm/man \
    ${NODE_PREFIX}/lib/node_modules/npm/doc \
    ${NODE_PREFIX}/lib/node_modules/npm/html

[VBS]Excel获取所有Sheet的名称

November 9th, 2018 No comments

1.在当前Sheet里面获取当前Sheet名
选取任意单元格,编辑公式

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,255)

2.在当前Sheet里面获取Workbook下所有的Sheet名
使用alt+f11组合快捷键进入vbe编辑器,插入一个新的模块,并在模块中输入以下代码:

Sub Maco1()
For i = 1 To Sheets.Count
Cells(i, 1) = Sheets(i).Name
Next
End Sub

然后运行指定宏既可以在当前sheet里面获取到了

Categories: 零敲碎打 Tags: ,

Tomcat进程无法正常stop问题

September 20th, 2017 No comments

CentOS使用Catalina.sh 来管理Tomcat运行时,Catalina.sh run 之后产生的tomcat进程会无法使用 Catalina.sh stop -force关闭。如果Catalina.sh的默认内容来配置tomcat服务,/etc/init.d/tomcat stop 也将会失效

查看Catalina.sh文件后找到以下代码,原来需要stop的话,需要CATALINA_PID文件配合。
Catalina.sh 468行

  if [ ! -z "$CATALINA_PID" ]; then
    if [ -f "$CATALINA_PID" ]; then
      if [ -s "$CATALINA_PID" ]; then
        kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
        if [ $? -gt 0 ]; then
          echo "PID file found but no matching process was found. Stop aborted."
          exit 1
        fi
      else
        echo "PID file is empty and has been ignored."
      fi
    else
      echo "\$CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted."
      exit 1
    fi
  fi

Read more…

Windows/Linux 编译和配置Tomcat Native

September 20th, 2017 No comments

Tomcat Native 是利用 APR 来提升Tomcat性能的本地API。
Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。

WIndows环境下安装Tomcat Native只需要到
http://tomcat.apache.org/download-native.cgi
下载Tomcat Native Connector的window版本,下载完毕后将
tcnative-1.dll (含32位和64位)
复制到tomcat目录下的bin目录即可使用。

Linux需要自行编译Tomcat Native Connector,具体步骤如下
Read more…

Categories: 系统管理, 零敲碎打 Tags: ,

CentOS7配置NFS文件共享

September 18th, 2017 No comments

NFS(Network File System)即网络文件系统,是Linux/Unix支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

测试环境 CentOS7.3

NFS服务端配置
1.安装nfs-utils和rpcbind

# yum update
yum -y update
# install nfs
yum -y install nfs-utils rpcbind

2.启用和打开NFS相关服务rpcbind,nfs-server,nfs-lock,nfs-idmap。 注意需要先启动rpcbind

#enable services
systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap
 
# start nfs service
systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap

Read more…

Categories: 系统管理, 零敲碎打 Tags: ,