CentOS7 下安装 Java 8 、Tomcat8、nginx和mysql5.7(安装方法和问题解决)

 安装jdk、tomcat、mysql是常用操作,但是做的时候经常忘记,特此记录。

 

一、安装 Java8

准备

查看是否已经安装了java

java -version

这里写图片描述

如果出现如图,说明没有安装

如果以前已经安装就卸载

#查看内置的JDK
rpm -qa | grep jdk

#卸载内置的JDK
yum remove java-1.6.0-openjdk
yum remove java-1.7.0-openjdk

安装wget

检查是否安装wget下载工具

如果输入wget 显示如下: 
CentOS7 下安装 Java 8 、Tomcat8、nginx和mysql5.7(安装方法和问题解决)_第1张图片 
说明已经安装了wget了,如果提示没有 wget 命令,那么必须先安装 wget 如下:

yum install wget

采用离线下载的方式下载wget.rpm 
下载wget.rpm 上传到Linux服务器 
http://mirrors.163.com/centos/7.2.1511/os/x86_64/Packages/wget-1.14-10.el7_0.1.x86_64.rpm

安装wget

#安装
rpm -ivh wget-1.14-10.el7_0.1.x86_64.rpm

下载java8

tar.gz安装

在线下载 tar.gz

wget http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.tar.gz?AuthParam=1462934736_6fb6b206c0b3018e3ad5642e2893687b

离线下载 tar.gz(我采用这种方式,因为尝试在线安装下载失败)

下载地址: 去jdk官网下载

将tar.gz 文件上传上去

解压安装 tar.gz

#上传解压
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/java/jdk

配置环境变量

# 修改配置文件
vi /etc/profile
# 在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL下添加

export JAVA_HOME=/usr/local/java/jdk/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 刷新配置文件
source /etc/profile

 

测试是否成功

CentOS7 下安装 Java 8 、Tomcat8、nginx和mysql5.7(安装方法和问题解决)_第2张图片

至此CentOS7成功安装 Java8

二、安装Tomcat8

这里采用离线解压tar.gz的方式安装

下载:

在tomcat官网上下载,我下载的是8.0.15版本

解压:cd进入目录后进行如下命令

tar -zxvf apache-tomcat-8.0.15.tar.gz -C /usr/local/tomcat8/ 

启动Tomcat:cd进入tomcat的bin目录后进行如下命令

cd bin/
./startup.sh

防火墙中开放端口

云服务器中:将8080端口添加到防火墙例外并重启,使用腾讯云服务器可以在控制台配置安全组额入站规则

centos中:

一些需要用到的命令:

1、firewalld的基本使用
启动: systemctl start firewalld

查看状态: systemctl status firewalld / firewall-cmd --state 这个命令也可以,只是信息会简单点

停止: systemctl disable firewalld

禁用: systemctl stop firewalld

 

怎么开启一个端口

添加

firewall-cmd --zone=public --add-port=8080/tcp --permanent   (--permanent永久生效,没有此参数重启后失效)

添加端口外部访问权限(这样外部才能访问)
firewall-cmd --add-port=8080/tcp

重新载入,添加端口后重新载入才能起作用

firewall-cmd --reload

这些之后,端口是开启成功的,如果没有成功,重启系统试试。
 

访问8080端口测试 

CentOS7 下安装 Java 8 、Tomcat8、nginx和mysql5.7(安装方法和问题解决)_第3张图片

三、安装nginx

安装所需环境

Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本

1.安装gcc gcc是用来编译下载下来的nginx源码
  yum install gcc-c++

2、安装pcre和pcre-devel
    PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。
    nginx 的 http 模块使用 pcre 来解析正则表达式,pcre-devel 是使用 pcre 开发的一个二次开发库。
    yum install -y pcre pcre-devel

3、安装zlib zlib提供了很多压缩和解方式,nginx需要zlib对http进行gzip
   yum install -y zlib zlib-devel

4、安装openssl openssl是一个安全套接字层密码库,nginx要支持https,需要使用openssl
    yum install -y openssl openssl-devel

5. 下载nginx 也可以在官网上下载

使用wget命令下载(推荐)。确保系统已经安装了wget,如果没有安装,执行 yum install wget 安装。

   wget http://nginx.org/download/nginx-1.14.2.tar.gz
   
6.解压
    tar -zxvf nginx-1.14.2.tar.gz
    
7. cd到nginx文件路径

     cd nginx-1.14.2

配置nginx

其实在 nginx-1.14.2 版本中你就不需要去配置相关东西,默认就可以了。当然,如果你要自己配置目录也是可以的。


1.使用默认配置

./configure

安装完会打印nginx各个文件的路径 

编译安装

make
make install

安装完成后 在路径/usr/local/nginx/ 可以看到nginx各个文件

2.这是nginx的另一种配置 自定义配置

 2.1.编译(这是其中一种方式,不推荐,其实默认配置就OK了)
  ./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/tem/nginx/client --http-proxy-temp-path=/var/tem/nginx/proxy --http-fastcgi-temp-path=/var/tem/nginx/fcgi --with-http_stub_status_module

