【Linux】Linux 安装传统 JDK、MySQL、Redis、Nginx 命令

一、传统模式项目部署

直接切入正题,简要分析我们项目开发中的实际部署需求。首先本节讲解的是标准云服务器项目部署,所以我们的项目主体是直接部署在 Linux 上的,没有使用任何容器技术等方案部署,所以一切从简。我们需要解决的问题如下:

解决的问题如下

  • Linux 安装 JDK1.8
  • Linux 安装 MySQL5.7、MySQL8.0
  • Linux 安装 Nginx、配置项目映射
  • Linux 安装 Redis
  • Linux 部署 SpringBoot jar 项目
  • Linux 安装 Tomcat
  • Linux 部署 SpringBoot war 项目

所需要的安装包,在公众号回复【Linux 安装包】即可获取下载地址

  • jdk-8u191-linux-x64.tar.gz
  • mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
  • redis-6.2.6.tar.gz
  • nginx-1.21.4.tar.gz

所有上传的项目文件,统一存放在目录:/tellsea/project

(1)安装 JDK

JDK1.8 官网下载地址,找到 jdk-8u191-linux-x64.tar.gz 下载,将下载好的安装包放到 Linux 的 /home/project 文件夹下,解压安装包

mkdir -p /tellsea/zip

cd /tellsea/zip

tar -zxvf jdk-8u191-linux-x64.tar.gz

创建安装目录

mkdir -p /usr/local/java/

移动 解压文件夹

mv jdk1.8.0_191 /usr/local/java/

安装完成,继续配置环境变量,修改环境变量配置文件,在末尾增加配置

vim /etc/profile
#jdk环境变量
export JAVA_HOME=/usr/local/java/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

刷新配置文件

source /etc/profile

使用 java、javac 验证安装结果,OK,有手就行!

(2)安装 MySQL

查看系统是否已经安装 mariadb

rpm -qa | grep mariadb

如果有,则卸载相对应的模块

rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

安装 MySQL 依赖包 libaio

yum install libaio

创建 MySQL 安装目录和数据存放目录,并授权

mkdir /usr/local/mysql
mkdir /usr/local/mysql/mysqldb
chmod -R 777 /usr/local/mysql
chmod -R 777 /usr/local/mysql/mysqldb/

创建 MySQL 组:创建 MySQL 用户,并设置密码

useradd mysql
passwd mysql

将 mysql 目录的权限授给 mysql 用户和 mysql 组

chown -R mysql:mysql /usr/local/mysql

上传并解压安装包,解压的所有文件是放在/usr/local/mysql 目录下的

tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.7.32-linux-glibc2.12-x86_64/* /usr/local/mysql/

cd /usr/local/mysql

在系统根目录的/etc 创建 MySQL 的安装初始化配置文件 my.cnf

vi /etc/my.cnf

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/mysqldb
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password

# mysql忽略大小写
lower_case_table_names=1
# 解决mysql8.x+的版本,group by报错
sql_mode='NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES'

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

安装 MySQL,进入 MySQL 安装目录 bin 下

cd /usr/local/mysql/bin

执行命令,并记住随机密码

 ./mysqld --initialize --console

如果报错:./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

解决方案:

如果安装 mysql 出现了以上的报错信息.这是却少 numactl 这个时候如果是 Centos 就 yum -y install numactl 就可以解决这个问题了.

ubuntu 的就 sudo apt-get install numactl 就可以解决这个问题了

启动 MySQL 服务

cd /usr/local/mysql/support-files

./mysql.server start

可能出现的报错

  • 【报错】启动 MySQL 服务时报 my_print_defaults:未找到命令错误,解决方法是检查并修改 /etc/my.cnf 中的 MySQL 的安装目录
  • 【报错】启动 MySQL 服务时报 updating PID file 错误,解决方法是在安装目录下重新授权,然后再启动 MySQL
  • 【报错】Starting MySQL…The server quit without updating PID file ([失败]ocal/mysql/权限不足导致的,添加权限 举例: chown -R mysql:mysql /usr/local
  • 【报错】./mysql: error while loading shared libraries: libtinfo.so.5: cannot open sh
    sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
    sudo ln -s /usr/lib64/libncurses.so.6.1 /usr/lib64/libncurses.so.5

将 MySQL 加入系统进程中

cp mysql.server /etc/init.d/mysqld

# 然后重启MySQL服务:

service mysqld restart

修改登录密码

cd /usr/local/mysql/bin

./mysql -u root -p

修改语句

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

任意目录登录 MySQL 问题,解决方法是创建一个软连接到 /usr/bin

ln -s /usr/local/mysql/bin/mysql /usr/bin

设置允许远程登录

use mysql;

update user set user.Host='%' where user.User='root';

flush privileges;

最后使用 quit 命令退出 MySQL,重启服务即可完成安装

 service mysqld restart

至此 MySQL 安装完成

(3)安装 Nginx

首先安装 Nginx 所需要的四个核心依赖

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

解压 Nginx 安装包,创建 Nginx 目录,将解压文件复制到根目录,进入根目录

tar -zxvf nginx-1.21.4.tar.gz

# -bash: make: command not found:yum -y install gcc automake autoconf libtool make
mkdir /usr/local/nginx

mv nginx-1.21.4/* /usr/local/nginx/

cd /usr/local/nginx/

编译 Nginx,安装 Nginx,我直接一个命令,这里增加了一个配置 ssl,是用于配置 https 的,必须增加

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module  --conf-path=/usr/local/nginx/nginx.conf

make && make install

创建 Nginx 日志存放目录

mkdir /usr/local/nginx/logs

修改配置文件

vi /usr/local/nginx/conf/nginx.conf

我这里修改的主要内容

  • 域名映射到 IP 地址

  • SpringBoot 上传的文件根目录映射

  • 静态资源优化访问数据

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

# pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
	client_max_body_size 200m;
	server_tokens off;

    server {
		listen       80;
        server_name huahaili.tellsea.cn;
		#listen       443 ssl;
		#ssl_certificate '/usr/local/nginx/cert/5158700__tellsea.cn.pem';
		#ssl_certificate_key '/usr/local/nginx/cert/5158700__tellsea.cn.key';
		#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

		location /project-web {
			root /tellsea/project;
			index  index.html index.htm;
			try_files $uri $uri/ /etd-middle-web;
		}
		
		location /project-app-user {
			root /tellsea/project;
			index  index.html index.htm;
		}
		
		location /project-service {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://127.0.0.1:8080/project-service;
		}
    }
}

Nginx 相关操作命令可以在/usr/local/nginx/sbin 目录下进行

cd /usr/local/nginx/sbin

# 可以直接目录使用
/usr/local/nginx/sbin/nginx -s reload
# 如果报错,可以指定配置文件启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
./nginx启动
./nginx -s stop关闭
./nginx -s reload重启

Nginx 离线安装

cd /zhhy/zip/nginx-1.21.4-offline

# 安装所有离线依赖
rpm -Uvh  *.rpm  --nodeps  --force

# 配置文件根目录在
cd /etc/nginx

# 启动Nginx
systemctl start nginx

(4)安装 Redis

解压安装包

tar -zxvf redis-6.2.6.tar.gz

一般都会将 redis 目录放置到 /usr/local/redis 目录,顺带把 redis 的解压文件名改为 redis

mv redis-6.2.6 /usr/local/redis

cd /usr/local/redis

对 redis 进行编译,编译过程会有很多日志打印出来

make

安装 redis

make PREFIX=/usr/local/redis install

这里多了一个关键字 PREFIX= 这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了 redis 必须存放在/usr/local/redis 目录。假设不添加该关键字 Linux 会将可执行文件存放在/usr/local/bin 目录,

库文件会存放在/usr/local/lib 目录。配置文件会存放在/usr/local/etc 目录。其他的资源文件会存放在 usr/local/share 目录。这里指定号目录也方便后续的卸载,后续直接 rm -rf /usr/local/redis 即可删除 redis。

根据上面的操作已经将 redis 安装完成了。在目录/usr/local/redis 输入下面命令启动 redis

./bin/redis-server& ./redis.conf

修改 redis.conf 配置文件,配置 redis 为后台运行,以及允许远程连接,也就是外网访问

vim /usr/local/redis/redis.conf

这里我要将 daemonize 改为 yes,不然我每次启动都得在 redis-server 命令后面加符号&,不这样操作则只要回到 Linux 控制台则 redis 服务会自动关闭,同时也将 bind 注释,将 protected-mode 设置为 no,这样启动后我就可以在外网访问了。

通过/关键字查找出现多个结果则使用 n 字符切换到下一个即可,查找到结果后输入:noh 退回到正常模式

  • 通过 /daemonize 查找到属性,默认是 no,更改为 yes 即可

  • 通过 /protected-mode 查找到属性,默认是 yes,更改为 no 即可

  • 通过 /bind 127 查找到属性, 注释掉 bind 127.0.0.1 -::1 或者 bind 127.0.0.1 即可

查看 Redis 是否正在运行

# 采取查看进程方式
ps -aux | grep redis

# 采取端口监听查看方式
netstat -lanp | grep 6379

# 杀死进程
kil -9 pid

启动 redis 的方式修改为以下命令,因为我们修改的默认配置文件是在上级目录,所以需要…/指定

cd /usr/local/redis/bin

./redis-server ../redis.conf

到此远程连接可以直接访问 redis 了!

(6)部署 SpringBootJar 包

部署 SpringBoot 的 jar 包,我们需要将项目打包成 jar 格式,例如 ruoyi-system.jar,然后将 jar 包上传到/tellsea/project 目录下

在/tellsea/project 目录下创建一个项目启动脚本 start.sh,其中我们只需要修改 APP_NAME 名称为自己的 jar 包名称即可

#!/bin/bash
 
#jar包文件路径及名称(目录按照各自配置)
APP_NAME=/tellsea/project/home-store/home-store-service.jar
 
#查询进程,并杀掉当前jar/java程序
 
pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "$pid进程终止成功"
 
sleep 2
 
#判断jar包文件是否存在,如果存在启动jar包,并时时查看启动日志
 
if test -e $APP_NAME
then
echo '文件存在,开始启动此程序...'
 
# 启动jar包,指向日志文件,2>&1 & 表示打开或指向同一个日志文件
nohup java  -jar $APP_NAME&
 
echo '$APP_NAME 启动成功...'
tail -fn 500 nohup.out
else
echo '$APP_NAME 文件不存在,请检查。'
fi

执行脚本文件,随后控制台会打印项目启动日志,并且使用 Ctrl + C 也不会中断执行,默认会在后台运行

./start.sh

浏览器使用 IP:项目端口即可访问项目

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tellsea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值