阿里云服务器搭建过程
JDK安装
cd /usr/local
mkdir java
cd /home/setup
tar zxvf jdk-8u111-linux-x64.tar.gz
mv jdk-8u111-linux-x64.tar.gz /usr/local/java/
vi /etc/profile
最下面添加:
export JAVA_HOME=/usr/local/java/jdk1.8.0_111
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
tomcat安装
cd /usr/local/
mkdir tomcat
cd /home/setup
tar zxvf apache-tomcat-8.5.9.tar.gz
mv apache-tomcat-8.5.9 /usr/local/tomcat/
安装以后需要添加apr模式:在Tomcat中使用JNI的方式来读取文件以及进行网络传输。这个东西可以大大提升Tomcat对静态文件的处理性能,同时如果你使用了HTTPS方式 传输的话,也可以提升SSL的处理性能。openssl安装
cd /home/setup
tar zxvf openssl-1.1.0c.tar.gz
cd openssl-1.1.0c
./config --prefix=/usr/local/openssl -fPIC no-gost no-shared no-zlib
make
make install
以下为更换系统自带的openssl,千万不要删除自带的openssl,会导致ssh无法连接!mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo “/usr/local/openssl/lib”»/etc/ld.so.conf
ldconfig -v
openssl version -a
apr安装
cd /home/setup
tar zxvf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr
报错:rm: cannot remove `libtoolT’: No such file or directory
修改脚本:configure
$RM “$cfgfile” 改为 $RM -f “$cfgfile”
./configure --prefix=/usr/local/apr
make
make install
apr-util安装
cd /home/setup
tar zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --with-apr=/usr/local/apr
make
make install
tomcat-native安装
cd /usr/local/tomcat/apache-tomcat-8.5.9/bin/
tar zxvf tomcat-native.tar.gz
cd tomcat-native-1.2.10-src/native/
./configure --prefix=/usr/local/tomcat-native --with-apr=/usr/local/apr --with-ssl=/usr/local/openssl
make
make install
修改tomcat脚本catalina.sh,最上面加上一行,不然会报找不到类库的错误:
CATALINA_OPTS=”$CATALINA_OPTS -Djava.library.path=/usr/local/tomcat-native/lib”
以上配置完毕后tomcat成功开启apr模式。tomcat调优
1.删除webapps下所有的应用。
2.删除conf/tomcat_users.xml,以及server.xml中关于tomcat_users.xml的引用,旨在增强安全性。(去掉pathname=”conf/tomcat-users.xml”)
3.配置conf/logging.properties,删除所有的日志配置项,将日志输出级别调整到INFO(改成WARNING后看不到启动信息了)。样例如下:
handlers = java.util.logging.ConsoleHandler
.handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
4.bin目录下增加setenv.sh,进行jdk调优,8核8G服务器的配置如下:
JAVA_OPTS=”-server -Xms4G -Xmx4G -Xss256k -XX:+UseParallelOldGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/dump -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/home/dump/heap_trace.txt -XX:NewSize=1G -XX:MaxNewSize=1G”
5.Tomcat 8启动很慢,且日志上无任何错误,在日志中查看到如下信息
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [57,733] milliseconds.
打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:
securerandom.source=file:/dev/urandom
替换成
securerandom.source=file:/dev/./urandom
6.并发数调整
修改server.xml文件
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="1000"
minSpareThreads="500"
enableLookups="false"
URIEncoding="utf-8"
acceptCount="500"
connectionTimeout="20000"
redirectPort="8443" />
设置nfs共享目录
10.25.196.23—->a机器
10.25.156.112——->b机器
以下命令全部在10.25.196.23上操作。
查看nfs是否安装:
rpm -q nfs-utils
yum install nfs-utils
vi /etc/exports
/home/images 10.25.156.112(rw,no_root_squash,async)
启动服务
1.启动rpcbind服务 启动nfs服务 (且rpcbind一定要先于nfs启动)
service rpcbind start
service nfs start
2. 停止服务
停止NFS服务器前,需要先停止NFS服务再停止rpcbind服务。
service rpcbind stop
service nfs stop
3.自动启动NFS服务
chkconfig --level 3 rpcbind on
chkconfig --level 3 nfs on
4.查看所有输出的共享目录
showmount -e 10.25.196.23
输出以下结果:
Export list for 10.25.196.23:
/home/images 10.25.156.112
挂载
1.ssh登陆到另一台机器b:
ssh root@10.25.156.112
mount -t nfs 10.25.196.23:/home/images /home/images
-t:指定挂载设备的文件类型(nfs是网络文件系统)
10.25.196.23:nfs服务器ip地址
/home/images:nfs服务器的共享目录
/home/images:挂载在本地的目录
2.启动时自动连接nfs服务器
vi /etc/fstab
10.25.196.23:/home/images /home/images nfs defaults 0 0
在a机器上建立文件test.txt,然后发现b机器有了同样的文件,nfs服务端和客户端正常同步。
redis安装
cd /home/setup/
tar zxvf redis-3.2.6.tar.gz
cd redis-3.2.6
make
如果make报错:make[3]: gcc:命令未找到,执行:
yum -y install gcc-c++
如果make报错:zmalloc.h:50:31: 错误:jemalloc/jemalloc.h:没有那个文件或目录,执行:
make MALLOC=libc
make install
cd src
cp redis-server /usr/local/bin/
cp redis-cli /usr/local/bin
mv /home/setup/redis-3.2.6 /usr/local/redis
cd /usr/local/redis
vi redis.conf
tcp-backlog 1000 //改大一点
bind 127.0.0.1 //绑定ip
daemonize yes //改为后台运行
requirepass foobared //打开这个选项,设置密码
maxmemory 10gb //最大内存最好不要超过空闲内存的3/5,超过32GB会自动进入64位世界,指针长度*2,20%的空间会被指针消耗,性能略有影响
vi /etc/init.d/redis
#!/bin/sh
#chkconfig: 345 86 14
#description: Startup and shutdown script for Redis
PROGDIR=/usr/local/redis/src
PROGNAME=redis-server
DAEMON=$PROGDIR/$PROGNAME
CONFIG=/usr/local/redis/redis.conf
PIDFILE=/var/run/redis_6379.pid
DESC="redis daemon"
SCRIPTNAME=/etc/rc.d/init.d/redis
start()
{
if test -x $DAEMON
then
echo -e "Starting $DESC: $PROGNAME"
if $DAEMON $CONFIG
then
echo -e "OK"
else
echo -e "failed"
fi
else
echo -e "Couldn't find Redis Server ($DAEMON)"
fi
}
stop()
{
if test -e $PIDFILE
then
echo -e "Stopping $DESC: $PROGNAME"
if kill `cat $PIDFILE`
then
echo -e "OK"
else
echo -e "failed"
fi
else
echo -e "No Redis Server ($DAEMON) running"
fi
}
restart()
{
echo -e "Restarting $DESC: $PROGNAME"
stop
start
}
list()
{
ps aux | grep $PROGNAME
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
list)
list
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|list}" >&2
exit 1
;;
esac
exit 0
chmod +x /etc/init.d/redis
service redis start
service redis stop
chkconfig redis on