正在加载中,请稍后
author 首页 关于 笔记

按回车搜索更多

Centos 7.4 从零搭建Java环境
2018-05-15 阅读 {{counts.readCount}} 评论 {{counts.commentCount}}

这次重装系统以后,服务器的速度发生了质的飞跃!可以说CentOS在性能上是秒杀一切的存在!



先说下背景,原本4月份刚入手腾讯云服务器的时候,为了省事装了 windows server 2008 作为服务器操作系统,然而最近越来越感觉到服务器性能吃紧。因此决定,将服务器系统重装为CentOS 7.4 64位。


那么数小时的折腾之后,在经过无数次被centos虐出血之后,终于摸索出了自己安装全套环境的方法,在这里分享一下最终成果

一切都开始之前首先需要会使用vim和ssh、scp等基础命令


1、JDK1.8

    首先说下坑,众所周知,自带的yum里只有openjdk,我也说不出openJDK和oracleJDK的具体使用的区别,但是我坚持还是用oracleJDK,然后直接从jdk官网找到下载,从chrome的下载任务里找到下载地址,再从服务器wget,继续失败,出现一个神奇的bug,和这位国外的兄台情况基本一样,https://serverfault.com/questions/545982/installing-jdk-on-amazon-linux-box-gives-error-open-of-html-failed-no-such-f,于是在这个国外的问答当中找到坑之所在了,不能wget从官网直接下,因为会验证你有没有点我同意,不管你点没点,后面的安装都会炸。

重点来了

所以,正确的打开方式是,先在你自己电脑下载RPM版的jdk,例如我下的是jdk-8u171-linux-x64.rpm,再用scp等方式,上传到服务器。

我用的命令是 (windows平台 使用网上下载的pscp工具来模拟scp)

pscp C:\Users\Administrator\Downloads\jdk-8u171-linux-x64.rpm root@tczmh.club:/root/​

再切换到服务器,第一步 赋权

我的目录用的是/root,我先cd到root下

然后用以下命令赋最高权限给安装包

chmod -R 777 jdk-8u171-linux-x64.rpm​

再用以下命令安装

rpm -ivh jdk-8u171-linux-x64.rpm​

等到看到以下字样,说明安装完成,并且会自动配置环境变量

Preparing... ################################# [100%]
Updating / installing...
 1:jdk1.8-2000:1.8.0_171-fcs ################################# [100%]
Unpacking JAR files...
 tools.jar...
 plugin.jar...
 javaws.jar...
 deploy.jar...
 rt.jar...
 jsse.jar...
 charsets.jar...
 localedata.jar...​

那么最后再验证以下jdk是否安装完成

java -version​

看到以下结果说明安装完成

java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)​


2、MYSQL 5.7

mysql的坑不是一点点深了,首先centos从某个版本开始全面使用海狮DB(mariadb)来代替海豚DB(mysql),所以妄想使用yum一条龙安装的话,只能用mariadb了,当然同jdk,我也不知道mariadb和mysql到底有啥区别,反正我就是要用mysql5.7(手动滑稽

重点来了

那么直接废话少说,我用的是csdn上的大神提供的方法,原文地址https://blog.csdn.net/csdn_979690041/article/details/78506582

这篇文章的“1.4 安装 Mysql 5.7”部分,我亲测了一次成功

下面还是复制过来
3.1 下载mysql源安装包
    shell> wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
3.2 安装mysql源
    shell> yum localinstall mysql57-community-release-el7-8.noarch.rpm

3.3 验证源安装是否成功
    yum repolist enabled | grep "mysql.*-community.*"

3.4 设置默认需要安装的mysql版本(如果安装5.7可以忽略本步骤)
    可以修改vim /etc/yum.repos.d/mysql-community.repo源,
    改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的enabled=1改成enabled=0。
    然后再将5.6源的enabled=0改成enabled=1即可。

3.5 安装
    yum install mysql-community-server 

3.6 启动 mysql
    systemctl start mysqld
    #停止systemctl stop mysqld

3.7 查看状态 
    systemctl status mysqld
3.8 设置开机启动 
    systemctl enable mysqld
    systemctl daemon-reload
3.9 修改root本地登录密码 
    mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。(有时候生成的密码是特殊字符,mysql -uroot -p 会出问题,比如生成的密码 sX;qQZ.L;6Ml  
    那就用转义 sX\;qQZ.L\;6Ml 即可)

shell>grep 'temporary password' /var/log/mysqld.log
2017-05-23T04:53:37.967825Z 1 [Note] A temporary password is generated for root@localhost: wztxYpby+2Gr

然后登录mysql进行修改: 注意 密码有策略 大小写数字和特殊字符 否则报错
shell> mysql -uroot -pwztxYpby+2Gr(可能需要重启先,因为可能会报
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)  ) 


mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'ShangLi@2017';



3.10 增加远程登录用
#mysql -uroot -pscLRK@DBadmin2017'
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'lrkADMINdb@2017' WITH GRANT OPTION;    

增加开发人员使用账号

GRANT ALL PRIVILEGES ON *.* TO 'dev'@'%' IDENTIFIED BY 'ShangLi@2017' WITH GRANT OPTION;

3.11 配置编码和优化配置  `vim /etc/my.cnf` 把下面的复制 覆盖 my.cnf


[client]        
port=3306
default-character-set=utf8

[mysqld]
port=3306
character_set_server=utf8
init_connect='SET NAMES utf8'
collation-server=utf8_general_ci
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

#优化参数
#设置最大连接数 默认500
max_connections=1024
#临时表分配的内存 默认16M
tmp_table_size=200M
#定义了用户可以创建的内存表(memory table)的大小。这个值用来计算内存表的最大行数值。这个变量支持动态改变 ,默认16M
max_heap_table_size=500M
#一个事务,在没有提交的时候,产生的日志,记录到Cache中;等到事务提交需要提交的时候,则把日志持久化到磁盘。默认binlog_cache_size大小32K
binlog_cache_size = 1M
#事务隔离级别 默认 REPEATABLE-READ 总共4种 READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
transaction-isolation=REPEATABLE-READ
#数据库字段名名是否区分大小写 0不区分 1 区分
lower_case_table_names = 1
#默认mysql对很多联合查询会报警,可以修改sql_mode       sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'


3.12重启服务器 用新端口链接 ssh  用新密码链接数据库




3、Redis 4.0.9

如果是,走到这你还没炸,那么恭喜你。

即将迎来最后一个坑,压轴大坑~~~~Redis

因为他只能通过自己编译的方式安装,这对于linux小白简直是是分分钟劝退的节奏

redis我参考的是这篇csdn https://blog.csdn.net/lc1010078424/article/details/78295482

那么还是简单讲下我最后成功的结果

下载

wget http://download.redis.io/releases/redis-4.0.9.tar.gz

赋权(其实不是很有必要,只是我的个人习惯)

chmod -R 777 redis-4.0.9.tar.gz

解压

tar -xzvf redis-4.0.9.tar.gz

赋权

chmod -R 777 redis-4.0.9

编译

cd redis-4.0.9
make​

这里出现了一丢丢小情况 一堆报错

主要的关键字是 gcc: Command not found

意思就是没gcc环境

用下面这命令可以一步到位(建议以后一上手先来一遍)

yum -y install gcc automake autoconf libtool make

然后再来 make 再报错 大概内容是

zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory

原因是jemalloc重载了Linux下的ANSI C的malloc和free函数。解决办法:make时添加参数。命令如下

make MALLOC=libc

再直接make就过了

make

到这里编译完成 接下来要把编译结果放到一个合适的位置

mkdir -p /usr/local/redis
cp src/redis-server /usr/local/redis/
cp src/redis-cli /usr/local/redis/
cp redis.conf /usr/local/redis/

随后简易配置一下

vim /usr/local/redis/redis.conf

我只改了2个地方

分别是关闭保护模式,和开启守护进程

protected-mode no
daemonize yes

详细配置可以参考这篇文章 https://www.cnblogs.com/richiewlq/p/8569821.html

接下来编译开机启动 (默认应该是没这个文件,直接用vim创建一个)

vim /etc/init.d/redis​

然后粘贴以下内容,前面部分参数根据需要修改

#!/bin/sh
# chkconfig: 2345 80 90
# description: Start and Stop redis
#PATH=/usr/local/bin:/sbin:/usr/bin:/bin
#端口
REDISPORT=6379
#server路径
EXEC=/usr/local/redis/redis-server
#cli路径
REDIS_CLI=/usr/local/redis/redis-cli
#进程pid
PIDFILE=/var/run/redis_6379.pid
#配置文件路径
CONF="/usr/local/redis/redis.conf"
#密码
#AUTH="123456"

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
        if [ "$?"="0" ] 
        then 
              echo "Redis is running..."
        fi 
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $REDIS_CLI -p $REDISPORT SHUTDOWN
                while [ -x ${PIDFILE} ]
               do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
   restart|force-reload)
        ${0} stop
        ${0} start
        ;;
  *)
    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
        exit 1
