Rootop 服务器运维与web架构

2014-10-27
发表者 Venus
linux用户登录时发送邮件到指定邮箱—安全审计已关闭评论

linux用户登录时发送邮件到指定邮箱—安全审计

linux用户在登录时,会执行 ~/.bashrc 文件(包括打开新的shell时),所以写一个脚本记录用户登录时的用户名密码以及来源地址。

首先安装mail命令包mailx和sendmail组件
[root@Rootop ~]# yum install -y mailx sendmail
[root@Rootop ~]# service postfix stop #停掉postfix,以防冲突
[root@Rootop ~]# service sendmail start #启动sendmail服务
[root@Rootop ~]# chkconfig sendmail on
[root@Rootop ~]# chkconfig postfix off

脚本如下:

#!/bin/bash
add=158534570@qq.com

echo User "\"$(whoami)\" Login At \"$(date)"\" From IP Address : \""$(w|sed -n '3p'|awk '{print$3}')"\" | mail -s LoginMessage $add
exit

编辑:
[root@Rootop ~]# vi ~/.bashrc
添加:
sh /root/mail.sh  #脚本路径

下次登录时,就会发送邮件了。

PS:
当同一个用户,或者多个用户登录时,取值会只取第三行,所以可以修改脚本,获取当前所有登录的用户,或者来自于同一个ip的同一个用户的多次登录,需要去重。这里提供思路,自行拓展。

2014-10-22
发表者 Venus
lnmp一键安装包1.0版本发布已关闭评论

lnmp一键安装包1.0版本发布

之前对shell不怎么研究,最近学习了下尝试写一个lnmp安装脚本。
正式发布lnmp一键安装包,水平有限,大神勿喷:

下载地址:
链接:http://pan.baidu.com/s/1mgFv34k
密码:vfos

各软件版本:

cmake-2.8.12.2.tar.gz
libiconv-1.14.tar.gz
libmcrypt-2.5.8.tar.gz
mcrypt-2.6.8.tar.gz
mhash-0.9.9.9.tar.gz
mysql-5.6.19.tar.gz
nginx-1.6.0.tar.gz
pcre-8.10.tar.gz
php-5.5.14.tar.gz
phpMyAdmin-4.2.5-all-languages.tar.gz

默认安装路径:
/usr/local/nginx
/usr/local/php
/usr/local/mysql

管理方式:
nginx : service nginx start/stop/restart/reload
mysql : service mysqld start/stop/restart/reload
php-fpm: service php-fpm start/stop/restart/reload

默认nginx根目录:
/usr/local/nginx/html/

默认mysql用户名密码为:
root redhat
mysql中root用户已允许远程访问。

phpmyadmin:
pma 路径为 /usr/local/nginx/html/pma
访问URL:
http://IPADDRESS/pma/index.php

默认脚本会关闭iptables服务。不同机器开通的端口众多,遂自行修改。注意放行22、80、3306端口。

第一版没有添加虚拟主机脚本,下一个版本会补上。

所有服务开机启动

建议大于1G内存用户使用。512内存测试时,会无法启动mysql(内存不足)。

目录结构:
[root@Rootop onekey]# tree lnmp1.0
lnmp1.0                #主目录
├── bin              #执行文件目录
│   └── nginx     #nginx管理脚本
├── conf            #配置文件目录
│   ├── mysql.sql  #设置root密码脚本
│   └── nginx.conf  #nginx配置文件
├── lnmp.sh         #安装脚本
└── source             #源代码目录
├── cmake-2.8.12.2.tar.gz
├── libiconv-1.14.tar.gz
├── libmcrypt-2.5.8.tar.gz
├── mcrypt-2.6.8.tar.gz
├── mhash-0.9.9.9.tar.gz
├── mysql-5.6.19.tar.gz
├── nginx-1.6.0.tar.gz
├── pcre-8.10.tar.gz
├── php-5.5.14.tar.gz
└── phpMyAdmin-4.2.5-all-languages.tar.gz

3 directories, 14 files

安装方法:
[root@Rootop onekey]# tar zxvf lnmp1.0.tar.gz #解压
[root@Rootop onekey]# cd lnmp1.0 #进入目录
[root@Rootop lnmp1.0]# sh lnmp.sh #执行安装脚本

安装成功截图:

2014-10-14
发表者 Venus
在windows/linux下部署weblogic12.1已关闭评论

在windows/linux下部署weblogic12.1

