从零开始安装一台java的linux服务器(jdk、nginx、mysql、redis、tomcat、maven)

记录一下一台刚重装系统的linux(centos7.2)服务器,安装各种java应用需要的环境

一.安装jdk

首先下载jdk:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
把下载的文件上传到服务器,用工具上传就行了,哪个工具无所谓。
把jdk下载的文件上传到home。同时在usr目录下新建java文件夹,用来安装jdk文件
然后cd到这个文件夹里面,ls一下看是不是有了
有上传的安装包之后在当前目录输入 tar -zxvf jdk-8u191-linux-x64.tar.gz -C /usr/java解压安装包到usr/java目录,
然后cd到java文件夹,就可以看到加压后的文件jdk1.8.0_191

接下来配置环境变量,输入:vim /etc/profile进入编辑模式,先按i键进入编辑模式,然后把光标移动到最后面,在文件末尾加上:

JAVA_HOME=/usr/java/jdk1.8.0_191
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH

注意:JAVA_HOME=/usr/java/jdk1.8.0_191 粗体部分是自己的jdk安装目录。
然后按Esc键退出编辑模式,再输入:wq并回车,表示保存并退出
退出之后输入:source /etc/profile重新加载配置文件
然后java -version查看安装情况,一般情况下肯定是安装成功的。
jdk到此安装完成

二.安装nginx

安装nginx需要几个前提:

  1. 1.gcc 安装
    安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:yum install gcc-c++, 安装过程会让你确认,直接y
  2. PCRE pcre-devel 安装
    PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:yum install -y pcre pcre-devel
    遇到的问题:我是腾讯云的,这个命令报错:
	Multilib version problems found. This often means that the root
       cause is something else and multilib version checking is just
       pointing out that there is a problem. Eg.:

         1. You have an upgrade for pcre which is missing some
            dependency that another package requires. Yum is trying to
            solve this by installing an older version of pcre of the
            different architecture. If you exclude the bad architecture
            yum will tell you what the root cause is (which package
            requires what). You can try redoing the upgrade with
            --exclude pcre.otherarch ... this should give you an error
            message showing the root cause of the problem.

         2. You have multiple architectures of pcre installed, but
            yum can only see an upgrade for one of those architectures.
            If you don't want/need both architectures anymore then you
            can remove the one with the missing update and everything
            will work.

         3. You have duplicate versions of pcre installed already.
            You can use "yum check" to get yum show these errors.

这个原因是因为:pcre包重复,输入命令:rpm -qa | grep pcre,看到了两个pcre,所以卸载一个pcre:yum remove pcre-8.32-15.el7_2.1.i686,然后再重新执行上面的安装命令就可以了。

  1. zlib 安装
    zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。命令:yum install -y zlib zlib-devel
    然后这个安装的时候同样出现了上面第二部这个问题,很明显一样的错误,同样的处理方式:
rpm -qa | grep zlib
yum remove zlib-1.2.7-15.el7.i686

然后重新执行

  1. OpenSSL 安装
    OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
    nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。命令:yum install -y openssl openssl-devel

然后这四个都安装完成之后,下载nginx安装包:http://nginx.org/en/download.html 注意下载Stable version稳定版
下载完成后上传到home目录,然后再usr下面创建nginx目录,在home目录运行:tar -zxvf nginx-1.14.2.tar.gz -C /usr/nginx
然后解压完成后进入nginx目录输入命令:

./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

这是将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx等各个目录,具体在上面这个配置里面有,就是后面5行对应的目录,去创建一下就好了。这是自定义的配置,根据个人情况,我这里使用了这个配置。
然后在解压后的nginx目录输入命令:make && make install
没什么问题的就安装好了,然后输入:whereis nginx查看niginx的安装目录,我这里的话正常的安装结果是nginx: /usr/local/nginx
然后启动nginx
如果要修改nginx就在:/usr/local/nginx/conf/nginx.conf 修改此文件
启动、停止nginx等操作

