Rootop 服务器运维与web架构

2017-08-30
发表者 Venus
maven环境变量已关闭评论

maven环境变量

官网:http://maven.apache.org

[root@localhost ~]# wget -c http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
[root@localhost ~]# tar zxvf apache-maven-3.5.0-bin.tar.gz
[root@localhost ~]# mv apache-maven-3.5.0 /usr/local/

编辑 /etc/profile 最后加以下环境变量
# maven
export MAVEN_HOME=/usr/local/apache-maven-3.5.0
export PATH=${MAVEN_HOME}/bin:${PATH}

[root@localhost ~]# source /etc/profile
[root@localhost ~]# mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: /usr/local/apache-maven-3.5.0
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8.0_131/jre
Default locale: en_US, platform encoding: UTF-8
OS name: “linux”, version: “3.10.0-514.el7.x86_64”, arch: “amd64”, family: “unix”

2017-08-29
发表者 Venus
dockerfile构建镜像知识点已关闭评论

dockerfile构建镜像知识点

# 创建个文件夹,存放dockerfile
[root@localhost ~]# mkdir docker
[root@localhost ~]# cd docker/

# 创建dockerfile(必须是这个文件名,否则提示找不到文件,要么用docker build -f指定)
[root@localhost docker]# cat dockerfile

# docker file用于基于一个镜像构建一个新镜像
# 基础镜像 IMAGE ID
FROM 82a5b82cec98

# 维护者
MAINTAINER venus

# 镜像操作 RUN用来在构建镜像时运行系统命令
RUN yum install -y httpd

# 设置JAVA环境变量
ENV JAVA_HOME /usr/local/jdk
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 映射端口,实际起到提示作用,docker run时仍旧需要指定映射端口
EXPOSE 80

RUN mkdir /root/ops
ADD ./start_httpd.sh /root/ops
# 如果ADD一个压缩文件,ADD会自动解压,不需要手动再解,另外仅支持当前路径下的文件,不支持绝对路径
RUN chmod 777 /root/ops/start_httpd.sh

# 启动容器时会运行的指令
CMD sh /root/ops/start_httpd.sh && /bin/bash

根据dockerfile构建一个镜像(centos6httpd)
docker build -t centos6httpd .

一定不要落下后面的英文的  点   .

2017-08-29
发表者 Venus
使用daocloud为docker pull加速已关闭评论

使用daocloud为docker pull加速

从docker官方下载镜像速度那叫一个慢。解决这个问题可以用daocloud提供的镜像服务。

首先去https://www.daocloud.io注册个账号,登陆后,找到”加速器”,网页顶部有个火箭图标…


执行它给出的命令会自动配置。but,在centos7下yum装的docker-1.12.6经过这个脚本配置是无法启动的。
报错信息:

[root@localhost ~]# systemctl status docker.service -l
● docker.service - Docker Application Container Engine
 Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
 Active: failed (Result: exit-code) since Tue 2017-08-29 11:01:59 CST; 2min 48s ago
 Docs: http://docs.docker.com
 Process: 4145 ExecStart=/usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY (code=exited, status=1/FAILURE)
 Main PID: 4145 (code=exited, status=1/FAILURE)

Aug 29 11:01:59 localhost systemd[1]: Starting Docker Application Container Engine...
Aug 29 11:01:59 localhost dockerd-current[4145]: time="2017-08-29T11:01:59+08:00" level=fatal msg="unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '}' looking for beginning of object key string\n"
Aug 29 11:01:59 localhost systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Aug 29 11:01:59 localhost systemd[1]: Failed to start Docker Application Container Engine.
Aug 29 11:01:59 localhost systemd[1]: Unit docker.service entered failed state.
Aug 29 11:01:59 localhost systemd[1]: docker.service failed.

在http://pagespeed.v2ex.com/t/326229找到答案。

需要手动去改 /etc/sysconfig/docker 而不是脚本中改的 /etc/docker/daemon.json
复制下daemon.json中给出的http开头的地址,然后清理掉脚本配置的daemon.json文件,只留一行{}。