下载windows的jdk7:
地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
这里下载的版本为:jdk-7u67-windows-x64.exe

weblogic12.1部署程序:http://www.oracle.com/technetwork/middleware/fusion-middleware/downloads/index.html
这里下载的版本为:fmw_12.1.3.0.0_wls.jar (Generic WebLogic Server and Coherence installer (881MB))

安装jdk7,完成后设置环境变量:
新建 系统变量

变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0_67

修改 系统变量 的Path变量,在原有变量值前面加上:

变量值: .;%JAVA_HOME%\bin;

新建 系统变量

变量名:CLASS_PATH 变量值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\toos.jar;

设置完环境变量,重启下机器。

开始安装weblogic,到命令提示符执行:
C:\>java -d64 -jar e:\fmw_12.1.3.0.0_wls.jar
Launcher log file is C:\Users\Administrator\AppData\Local\Temp\2\OraInstall2014-
10-12_07-12-42AM\launcher2014-10-12_07-12-42AM.log.
Extracting files…………………..
Starting Oracle Universal Installer

Checking if CPU speed is above 300 MHz. Actual 2200 Passed
Checking monitor: must be configured to display at least 256 colors. Actual 65
536 Passed
Checking swap space: must be greater than 512 MB Passed
Checking if this platform requires a 64-bit JVM. Actual 64 Passed (64-bit n
ot required)

Preparing to launch the Oracle Universal Installer from C:\Users\Administrator\A
ppData\Local\Temp\2\OraInstall2014-10-12_07-12-42AM
Log: C:\Users\Administrator\AppData\Local\Temp\2\OraInstall2014-10-12_07-12-42AM
\install2014-10-12_07-12-42AM.log
You can find the log of this install session at:
C:\Users\Administrator\AppData\Local\Temp\2\OraInstall2014-10-12_07-12-42AM\ins
tall2014-10-12_07-12-42AM.log

安装过程很简单,基本都是默认配置,完成后,勾选 “automatically launch the configuration wizard” 配置weblogic。

主要配置weblogic控制台的用户密码,默认监听7001端口,https端口监听在7002,最后一步启动服务,启动的时候要求用户名密码,即为之前设置的用户名密码。服务启动后可通过浏览器 http://192.168.0.119:7001/console/ 访问了:

这里写了一个jsp测试页面,打印当前时间。将其打成war包,在weblogic中部署。

<%@page language="java" import="java.util.*"%>
now time is : <% out.println(new Date()); %>

保存为index.jsp即可。

打包:
D:\jsp>dir
驱动器 D 中的卷没有标签。
卷的序列号是 86D3-C946

D:\jsp 的目录

2014/10/14 10:13 <DIR> .
2014/10/14 10:13 <DIR> ..
2014/10/13 08:50 92 index.jsp
1 个文件 92 字节
2 个目录 21,448,970,240 可用字节

D:\jsp>jar -cvf jsp.war *
已添加清单
正在添加: index.jsp(输入 = 92) (输出 = 87)(压缩了 5%)

D:\jsp>dir
驱动器 D 中的卷没有标签。
卷的序列号是 86D3-C946

D:\jsp 的目录

2014/10/14 10:14 <DIR> .
2014/10/14 10:14 <DIR> ..
2014/10/13 08:50 92 index.jsp
2014/10/14 10:14 538 jsp.war
2 个文件 630 字节
2 个目录 21,448,970,240 可用字节

开始部署,因为部署比较简单,可以百度下weblogic部署war包。就不截图了。

通过浏览器访问测试:

这样weblogic的基础搭建就完成了。

PS:

如果之前没有配置控制台,可以从开始菜单中 “Configuration Wizard”配置。

如果控制台服务没有启动,可以从以下路径启动:C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\startWebLogic.cmd

Linux下安装:

JDK7下载页面:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
jdk-7u67-linux-x64.rpm
fmw_12.1.3.0.0_wls.jar

jdk默认安装到/usr/java下,对jdk做了一个软链接:
[root@mfsmaster java]# ln -s jdk1.7.0_67/  jdk

修改环境配置文件 /etc/profile 最底下添加下面3行:

JAVA_HOME=/usr/java/jdk
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/servlet-api.jar
PATH=$JAVA_HOME/bin:$PATH

执行 source /etc/profile 使修改的环境变量生效。