CentOS7 下安装 Java 8 、Tomcat8、nginx和mysql5.7(安装方法和问题解决)_第4张图片

2.2.安装
  make && make install

CentOS7 下安装 Java 8 、Tomcat8、nginx和mysql5.7(安装方法和问题解决)_第5张图片

2.3.启动,如果出错,看下面的解决方法
    nginx -c /etc/nginx/nginx.conf

如果出现[emerg] getpwnam("nginx") failed 错误 执行
    useradd -s /sbin/nologin -M nginx
    id nginx
    
如果出现 [emerg] mkdir() "/var/temp/nginx/client" failed (2: No such file or directory) 错误 执行
    sudo mkdir -p /var/tem/nginx/client

所以使用第二种方式配置niinx会有些麻烦

允许HTTP和HTTPS通信

如果您正在运行防火墙,请运行以下命令以允许HTTP和HTTPS通信:
sudo firewall-cmd --permanent --zone=public --add-service=http 
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

否则nginx后无法访问

启动、停止nginx

cd /usr/local/nginx/sbin/
./nginx 
./nginx -s stop
./nginx -s quit
./nginx -s reload

 注意80端口是否被占用

./nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。
./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

查询nginx进程:

ps aux|grep nginx

 

重启 nginx

1.先停止再启动(推荐):
对 nginx 进行重启相当于先停止再启动,即先执行停止命令再执行启动命令。如下:

./nginx -s quit
./nginx

2.重新加载配置文件:
当 ngin x的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,使用-s reload不用先停止 ngin x再启动 nginx 即可将配置信息在 nginx 中生效,如下:
./nginx -s reload

启动成功后,在浏览器可以看到这样的页面:

输入地址

CentOS7 下安装 Java 8 、Tomcat8、nginx和mysql5.7(安装方法和问题解决)_第6张图片

开机自启动

即在rc.local增加启动代码就可以了。

vi /etc/rc.local

增加一行 /usr/local/nginx/sbin/nginx
设置执行权限:

chmod 755 rc.local

 

大功告成!

四、安装mysql5.7

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。

1 下载并安装MySQL官方的 Yum Repository

[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

  使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。

[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm

  之后就开始安装MySQL服务器。

[root@localhost ~]# yum -y install mysql-community-server

  这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb。

至此MySQL就安装完成了,然后是对MySQL的一些设置。

2 MySQL数据库设置

  首先启动MySQL

[root@localhost ~]# systemctl start  mysqld.service

  查看MySQL运行状态,运行状态如图:

[root@localhost ~]# systemctl status mysqld.service

  此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

[root@localhost ~]# grep "password" /var/log/mysqld.log

  如下命令进入数据库:

[root@localhost ~]# mysql -uroot -p

  输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

  这里有个问题,新密码设置的时候如果设置的过于简单会报错:

 正确的密码格式是:大写字母+小写字母+数字+符号

  但此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:

[root@localhost ~]# yum -y remove mysql57-community-release-el7-10.noarch

  到这里mysql的安装完成了,但是本地远程连接会报错,被拒绝连接,还有修改一点东西。

navicat远程连接提示:Host 'xxx' is not allowed to connect to this MySQL server。网上找了一些资料,是mysql未开启mysql远程访问权限导致。

记录解决方案供以后参考。:

1.登录到mysql:  mysql -uroot -ppwd

2.查看user表: 

mysql> use mysql
Database changed
mysql> select host,user,password from user;
+------+------+-------------------------------------------+
| host | user | password |
+------+------+-------------------------------------------+
| localhost    | root | *826960FA9CC8A87953B3156951F3634A80BF9853 |
+------+------+-------------------------------------------+
1 row in set (0.00 sec)

表中host、user字段标识了可以访问数据库的主机和用户。例如上面的数据就表示只能本地主机通过root用户访问。原来如此,难怪远程连接死活连不上。

为了让数据库支持远程主机访问,有两种方法可以开启远程访问功能。

第一种(改表法):

修改host字段的值,将localhost修改成需要远程连接数据库的ip地址。或者直接修改成%。修改成%表示,所有主机都可以通过root用户访问数据库。为了方便,我直接修改成%。命令:mysql> update user set host = '%' where user = 'root';

再次查看user表

+------+------+-------------------------------------------+
| host | user | password |
+------+------+-------------------------------------------+
| % | root | *826960FA9CC8A87953B3156951F3634A80BF9853 |
+------+------+-------------------------------------------+
1 row in set (0.00 sec)

修改成功,输入命令mysql> FLUSH PRIVILEGES; 回车使刚才的修改生效,再次远程连接数据库成功。

第二种(授权法):

例如,你想root使用mypassword从任何主机连接到mysql服务器的话。 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 


如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 
'mypassword' WITH GRANT OPTION; 

输入命令mysql> FLUSH PRIVILEGES; 回车使刚才的修改生效,再次远程连接数据库成功。bingo.

别忘记最后的FLUSH PRIVILEGES; 刷新先前的修改。

我使用的是第一种方法,这么做后,所以的就完成了!

大功告成!

你可能感兴趣的:(工具,tomcat,数据库,java技术,centos7,nginx)