Archive

Archive for the ‘系统管理’ Category

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

PostgreSql查询正在执行的SQL和查询执行耗时的SQL

November 9th, 2018 No comments

运行在AWS RDS上的PostgreSql今天TransactionID耗尽,原因是有一个SQL执行占用CPU超过12小时

–查询正在执行的SQL

SELECT * FROM pg_stat_activity WHERE datname='schema名称';

–结束正在进行的R查询

SELECT pg_cancel_backend(pid);

–结束正在执行CUD操作

SELECT  pg_terminate_backend(pid)

Read more…

Categories: 系统管理, 语言编程 Tags: , ,

windows右键快速创建功能按键

November 9th, 2018 No comments

每天都需要在同一个目录下建立当日日期命名的文件夹,
就偷懒想把这个功能做到WINDOWS的右键。

STEP1.新建一个.reg文件,写入以下内容

Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\Directory\Background\Shell\CMD_NAME]
"MUIVerb"="日期文件夹"
"Icon"="shell32.dll,3"
"Position"="top"
 
[HKEY_CLASSES_ROOT\Directory\Background\Shell\CMD_NAME\command]
@=“COMMAND”

Read more…

Categories: 系统管理 Tags: ,

CentOS 图形界面和字符界面切换

November 9th, 2018 No comments

使用Centos的版本安装进入系统后,默认是进入到命令行界面,
可以通过以下步骤配置CentOS图形界面。

STEP1. 安装桌面环境

# yum groupinstall "X Window System" "GNOME Desktop" "Graphical Administration Tools"

STEP2. 根据需要转换为图形模式和文本模式
默认级别转换为3(文本模式):

# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

默认级别转换为5(图形模式):

# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

Read more…

Categories: 系统管理 Tags:

[CentOS] 使用s3fs-fuse挂载S3Bucket到本地分区

November 9th, 2018 No comments

准备工作
1.创建接入S3 Bucket的IAM用户
2.创建S3 Bucket,赋予IAM用户读写S3 Bucket的权限

测试环境
Amazon AMI Linux
CentOS 7.5

s3fs
s3fs allows Linux and macOS to mount an S3 bucket via FUSE. s3fs preserves the native object format for files, allowing use of other tools like s3cmd.

STEP1. 安装s3fs-fuse相关依赖包

 # install automake fuse fuse-devel gcc-c++ git \
 libcurl-devel libxml2-devel make openssl-devel

STEP2.下载s3fs-fuse,编译安装s3fs-fuse

# cd /usr/local/
# git clone https://github.com/s3fs-fuse/s3fs-fuse.git
# cd s3fs-fuse
# ./autogen.sh
# ./configure
# make
# make install

Read more…

Categories: 系统管理 Tags: , ,

CentOS6.x/7.x配置Nginx系统服务

September 20th, 2017 No comments

使用源代码编译方式安装Nginx的时候,肯定不如用用yum方式安装来得便捷,CentOS的系统服务需要自行配置。
自行配置Nginx为CentOS的系统服务时,出于进程管理考虑需要首先配置pid,出于安全考虑建议修改nginx的运行用户。

创建nginx.pid文件用于nginx主进程

touch /usr/local/nginx/logs/nginx.pid

修改conf/nginx.conf,设置pid和user

user     nobody;
pid       logs/nginx.pid;

CentOS6.x配置nginx系统服务
创建一个/etc/init.d/nginx文件

touch /etc/init.d/nginx
chmod 755 /etc/init.d/nginx

/etc/init.d/nginx文件中写入以下内容,
源文件取自yum方式安装后的文件,不过需要自己修改一下nginx的指向位置
nginx=”/usr/local/nginx/sbin/nginx”
NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf”
Read more…

Categories: 系统管理 Tags: , ,