添加oracle账户:
[root@mfsmaster ~]# useradd oracle
[root@mfsmaster ~]# passwd oracle
将fmw_12.1.3.0.0_wls.jar拷贝到oracle用户的家目录中,切换到oracle用户安装
[oracle@mfsmaster ~]$ java -d64 -jar fmw_12.1.3.0.0_wls.jar
安装过程跟windows下一样,路径不同而已。

默认脚本路径:
配置weblogic控制台脚本:在/home/oracle/Oracle/Middleware/Oracle_Home/wlserver/common/bin/config.sh
weblogic控制台服务启动脚本:在/home/oracle/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain/startWebLogic.sh

每次启动weblogic,都需要手动输入用户名密码,比较麻烦,修改启动脚本实现自动启动。

修改:/home/oracle/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain/bin/startWebLogic.sh
在#!/bin/sh下添加一行:

WLS_USER="weblogic" export WLS_USER WLS_PW="123xxx321#" export WLS_PW

另一种方法说创建boot.properties文件定义username=和password=,但是我这里没成功。直接用第一种方法。

2014-10-10
发表者 Venus
lanmp环境 nginx反向代理加本地缓存已关闭评论

lanmp环境 nginx反向代理加本地缓存

采用这个架构主要考虑到apache跑php应用相对nginx来言比较稳定,前端用nginx做反向代理,并实现缓存功能。

软件版本:
apr-1.5.1.tar.gz
apr-util-1.5.4.tar.gz
cmake-3.0.2.tar.gz
httpd-2.4.10.tar.gz
libiconv-1.14.tar.gz
mariadb-10.0.14.tar.gz
nginx-1.6.2.tar.gz
ngx_cache_purge-2.1.tar.gz
pcre-8.36.tar.gz
php-5.6.1.tar.gz

源码全部打包到博客中,下载地址:https://www.rootop.org/rs/lanmp.tar.gz

安装依赖rpm包:
[root@nginx-cache tar_gz]# yum -y install gcc gcc-c++ make automake autoconf kernel-devel ncurses-devel libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel pcre-devel libtool-libs freetype-devel gd zlib-devel file bison patch mlocate flex diffutils readline-devel glibc-devel glib2-devel bzip2-devel gettext-devel libcap-devel libmcrypt-devel

解压所有的源码包,过程略。

安装apache2.4:

[root@nginx-cache httpd-2.4.10]# useradd -s /sbin/nologin apache #创建apache运行账户

以前2.2版本的apache需要先安装apr和apr-util,在2.4版本中只需要将apr和apr-util复制到apache源码包中的srclib目录下即可。
解压apr-1.5.1.tar.gz和apr-util-1.5.4.tar.gz,并改名为apr和apr-util,复制到apache源码包中的srclib目录下。

[root@nginx-cache httpd-2.4.10]# ./configure --prefix=/usr/local/apache --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared  --enable-headers=shared --enable-rewrite=shared --enable-static-support
[root@nginx-cache httpd-2.4.10]# make && make install

[root@nginx-cache httpd-2.4.10]# cp build/rpm/httpd.init /etc/init.d/httpd #复制启动脚本
[root@nginx-cache httpd-2.4.10]# chmod 755 /etc/init.d/httpd  #添加执行权限
[root@nginx-cache httpd-2.4.10]# ln -s /usr/local/apache/ /etc/httpd  #创建软连接适用启动脚本
[root@nginx-cache httpd-2.4.10]# ln -s /usr/local/apache/bin/httpd /usr/sbin/httpd
[root@nginx-cache httpd-2.4.10]# ln -s /usr/local/apache/bin/apachectl /usr/sbin/apachectl
[root@nginx-cache httpd-2.4.10]# ln -s /usr/local/apache/logs/ /var/log/httpd

修改主配置文件,运行账户和组改为apache:

[root@nginx-cache httpd-2.4.10]# vi /etc/httpd/conf/httpd.conf
User apache
Group apache

[root@nginx-cache httpd-2.4.10]# service httpd start
[root@nginx-cache httpd-2.4.10]# chkconfig httpd on

[root@nginx-cache httpd-2.4.10]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 16001 root 4u IPv6 184948 0t0 TCP *:http (LISTEN)
httpd 16003 apache 4u IPv6 184948 0t0 TCP *:http (LISTEN)
httpd 16004 apache 4u IPv6 184948 0t0 TCP *:http (LISTEN)
httpd 16005 apache 4u IPv6 184948 0t0 TCP *:http (LISTEN)
这里发现用service httpd stop会失败,暂未查原因,可以使用apachectl start/stop来管理服务状态。

