LINUX系统配置
-
Linux 安装jdk方法;
-
Linux Tomcat 安装与配置
-
Linux redis 安装与配置
(例1)
-
Linux redis安装配置(例2)
-
NGINX 安装
Linux 安装jdk方法
JDK安装
tar.gz为解压后就可使用的版本,这里我们将jdk-7u3-linux-i586.tar.gz解压到/usr/local/下。
1、解压
解压到当前目录:$ tar -zxvf /opt/setup/jdk-7-ea-bin-b145-linux-i586-07_jun_2011.tar.gz
2、环境配置
① $sudo vi /etc/profile
② 在末尾行添加
#set java environment
JAVA_HOME=/usr/local/jdk1.7.0 (备注:注意路径名)
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
保存退出
③$ source /etc/profile 使更改的配置立即生效
④$ java -version 查看JDK版本信息,如果显示出1.7.0证明成功
⑤使JDK在所有用户中使用
$ Vi /etc/profile.d/java.sh 新建一个java.sh执行文件,填入JDK相关环境配置信息,如下图:
$ chmod 755 /etc/profile.d/java.sh 给java.sh分配权限
Linux Tomcat 安装与配置
1.到官网 http://jakarta.apache.org/tomcat 下载 apache-tomcat-7.0.2.tar.gz 安装文件,JDK假设已经安装完毕,接下来直接安装Tomcat。
2.安装
# tar -zxvf apache-tomcat-7.0.2.tar.gz
# ls //会发现在当前目录下,多出一个文件夹
apache-tomcat-7.0.2 apache-tomcat-7.0.2.tar.gz
# mv apache-tomcat-7.0.2 /usr/local/tomcat-7.0.2
# mv apache-tomcat-7.0.2 /usr/local/tomcat-7.0.2
3.设置环境变量
# vi ~/.bashrcif [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
//增加下面两个内容,然后保存退出:wq 回车
export CATALINA_BASE=/usr/local/tomcat-7.0.2
export CATALINA_HOME=/usr/local/tomcat-7.0.24.验证是否安装成功
# echo $CATALINA_HOME
/usr/local/tomcat-7.0.2
# echo $CATALINA_BASE
/usr/local/tomcat-7.0.2如果显示上面内容,OK,已生效。如果不显示,重启一下系统,再试。
4.启动服务
我们先看一下linux所开的端口:
# netstat –l# cd /usr/local/tomcat-7.0.2/bin
# ls
bootstrap.jar setclasspath.sh
catalina.50.bat shutdown.bat
catalina.50.sh shutdown.sh
catalina.bat shutdown-using-launcher.bat
catalina.sh shutdown-using-launcher.sh
catalina.xml startup.bat
commons-daemon.jar startup.sh
commons-launcher.jar startup-using-launcher.bat
commons-logging-api.jar startup-using-launcher.sh
cpappend.bat tomcat5.exe
digest.bat tomcat5w.exe
digest.sh tool-wrapper.bat
jmx.jar tool-wrapper.sh
jsvc.tar.gz tool-wrapper-using-launcher.bat
LauncherBootstrap.class tool-wrapper-using-launcher.sh
launcher.properties version.bat
service.bat version.sh
setclasspath.bat
//我们要注意这个文件:startup.sh#./startup.sh
Using CATALINA_BASE: /usr/local/jakarta-tomcat-5.0.28
Using CATALINA_HOME: /usr/local/jakarta-tomcat-5.0.28
Using CATALINA_TMPDIR: /usr/local/jakarta-tomcat-5.0.28/temp
Using JAVA_HOME: /usr/java/j2sdk1.4.2_04
我们在来一下linux现在所开的端口:
# netstat –l是不是多了个8080端口呢!这个就是Tomcat的默认端口/
好下面开始我们的安装测试了http://localhost:8080
是不是看到tomcat的Web页面了。如果还没看到,那就把放火墙关了。
# service iptables stop
清除防火墙规则:[ 确定 ]
把 chains 设置为 ACCEPT 策略:filter [ 确定 ]
正在卸载 Iiptables 模块:[ 确定 ],好了。这次绝对没问题了。
5.Tomcat开机自动加载
# vi /etc/rc.d/rc.local
//显示如下内容#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.touch /var/lock/subsys/local
//增加下面一句话
/usr/local/tomcat-7.0.2/bin/startup.sh这样在系统重启后就可以自动启动Tomcat(一定确信JDK安装完并且好用,否则这些都将不好用)
6.关闭服务
# cd /usr/local/tomcat-7.0.2/bin
# ./shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat-7.0.2
Using CATALINA_HOME: /usr/local/tomcat-7.0.2
Using CATALINA_TMPDIR: /usr/local/tomcat-7.0.2/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat-7.0.2/bin/bootstrap.jar:/usr/local/tomcat-7.0.2/bin/tomcat-juli.jar7.独立环境的测试
(1) 测试Java的运行状况,如下命令:
java -version
javac -version
看到版本号则表示JDK安装成功(2) 测试Apache的运行状况,如下命令:
/etc/rc.d/init.d/httpd restart ## 重新启动Apache Server
使用任意一浏览器,输入服务器地址后回车,应该可以看到Apache的默认主页(3) 测试Jakarta-Tomcat的运行状况,如下命令:
进入tomcat安装目录下面的bin目录
./startup.sh ## 启动jakarta-tomcat-4.1.24服务
使用任意一浏览器,输入服务器地址和端口号8080后回车,应该可以看到jakarta-tomcat-4.1.24的默认主页
例如: http://localhost:8080
./shutdown.sh ## 关闭jakarta-tomcat-4.1.24服务8.在linux下面安装tomcat后,打开时用户名及密码是什么
在 /usr/local/tomcat-7.0.2/conf/tomcat-users.xml 文件中。编辑这个文件,可以修改用户名和密码,例如:
<role name="manager-gui"/>
<user name="root" password="admin" roles="manager-gui"/>?
<role rolename="admin-gui"/>
<user username="admin" password="admin" roles="admin-gui"/>用户 root 是管理:Status和Tomcat Manager的。
用户 admin 是管理:Host Manager的。
保存后重新启动Tomcat。Linux redis 安装与配置(例1)
第一部分:安装redis
希望将redis安装到此目录1
/usr/local/redis
希望将安装包下载到此目录
1
/usr/local/src
那么安装过程指令如下:
1
2
3
4
5
6
7
$ mkdir /usr/local/redis
$ cd /usr/local/src
$ wget http://redis.googlecode.com/files/redis-2.6.14.tar.gz
$ tar xzf redis-2.6.14.tar.gz
$ ln -s redis-2.6.14 redis #建立一个链接
$ cd redis
$ make PREFIX=/usr/local/redis install #安装到指定目录中
注意上面的最后一行,我们通过PREFIX指定了安装的目录。如果make失败,一般是你们系统中还未安装gcc,那么可以通过yum安装:
1
yum install gcc
安装完成后,继续执行make.
在安装redis成功后,你将可以在/usr/local/redis看到一个bin的目录,里面包括了以下文件:
1
redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server
第二部分:将redis做成一个服务
1.复制脚本到/etc/rc.d/init.d目录
ps: /etc/rc.d/init.d/目录下的脚本就类似与windows中的注册表,在系统启动的时候某些指定脚本将被执行
按以上步骤安装Redis时,其服务脚本位于:1
/usr/local/src/redis/utils/redis_init_script
必须将其复制到/etc/rc.d/init.d的目录下:
1
cp /usr/local/src/redis/utils/redis_init_script /etc/rc.d/init.d/redis
将redis_init_script复制到/etc/rc.d/init.d/,同时易名为redis。
如果这时添加注册服务:
1
chkconfig --add redis
将报以下错误:
1
redis服务不支持chkconfig
为此,我们需要更改redis脚本。
2.更改redis脚本
打开使用vi打开脚本,查看脚本信息:1
vim /etc/rc.d/init.d/redis
看到的内容如下(下内容是更改好的信息):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/sh
#chkconfig: 2345 80 90
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF &
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
和原配置文件相比:
1.原文件是没有以下第2行的内容的,
1
#chkconfig: 2345 80 90
2.原文件EXEC、CLIEXEC参数,也是有所更改。
1
2
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli
3.redis开启的命令,以后台运行的方式执行。
1
$EXEC $CONF &
ps:注意后面的那个"&",即是将服务转到后面运行的意思,否则启动服务时,Redis服务将
占据在前台,占用了主用户界面,造成其它的命令执行不了。
4.将redis配置文件拷贝到/etc/redis/${REDISPORT}.conf1
2
mkdir /etc/redis
cp /usr/local/src/redis/redis.conf /etc/redis/6379.conf
这样,redis服务脚本指定的CONF就存在了。默认情况下,Redis未启用认证,可以通过开启6379.conf的requirepass 指定一个验证密码。
以上操作完成后,即可注册yedis服务:
1
chkconfig --add redis
3.启动redis服务
1
service redis start
第三,将Redis的命令所在目录添加到系统参数PATH中
修改profile文件:
1
vi /etc/profile
在最后行追加:
1
export PATH="$PATH:/usr/local/redis/bin"
然后马上应用这个文件:
1
. /etc/profile
这样就可以直接调用redis-cli的命令了,如下所示:
1
2
3
4
5
6
$ redis-cli
redis 127.0.0.1:6379> auth superman
OK
redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379>
至此,redis 就成功安装了。
总结下:在linux系统中安装redis,或多或少都能碰到一些问题。在此次安装中3个大部分,
1.下载,安装,这里使用到wget命令,make命令,我不太懂make命令的使用,而且一直担心make命令如何安装到指定目录下, 此次终于明白了。
2.如何将一个程序添加到服务,当然也对/etc/rc.d/init.d这个文件有所了解。
3.如何将一个程序的一些命令添加到系统参数中,直接输入命令就能达到对某个程序的操作。
其实就是指定好环境变量。
下篇简单使用jedis来对redis进行存取。Linux redis安装配置(例2)
redis作为NoSQL数据库的一种应用,响应速度和命中率上还是比较高效的。项目中需要用集中式可横向扩展的缓存框架,做了一点调研,即便redis、memcached存在效率上的差异(具体比较参考http://timyang.net/data/mcdb-tt-redis/),但其实都能满足目前项目的需求;但是redis还是比较风骚的,支持链表和集合操作,支持正则表达式查找key,目前项目缓存的结果大多是链表,如果链表新增或者修改数据的话,redis就体现出了极大的优势(memcached只能重新加载链表,redis可以对链表新增或者修改)
1:下载redis
下载地址 http://code.google.com/p/redis/downloads/list
推荐下载redis-1.2.6.tar.gz,之前这个版本同事已经有成功安装运行的经验,redis-2.0.4.tar.gz 这个版本我安装后无法操作缓存数据,具体原因后续再说
2:安装redis
下载后解压 tar zxvf redis-1.2.6.tar.gz 到任意目录,例如/usr/local/redis-1.2.6
解压后,进入redis目录
cd /usr/local/redis-1.2.6
make
拷贝文件
cp redis.conf /etc/ 这个文件时redis启动的配置文件cd src
cp redis-benchmark redis-cli redis-server /usr/bin/ #这个倒是很有用,这样就不用再执行时加上./了,而且可以在任何地方执行
设置内存分配策略(可选,根据服务器的实际情况进行设置)
/proc/sys/vm/overcommit_memory
可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存
值得注意的一点是,redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)
开启redis端口,修改防火墙配置文件
vi /etc/sysconfig/iptables
加入端口配置
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT (不好用这里查查资料在说,暂时可以不写)
重新加载规则
service iptables restart
3:启动redis服务
[root@Architect redis-1.2.6]# pwd
/usr/local/redis-1.2.6
[root@Architect redis-1.2.6]# redis-server /etc/redis.conf
查看进程,确认redis已经启动
[root@Architect redis-1.2.6]# ps -ef | grep redis
root 401 29222 0 18:06 pts/3 00:00:00 grep redis
root 29258 1 0 16:23 ? 00:00:00 redis-server /etc/redis.conf
如果这里启动redis服务失败,一般情况下是因为redis.conf文件有问题,建议检查或找个可用的配置文件进行覆盖,避免少走弯路,这里建议,修改redis.conf,设置redis进程为后台守护进程
# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes
4:测试redis
[root@Architect redis-1.2.6]# redis-cli
redis> set name songbin
OK
redis> get name
"songbin"
5:关闭redis服务
redis-cli shutdown
redis服务关闭后,缓存数据会自动dump到硬盘上,硬盘地址为redis.conf中的配置项dbfilename dump.rdb所设定
强制备份数据到磁盘,使用如下命令
redis-cli save 或者 redis-cli -p 6380 save(指定端口)NGINX 安装
安装NGINX前要先安装PCRE正则表达式库:
./configure --prefix=/usr/local/pcre 出现以下错误 (一般./configure即可, 笔者这里是直接./configure命令)
configure: error: You need a C++ compiler for C++ support. (解决办法: yum install -y gcc gcc-c++)
make
make install下面开始安装NGINX:
安装NGINX:
yum install libtool
yum install zlib zlib-develyum install openssl
./configure --prefix=/usr/local/nginx --with-http_stub_status_module
make
make install检查是否安装成功:
cd /usr/local/nginx/sbin
./nginx -t
./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
从错误看出是缺少lib文件导致,进一步查看下:
ldd $(which /usr/local/nginx/sbin/nginx)
可以看出 libpcre.so.1 => not found 并没有找到,进入/lib目录中手动链接下(这里的/lib目录指的是系统的根目录下面的lib目录)
32位系统 [root@mysqlslave lib]# ln -s /usr/local/lib/libpcre.so.1 /lib
64位系统 [root@mysqlslave lib]# ln -s /usr/local/lib/libpcre.so.1 /lib64结果显示:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful启动nginx:
cd /usr/local/nginx/sbin 目录下面 输入 ./nginx 启动nginx
ps -ef|grep nginx
netstat -nap|grep :80 //查看80端口被哪个进程占用
service iptables stop //把防火墙打开,否则nginx不能被访问--------------------------------------------------------------------------------------------------
安装完nginx后需要配置监听的IP地址和端口,笔者这里是针对memcached+tomcat6做的配置,进入nginx的安装目录,笔者这里是/usr/local/nginx/conf这个目录,打开nginx.conf这个文件做如下修改:
[root@mysqlmaster conf]# less nginx.conf
#user nobody;
#user www www;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
pid /usr/local/nginx/logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
include /usr/local/nginx/conf/proxy.conf; #一定要指向代理文件
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream backend {
# ip_hash;
server 192.168.0.93:8080;
server 192.168.0.92:8080;
#jvm_route $cookie_JSESSIONID|sessionid reverse;
}
server {
listen 80;
server_name 192.168.0.93;
#charset koi8-r;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://backend;
#proxy_redirect default;
proxy_set_header XReal-IP $remote_addr;
proxy_connect_timeout 10;
#client_max_body_size 100m;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
location ~^/(WEB-INF)/ {
deny all;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
还需要在/usr/local/nginx/conf目录下手动建立proxy.conf文件,内容如下:
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; #获取真实IP
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #获取代理者的真实ip
client_max_body_size 10m;
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;
--------------------------------------------------------------------------------------------------
最后的/usr/local/nginx/conf目录下文件截图如下:
--------------------------------------------------------------------------------------------------
最后再多提一句日志的问题,nginx的默认日志目录为/usr/local/nginx/logs目录,这个目录下面有3个文件,分别是access.log,error.log和nginx.pid,其中error.log是错误日志,如果在启动nginx时遇到错误可以到这里来查看错误问题。