阿里云服务器搭建过程遇到的问题

1. Tomcat启动缓慢,长达282652+ms或者更长(Creation of SecureRandom instance for session ID generation )

原因: /dev/random会根据噪音产生随机数,如果噪音不够它就会阻塞,Linux是通过I/O,键盘终端、内存使用量、CPU利用率等方式来收集噪音的,如果噪音不够生成随机数的时候就会被阻塞。

解决方法一:Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。为了提高安全性Tomcat在启动的时候回通过随机生成一个密钥。
http://wiki.apache.org/tomcat/HowTo/FasterStartUp(Entropy Source部分)有一段解释。stackoverflow上面也有一大批这方面的说明,所以这里就不再多做介绍。明白了问题的原因解决起来就非常简单了——替换/dev/random为/dev/unrandom,用伪随机函数生成器(/dev/urandom)来替代随机函数生成器(/dev/random)。

1.vim /usr/local/services/jdk1.8.0_91/jre/lib/security/java.security
2.用/dev/urandom替换/dev/random
3.securerandom.source=file:/dev/urandom

解决方法二:增大/dev/random的熵池。问题的原因是由于熵池不够大,所以增大它是最彻底的方法。
通过cat/proc/sys/kernel/random/entropy_avail我们可以查看现在的熵池大小;

● yum install rngd-tools             安装rngd服务(熵服务) 
● systemctl start rngd                启动服务 
● systemctl daemon-reload       重新载入服务 
● systemctl restart rngd             重启服务 
经过上面的修改,我们再观察/proc/sys/kernel/random/entropy_avail基本上在3000左右。我们可以测试一下随机数的生成速度:
  • watch -n 1 cat /proc/sys/kernel/random/entropy_avail观察这个值
  • 新打开一个shell,用dd命令测试随机数。
dd if=/dev/random of=random.dat count=40960 

[root@localhost bin]# dd if=/dev/random of=random.dat count=40960
记录了0+40960 的读入
记录了6004+1 的写出
3074362字节(3.1 MB)已复制,5.01017 秒,614 kB/秒
5秒产生了40960个随机数,/proc/sys/kernel/random/entropy_avail会有剧烈的变化,所有随机数产生之后它又会保持在3000左右。

对于以上问题个人建议使用解决方法二,(参考文章

)

2. Mysql安装:

  • 错误:FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:Data::Dumper

原因:初始化mysql数据库提示缺少Data:dumper模块解决方法

解决方法 :安装autoconf库
命令:yum -y install autoconf //安装时会安装Data:Dumper模块

安装完成:

yum install -y libaio //安装后在初始化就OK了 然后在重新执行否在会出现如下错误:

  • 错误: 登录到mysql数据库(首次登陆若未设置密码是无需输入的)

原因:因为系统默认会查找/usr/bin下的命令,由于mysql没有在这个目录下,所以出现not found。因此需要做一个软连接到/usr/bin目录下。

解决方法:

执行命令: ln -s /usr/local/mysql/bin/mysql /usr/bin
注意:其中/usr/local/mysql 为:mysql的安装路径

  • 错误:执行update语句时出现ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'

原因:有多个ROOT用户纪录在USER表中了

解决方案:
需要 select host from user where user = 'root';
查看一下host是否已经有了%这个值,有了就可以了

很显然host已经有了%这个值,所以直接运行命令:
MySQL> flush privileges;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。