安装mariadb:
安装mariadb之前需要先装cmake工具。用来生产mariadb编译信息。

[root@nginx-cache cmake-3.0.2]# ./configure && gmake && make install
[root@nginx-cache mariadb-10.0.14]# useradd -s /sbin/nologin mysql #添加mysql运行账户
[root@nginx-cache mariadb-10.0.14]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_UNIX_ADDR=/tmp/mariadb.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/mariadb/data

[root@nginx-cache mariadb-10.0.14]# make  #这一步过程比较慢
[root@nginx-cache mariadb-10.0.14]# make install

初始化mysql:
[root@nginx-cache mariadb-10.0.14]# /usr/local/mariadb/scripts/mysql_install_db --basedir=/usr/local/mariadb/ --datadir=/usr/local/mariadb/data/ --user=mysql

修改my.cnf配置文件:

[mysqld]
datadir=/usr/local/mariadb/data/  #修改本行为 /usr/local/mariadb/data/
socket=/tmp/mariadb.sock #sock文件路径,跟编译参数一样
pid-file=/tmp/mariadb.pid #添加pid文件路径
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/tmp/mariadb.pid #pid文件路径

[root@nginx-cache mariadb-10.0.14]# service mysqld start
Starting MySQL SUCCESS!
[root@nginx-cache mariadb-10.0.14]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 10337 mysql 16u IPv6 273675 0t0 TCP *:mysql (LISTEN)

[root@nginx-cache mariadb-10.0.14]# chkconfig mysqld on

设置mariadb的root密码,此处密码也设置为root :
[root@nginx-cache mariadb-10.0.14]# /usr/local/mariadb/bin/mysql

MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> update user set password=password('root') where user='root';
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4  Changed: 4  Warnings: 0

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> exit

安装php:

[root@nginx-cache php-5.6.1]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl --with-zlib --enable-bcmath --with-bz2 --with-curl --enable-ftp --with-gd --enable-gd-native-ttf --with-gettext --with-mhash --enable-mbstring --with-mcrypt --enable-soap --enable-zip --with-iconv=/usr --with-mysql=/usr/local/mysql --without-pear --disable-fileinfo

这里遇到一个错误:
configure: error: Don’t know how to define struct flock on this system, set –enable-opcache=no
解决方法:
[root@nginx-cache php-5.6.1]# vi /etc/ld.so.conf.d/local.conf 添加:
/usr/local/lib
[root@nginx-cache php-5.6.1]# ldconfig #生效
重新configure。

[root@nginx-cache php-5.6.1]# make
[root@nginx-cache php-5.6.1]# make install

[root@nginx-cache php-5.6.1]# cp php.ini-production /etc/php.ini

添加apache对php文件解析映射:

[root@nginx-cache php-5.6.1]# vi /etc/httpd/conf/httpd.conf
Addtype application/x-httpd-php .php

重启apache。

添加phpinfo测试页,测试php是否正常打开:

[root@nginx-cache ~]# vi /etc/httpd/htdocs/p.php

<?php
phpinfo ();
?>

通过浏览器访问:http://42.62.73.xxx/p.php

看是否出现phpinfo信息,如果没有回头检查。至此lamp完成了。

配置nginx:
现在要让nginx反向代理apache,并实现nginx本地缓存。

先安装pcre:

[root@nginx-cache pcre-8.36]# ./configure && make && make install

安装nginx,在这里添加第三方模块ngx_cache_purge,因为nginx用作本地缓存,加上这个模块方便清除缓存。从https://github.com/FRiCKLE/ngx_cache_purge/releases下载。

[root@nginx-cache pcre-8.36]# useradd -s /sbin/nologin www
[root@nginx-cache nginx-1.6.2]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --add-module=../ngx_cache_purge-2.1
[root@nginx-cache nginx-1.6.2]# make && make install

添加nginx启动脚本:
[root@nginx-cache ~]# vi /etc/init.d/nginx

#! /bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="nginx daemon"
NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
CONFIGFILE=/usr/local/nginx/conf/$NAME.conf
PIDFILE=/usr/local/nginx/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

set -e
[ -x "$DAEMON" ] || exit 0

do_start() {
 $DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}

do_stop() {
 kill -INT `cat $PIDFILE` || echo -n "nginx not running"
}

do_reload() {
 kill -HUP `cat $PIDFILE` || echo -n "nginx can't reload"
}