esac

另一个配置文件

vim /etc/rc.local

加入

service redis start

赋权

chmod -R 777 /etc/init.d/redis

基本搞定 通过以下命令测试 分别是启动 停止 和检查进程是否存在

service redis start
service redis stop
ps -ef|grep redis​

加入redis命令软连接,方便从控制台操作redis

ln -s /usr/local/redis/redis-cli /usr/bin/redis





4、Tomcat 8.5

如果到这还没炸,那么已经成功99%了

因为和前面3个巨坑比起来,tomcat简直是白送

话说tomcat我都玩了N年了,这里基本不参考攻略了,所以可能不是最最标准的安装方案,但是我自己用够用


那么开始我的安装之旅

首先老样子 下载 这里先cd一下,是回到刚才的默认目录/root,一开始的下载都是在这里

cd
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.tar.gz​

解压 

tar apache-tomcat-8.5.31.tar.gz​​

改名字 

mv apache-tomcat-8.5.31.tar.gz tomcat85

赋权

chmod -R 777 tomcat85​

设置开机启动

vim /etc/rc.d/rc.local​

加一句在最后

/root/tomcat85/bin/startup.sh start​

赋权

chmod 777 /etc/rc.d/rc.local​​



根据自己的需求 最后去改一下server.xml配置

tomcat的使用方法见仁见智了 这里只留下一写非常常用的命令

查看控制台输出日志

cat logs/catalina.out

启动

./bin/startup.sh

停止

./bin/shutdown.sh

虚拟路径配置

<Context path="" docBase="项目名" reloadable="true"/>


另外tomcat还可以优化各种性能 下面先看错误示范

conf/server.xml

<Connector port="80" protocol="HTTP/1.1"
               maxThreads="1000"
               minProcessors="100"
               maxProcessors="1000"
               minSpareThreads="100"
               maxSpareThreads="1000"
               enableLookups="false"
               URIEncoding="utf-8"
               acceptCount="1000"
               connectionTimeout="20000"
               disableUploadTimeout="ture"
               redirectPort="8443" />

bin/catalina.sh

 JAVA_OPTS='-Xms256m -Xmx1566m -XX:PermSize=128m -XX:MaxPermSize=512m'

刚优化完还想检查一下就发现问题了

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0
15-May-2018 22:37:32.292 WARNING [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/Connector} Setting property 'minProcessors' to '100' did not find a matching property.
15-May-2018 22:37:32.319 WARNING [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/Connector} Setting property 'maxProcessors' to '1000' did not find a matching property.
15-May-2018 22:37:32.319 WARNING [main] org.apache.catalina.startup.SetAllPropertiesRule.begin [SetAllPropertiesRule]{Server/Service/Connector} Setting property 'maxSpareThreads' to '1000' did not find a matching property.
15-May-2018 22:37:32.564 WARNING [main] org.apache.tomcat.util.digester.SetPropertiesRule.begin [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'debug' to '0' did not find a matching property.

意思就是 tomcat8.5 jdk8 已经不支持这些参数了,设了也白设


参考文章 

https://blog.csdn.net/jiangguilong2000/article/details/47975457

https://blog.csdn.net/dracotianlong/article/details/8963594




辣么 调整以后的如下

bin/catalina.sh

JAVA_OPTS='-Xms256m -Xmx1566m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m'​

conf/server.xml

        <Connector port="80" protocol="HTTP/1.1"
               maxThreads="1000"
               enableLookups="false"
               URIEncoding="utf-8"
               acceptCount="1000"
               connectionTimeout="20000"
               disableUploadTimeout="ture"
               redirectPort="8443" />




到此就大功告成啦~~啦啦啦~~~






提交
评论区空空如也,赶紧添加一条评论吧 评论 {{counts.commentCount}}
{{comment.name}} {{comment.os}} {{comment.browser}}
{{dateFormatter(comment.createTime)}}

{{comment.message}}

{{comment.reply.name}} {{comment.reply.os}} {{comment.reply.browser}}
{{dateFormatter(comment.reply.createTime)}}

{{comment.reply.message}}

zzzmh
关于我 留言板

网址导航

{{alert.message}}
留言板 * 站长不经常查看信箱 若有重要事宜联系邮箱 admin@zzzmh.cn 取消 发送