[root@localhost ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://bde0df14.m.daocloud.io"],}

然后去修改/etc/sysconfig/docker

[root@localhost ~]# cat /etc/sysconfig/docker
# /etc/sysconfig/docker

# Modify these options if you want to change the way the docker daemon runs
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=http://bde0df14.m.daocloud.io'
添加--registry-mirror=http://bde0df14.m.daocloud.io

重启docker服务
再docker pull 速度就很快了。

2017-08-22
发表者 Venus
Nginx缩略图模块ngx_image_thumb已关闭评论

Nginx缩略图模块ngx_image_thumb

来源:https://github.com/3078825/ngx_image_thumb

模块同时支持 Nginx 和 tengine

本nginx模块主要功能是对请求的图片进行缩略/水印处理,支持文字水印和图片水印。
支持自定义字体,文字大小,水印透明度,水印位置。
判断原图是否是否大于指定尺寸才处理。 ….等等
编译方法

编译前请确认您的系统已经安装了libcurl-dev libgd2-dev libpcre-dev 依赖库

CentOS /RedHat / Fedora
# 请确保已经安装了gcc automake autoconf m4
yum install gd-devel pcre-devel libcurl-devel

###下载nginx / tengine 源代码
然后下载本模块代码,并放在nginx源代码目录下
选Nginx还是Tengine,两者选其一

# 下载Tengine
$ wget http://tengine.taobao.org/download/tengine-1.4.5.tar.gz
$ tar -zxvf tengine-1.4.5.tar.gz
$ cd tengine-1.4.5
# 下载Nginx
$ wget http://nginx.org/download/nginx-1.4.0.tar.gz
$ tar -zxvf nginx-1.4.0.tar.gz
$ cd nginx-1.4.0
$ wget https://github.com/3078825/nginx-image/archive/master.zip
$ unzip master.zip
$ ./configure –add-module=./nginx-image-master
$ make
$ sudo make install
配置方法

打开 nginx.conf

vim /etc/nginx/nginx.conf
# 该路径为默认路径,如果不在此处,自己找一下

location / {
root html;
#添加以下配置
image on;
image_output on;
}
或者指定目录开启

location /upload {
root html;
image on;
image_output on;
}
其他参数说明:

image on/off 是否开启缩略图功能,默认关闭

image_backend on/off 是否开启镜像服务,当开启该功能时,请求目录不存在的图片(判断原图),将自动从镜像服务器地址下载原图

image_backend_server 镜像服务器地址

image_output on/off 是否不生成图片而直接处理后输出 默认off

image_jpeg_quality 75 生成JPEG图片的质量 默认值75

image_water on/off 是否开启水印功能

image_water_type 0/1 水印类型 0:图片水印 1:文字水印

image_water_min 300 300 图片宽度 300 高度 300 的情况才添加水印

image_water_pos 0-9 水印位置 默认值9 0为随机位置,1为顶端居左,2为顶端居中,3为顶端居右,4为中部居左,5为中部居中,6为中部居右,7为底端居左,8为底端居中,9为底端居右

image_water_file 水印文件(jpg/png/gif),绝对路径或者相对路径的水印图片

image_water_transparent 水印透明度,默认20

image_water_text 水印文字 “Power By Vampire”

image_water_font_size 水印大小 默认 5

image_water_font 文字水印字体文件路径

image_water_color 水印文字颜色,默认 #000000
调用说明

这里假设你的nginx 访问地址为 http://127.0.0.1/

并在nginx网站根目录存在一个 test.jpg 的图片

通过访问

http://127.0.0.1/test.jpg!c300x200.jpg 将会 生成/输出 test.jpg 300×200 的缩略图

其中 c 是生成图片缩略图的参数, 300 是生成缩略图的 宽度 200 是生成缩略图的 高度

一共可以生成四种不同类型的缩略图。

支持 jpeg / png / gif (Gif生成后变成静态图片)

C 参数按请求宽高比例从图片高度 10% 处开始截取图片,然后缩放/放大到指定尺寸( 图片缩略图大小等于请求的宽高 )

M 参数按请求宽高比例居中截图图片,然后缩放/放大到指定尺寸( 图片缩略图大小等于请求的宽高 )

T 参数按请求宽高比例按比例缩放/放大到指定尺寸( 图片缩略图大小可能小于请求的宽高 )

W 参数按请求宽高比例缩放/放大到指定尺寸,空白处填充白色背景颜色( 图片缩略图大小等于请求的宽高 )

调用举例

http://oopul.vicp.net/12.jpg!c300x300.jpg

http://oopul.vicp.net/12.jpg!t300x300.jpg

http://oopul.vicp.net/12.jpg!m300x300.jpg

http://oopul.vicp.net/12.jpg!w300x300.jpg

http://oopul.vicp.net/12.c300x300.jpg

http://oopul.vicp.net/12.t300x300.jpg

http://oopul.vicp.net/12.m300x300.jpg

http://oopul.vicp.net/12.w300x300.jpg

2017-08-16
发表者 Venus
ssh登陆时获取登陆来源ip等信息已关闭评论

ssh登陆时获取登陆来源ip等信息

通过env命令,可以看到当前可用的环境变量,有个可用的变量SSH_CONNECTION记录ssh信息

# 用户
user=`echo $LOGNAME`

# 来源ip
from_ip=`echo $SSH_CONNECTION | awk '{print$1}'`

# 来源端口
from_port=`echo $SSH_CONNECTION | awk '{print$2}'`

# 服务器ip
target_ip=`echo $SSH_CONNECTION | awk '{print$3}'`

# 服务器端口
target_port=`echo $SSH_CONNECTION | awk '{print$4}'`

把发送邮件命令放到/etc/profile(对所有用户起作用)中,这样就可以不通过监控secure日志实现登陆检查。
通过这些参数可以直接发送通知邮件,这里我用php写的邮件接口,最终实现效果如下。