case "$1" in
 start)
 echo -n "Starting $DESC: $NAME"
 do_start
 echo "."
 ;;
 stop)
 echo -n "Stopping $DESC: $NAME"
 do_stop
 echo "."
 ;;
 reload|graceful)
 echo -n "Reloading $DESC configuration..."
 do_reload
 echo "."
 ;;
 restart)
 echo -n "Restarting $DESC: $NAME"
 do_stop
 do_start
 echo "."
 ;;
 *)
 echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
 exit 3
 ;;
esac

exit 0

[root@nginx-cache ~]# chmod 755 /etc/init.d/nginx

现在把apache的监听端口改为8080,让nginx使用80端口。
[root@nginx-cache ~]# vi /etc/httpd/conf/httpd.conf
Listen 8080
重启apache。

配置反向代理:

[root@nginx-cache conf]# grep -v "#" nginx.conf | grep -v "^$"

user  www www;
worker_processes  10;
worker_rlimit_nofile 51200;

events
        {
                use epoll;
                worker_connections 51200;
        }

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

	upstream apache {
		server 127.0.0.1:8080 max_fails=3 fail_timeout=20s;
	}

	proxy_temp_path /home/temp_dir;
	proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=5g;

	include vhost/*.conf;
}

主要定义下面两行,设置缓存临时目录和缓存路径,需要在同一个分区下。

缓存区为cache_one占用内存200M,缓存1天,占用硬盘5G。

proxy_temp_path /home/temp_dir;
proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=5g;

虚拟主机配置:

[root@nginx-cache conf]# grep -v "#" vhost/blog.conf | grep -v "^$"
server {
 listen 80;
 server_name www.qdsop.com;
 index index.php index.html;
 error_log  /var/log/nginx_error.log  crit;

if ($request_method = "PURGE")
{
rewrite ^(.*)$ /purge$1 last;
}

location ~ /purge(/.*)
{
allow  all;
proxy_cache_purge  cache_one $host$1$is_args$args;
        }

location / {
 proxy_pass http://apache;
 proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
 proxy_redirect off;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 client_body_buffer_size 128k;
 proxy_connect_timeout 90;
 proxy_send_timeout 90;
 proxy_read_timeout 90;
 proxy_buffer_size 4k;
 proxy_buffers 4 32k;
 proxy_busy_buffers_size 64k;
 proxy_temp_file_write_size 64k;
 	}

location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
 proxy_pass http://apache;
 proxy_cache cache_one;
 proxy_cache_valid 200 302 1h;
 proxy_cache_valid 301 1d;
 proxy_cache_valid any 1m;
 proxy_cache_key $host$uri$is_args$args;
 add_header Cache "$upstream_cache_status";
 error_log /var/log/image_error.log debug;
 	}

location /status {
 stub_status on;
 access_log  off;
                  }
}

虚拟主机配置文件主要注意下面红色部分一定要在缓存配置内容之上,否则可能会出现清空缓存时404错误。

if ($request_method = “PURGE”)
{
rewrite ^(.*)$ /purge$1 last;
}

location ~ /purge(/.*)
{
allow all;
proxy_cache_purge cache_one $host$1$is_args$args;
}

现在可以通过访问nginx实现反向代理apache。
查看命中状态,现在访问一个特定的静态页面。比如图片:

第一次访问图片的时候,可以看到状态为:“未命中”

刷新浏览器查看响应头。

第二次为命中状态,说明nginx缓存起到作用。

现在测试清空缓存:

添加了ngx_cache_purge以后可以在原有的url上加上purge,实现清空缓存,比如:

http://www.xxx.com/purge/wp-content/uploads/2014/10/psb1.jpg

这样nginx反向代理apache配置完成,拓展一下,在本文基础上可以实现多台web进行负载均衡,nginx独立为一台服务器,通过本地缓存可以降低后端服务器压力,静态页面都由nginx处理,这样可以提高整体的并发。在这里测试的时候,装了一个WordPress环境进行测试,并配置了WordPress的伪静态功能,效果还可以,将服务器配置提高为16vcpu+32G内存,30M带宽。通过webbench压力测并发1W持续2分钟,通过nginx的status监测在3000左右,出口流量最高达到5M,不确定云计算平台网络流量监控是否准确,至此,过程全部结束!

提供一个通过web方式清空缓存的php程序,直接访问即可。然后输入要清空的缓存url路径。下载地址:https://www.rootop.org/rs/ngx_cache_purge.tar.gz

PS:
在安装php时,到make的时候遇到一个错误:
cc: Internal error: Killed (program cc1)
Please submit a full bug report.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
这个原因是内存不足(512内存),我用的是云服务器,没有交换分区。导致出错,可以通过加参数 –disable-fileinfo 解决。

配置nginx出现的一个错误:Starting nginx: nginx: [emerg] the size 209715200 of shared memory zone “cache_one” conflicts with already declared size 0 in /etc/nginx/nginx.conf:50

注意配置段中的区域包含关系. proxycachepatch 要在proxy_cache前已经定义.

what seems to be the problem?
[emerg]: the size 52428800 of shared memory zone “media” conflicts with already declared size 0 in /etc/nginx/conf.d/cache.conf:5 configuration file /etc/nginx/nginx.conf test failed
This may be caused if “proxycache media” is included before proxycache_path.

2014-10-08
发表者 Venus
使用chkrootkit检查linux是否被植入后门已关闭评论

使用chkrootkit检查linux是否被植入后门

所谓 rootkit ,是一类入侵者经常使用的工具。这类工具通常非常的隐秘、令用户不易察觉,通过这类工具,入侵者建立了一条能够常时入侵系统,或者说对系统进行实时控制的 途径。所以,我们用自由软件 chkrootkit 来建立入侵监测系统,来保证对系统是否被安装了 rootkit 进行监测。
chkrootkit 在监测 rootkit 是否被安装的过程中,需要使用到一些操作系统本身的命令。但不排除一种情况,那就是入侵者有针对性的已经将 chkrootkit 使用的系统命令也做修改,使得 chkrootkit 无法监测 rootkit ,从而达到即使系统安装了 chkrootkit 也无法检测出 rootkit 的存在,从而依然对系统有着控制的途径,而达到入侵的目的。那样的话,用 chkrootkit 构建入侵监测系统将失去任何意义。对此,我 们在操作系统刚被安装之后,或者说服务器开放之前,让 chkrootkit 就开始工作。而且,在服务器开放之前,备份 chkrootkit 使用的系统命 令,在一些必要的时候(怀疑系统命令已被修改的情况等等),让 chkrootkit 使用初始备份的系统命令进行工作。

官网地址:http://chkrootkit.org/download/
[root@1 ~]# wget -c ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
[root@1 ~]# yum install -y gcc gcc-c++ make glibc-static
[root@1 ~]# tar zxvf chkrootkit.tar.gz
[root@1 ~]# cd chkrootkit-0.50/
[root@1 chkrootkit-0.50]# make sense
[root@1 chkrootkit-0.50]# cd
[root@1 ~]# cp -r chkrootkit-0.50/ /usr/local/chkrootkit
参数帮助:
[root@1 ~]# /usr/local/chkrootkit/chkrootkit -h

Usage: /usr/local/chkrootkit/chkrootkit [options] [test ...]
Options:
 -h show this help and exit
 -V show version information and exit
 -l show available tests and exit
 -d debug
 -q quiet mode
 -x expert mode
 -r dir use dir as the root directory
 -p dir1:dir2:dirN path for the external commands used by chkrootkit
 -n skip NFS mounted dirs

由于chkrootkit的检查过程使用了部分系统命令。因此,如果服务器被入侵,则依赖的系统命令可能也已经被入侵者做了手脚,chkrootkit的结果将变得完全不可信。
所以需要在服务器上线之前备份chkrootkit用到的命令,检查的时候使用备份的命令来检查。

[root@1 ~]# mkdir /usr/share/.commands #创建一个隐藏文件夹
[root@1 ~]# cp $(which --skip-alias awk cut echo find egrep id head ls netstat ps strings sed uname ssh) /usr/share/.commands/
然后通过下面命令来检查:
[root@1 ~]# /usr/local/chkrootkit/chkrootkit -p /usr/share/.commands/

PS:
[root@1 chkrootkit-0.50]# make sense
cc -DHAVE_LASTLOG_H -o chklastlog chklastlog.c
cc -DHAVE_LASTLOG_H -o chkwtmp chkwtmp.c
cc -DHAVE_LASTLOG_H -D_FILE_OFFSET_BITS=64 -o ifpromisc ifpromisc.c
cc -o chkproc chkproc.c
cc -o chkdirs chkdirs.c
cc -o check_wtmpx check_wtmpx.c
cc -static -o strings-static strings.c
/usr/bin/ld: cannot find -lc
collect2: ld returned 1 exit status
make: *** [strings-static] Error 1
之前遇到一个报错,是因为没有安装glibc-static这个包