cd /usr/local/nginx/sbin/
./nginx 
./nginx -s stop		此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程
./nginx -s quit		此方式停止步骤是待nginx进程处理任务完毕进行停止
./nginx -s reload	当nginx的配置文件nginx.conf修改后,要想让配置生效需要重启 nginx,使用-s reload不用先停止nginx再启动 nginx 即可将配置信息在nginx中生效

然后访问安装nginx的服务器地址,因为nginx默认80端口,所以浏览器直接访问就能看到Welcome to nginx!
开机自启动:vi /etc/rc.local,增加一行 :/usr/local/nginx/sbin/nginx,设置执行权限:chmod +x /etc/rc.d/rc.local

三.安装mysql5.7

下载安装包:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
在这里选择对应的版本下载安装包,具体就不说了很简单的。
下载后把压缩包上传到服务器的home目录
然后检查服务器系统:

  • 卸载系统自带的Mariadb:
    查看mariadb数据库:rpm -qa | grep mariadb
  • 卸载mariadb数据库:rpm -e --nodeps mariadb文件名
  • 卸载已安装的mysql:
    查看 mysql 数据库:rpm -qa | grep -i mysql,卸载 mysql 数据库:rpm -e mysql文件名 # 如果有关联文件,不能直接卸载。可以用一下命令强制卸载:rpm -e --nodeps mysql文件名
  • 删除etc目录下的my.cnf文件:rm /etc/my.cnf(如果有的话)

然后把上传的压缩包解压,在home目录输入命令:tar -xvf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
然后再解压得到的文件夹下面依次执行下面的命令,一次一行,这几个文件是存在依赖关系的,所以在安装时有对应的优先级需要按顺序安装

rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.24-1.el7.x86_64.rpm

但是在第四行命令执行时出现了错误:

warning: mysql-community-server-5.7.24-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
        libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.24-1.el7.x86_64
        libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-5.7.24-1.el7.x86_64
        libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-5.7.24-1.el7.x86_64

有两种解决办法,我也不清楚具体原因,我用的第一种:

  1. 执行这个命令:yum install libnuma*

  2. 在第四行命令后面加上:--force --nodeps,就是把第四行命令变成:rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm --force --nodeps

然后把上面5个都执行完,安装成功后,执行:systemctl start mysqld.service
但是执行的时候出现错误:

Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

这个错误我之前没出现过,这次突然出现了,查了半天,查到了解决方法:mysqld --initialize –user=mysql –datadir=/var/lib/mysql
然后执行systemctl start mysqld.service然后又报错

mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory 

解决方法:
如果已经安装了libnuma.so.1,先yum remove libnuma.so.1,然后yum install numactl.x86_64
然后应该就可以了,再执行一次systemctl start mysqld.service,没报错。可以了
然后执行:/usr/sbin/mysqld --initialize --user=mysql初始化表,但是又报错了

2018-12-24T07:02:02.364159Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please u         se --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-12-24T07:02:02.365924Z 0 [ERROR] --initialize specified but the data directory has files in it.          Aborting.
2018-12-24T07:02:02.365955Z 0 [ERROR] Aborting

这个解决方法是:

  1. 在/etc/my.cnf文件末尾加上explicit_defaults_for_timestamp=true这句话
    然后再执行/usr/sbin/mysqld --initialize --user=mysql
    还报错:
2018-12-24T07:03:27.260043Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2018-12-24T07:03:27.260100Z 0 [ERROR] Aborting

问题原因是mysql在进行初始化的时后,会检测数据目录是否存在,如过不存在,mysql会创建它, 如果存在,而且这个目录里有数据,mysql会报错,并且终止初始化
所以我们这里是新装mysql数据库,直接执行:rm -fr /var/lib/mysql
然后再执行/usr/sbin/mysqld --initialize --user=mysql就可以了。

mysql5.7初始化后,会产生一个 临时登录密码,前面在 my.cnf 文件中配置的日志路径是 log-error=/var/log/mysqld.log, 查看此路径下面的 mysqld.log 日志, 可以找到临时密码,在这个文件中搜索password关键字就可以找到了:

cat /var/log/mysqld.log | grep password

使用初始密码登录mysql:

mysql -uroot -p

然后有报错了,无语,,,,,

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

然后网上查到:ps -A|grep mysql
然后把显示的进程全部杀掉,我只显示了一个,所以kill -9 显示的进程
然后再试,竟然就好了。。。。。
接着使用如下命令修改密码

mysql> set password=password('新密码');
mysql> flush privileges; #刷新

添加远程访问权限

mysql> use mysql
mysql> update user set host='%' where user='root';
mysql> select host,user from user;
mysql> flush privileges;
mysql> quit

systemctl restart mysqld.service			#退出mysql,重启mysql服务生效

当然你要给你的服务器放开3306的访问权限,然后本地用navicat测试连接没连接成功,终于把这个玩意装好了,装个mysql都能累死人。
最后再补一个mysql开机自启动,按着下面的步骤执行:

  1. whereis mysql 显示出你的mysql安装路径,比如我的是:mysql: /usr/bin/mysql /usr/lib64/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
  2. vi /usr/lib/systemd/system/mysql.service 进入编辑模式复制下面的代码进去,保存。注意ExecStart里的路径要跟你的mysql安装路径一致
    	[Unit]
    	Description=MySQL Server
    	Documentation=man:mysqld(8)
    	Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    	After=network.target
    	After=syslog.target
    	
    	[Install]
    	WantedBy=multi-user.target
    	
    	[Service]
    	User=mysql
    	Group=mysql
    	ExecStart=/usr/bin/mysql --defaults-file=/etc/my.cnf
    	LimitNOFILE = 5000
    	#Restart=on-failure
    	#RestartPreventExitStatus=1
    	#PrivateTmp=false
    
  3. 然后重启你的mysql服务:systemctl restart mysql
  4. systemctl enable mysql
    完事!

四.安装Redis

首先下载Redis安装包:https://redis.io/download 记得下载Stable 稳定版
下载好之后上传到home文件夹,在usr目录下创建文件夹redis
执行解压:tar -zxvf redis-5.0.3.tar.gz -C /usr/redis
然后cd到/usr/redis/redis-5.0.3/目录下,执行:make对Redis解压后文件进行编译,完成后进入进入src文件夹,执行make install进行Redis安装
没什么问题就是安装成功了,然后进行配置
为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中。
创建文件夹执行:mkdir -p /etc/redis
然后把redis.conf移动到创建的文件夹:mv /usr/redis/redis-5.0.3/redis.conf /etc/redis
然后修改redis后台启动,执行:vi /etc/redis/redis.conf或者使用工具修改,修改该文件的daemonize 为yes,在文件中搜索daemonize,把后面的no改成yes,然后保存
daemonize:yes:redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程
启动redis执行:/usr/local/bin/redis-server /etc/redis/redis.conf
如果没报错,执行:ps -ef | grep redis 查看redis端口如果出现:

root     31820     1  0 10:48 ?        00:00:00 /usr/local/bin/redis-server 127.0.0.1:6379
root     31833 23022  0 10:48 pts/0    00:00:00 grep --color=auto redis

启动redis: redis-server redis-conf
关闭redis: redis-cli shutdown
进入redis命令界面:redis-cli
当设置密码后,上面的关闭命令无效:带密码输入: redis-cli -a [password] 回车后输入:shutdown
即可关闭redis,输入exit 退出。

表示启动成功!redis安装完成

五. 安装tomcat

下载tomcat:https://tomcat.apache.org/download-90.cgi
从零开始安装一台java的linux服务器(jdk、nginx、mysql、redis、tomcat、maven)_第1张图片
下载后上传到linux服务器,解压到/usr/tomcat
在压缩包目录执行:tar -zxvf apache-tomcat-9.0.33.tar.gz -C /usr/tomcat
然后在tomcat目录的bin目录下 sh startup.sh 启动tomcat
sh shutdown.sh 关闭
sh startup.sh 开启

你可能感兴趣的:(杂项)