在线部署ubuntu20.04服务器,安装jdk、mysql、redis、nginx、minio、开机自启微服务jar包

news2024/11/15 13:50:57

一、服务器

1、查看服务器版本

 查看服务器版本为20.04
lsb_release -a

2、服务器信息

服务器初始账号密码 sxd / 123456

首先,更改自身密码都输入123456

sudo passwd

 创建最高权限root账号,密码为 123456

su root

3、更新服务器源

1、更新源列表 

sudo apt-get update

2、安装 openssh-server和vim

途中输入y

sudo apt-get install openssh-server
apt install vim

 安装ssh后可通过ssh软件连接服务器,首先获取自身ip为192.168.220.143

ip a

3、通过finalshell连接服务器 

登录ssh后将用户切换到root用户

su root

4、默认创建文件夹权限

使创建的文件夹默认权限为读写,编辑bashrc

vim ~/.bashrc

 

 source ~/.bashrc

 

软件安装

1、安装jdk

下载以及配置

cd /usr/local/
mkdir java
cd java/

上传jdk-8u391-linux-x64.tar.gz或者 下载jdk

wget https://www.oracle.com/webapps/redirect/signon?nexturl=https://download.oracle.com/otn/java/jdk/8u401-b10/4d245f941845490c91360409ecffb3b4/jdk-8u401-linux-x64.tar.gz

 

 由于下载版本不同,根据版本更改文件夹名称

#解压jdk
tar -zxvf  jdk-8u391-linux-x64.tar.gz
#配置环境变量
chmod 777 /etc/profile
vim /etc/profile

在最后一行输入以下内容

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

 执行命令并查看jdk版本是否安装成功

source /etc/profile
java -version

 设置jdk开机自动识别

cd ~
vim .bashrc

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

source .bashrc

2、安裝mysql8.0

安装并且启动

#安装mysql
sudo apt-get install mysql-server
#获取mysql状态
service mysql status
#停止mysql
service mysql stop
#启动mysql
service mysql start
#开机自启mysql
systemctl enable mysql

进入mysql,需要密码的话回车跳过

mysql -u root -p

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
flush privileges;
#更改root连接权限
use mysql;
update user set host='%' where user = 'root';
flush privileges;

配置mysq连接

设置mysql允许其他用户访问,打开文件注释掉bind-address=127.0.0.1

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

 设置模式



sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

 重启mysql服务

service mysql restart

 通过数据连接软件测试数据库是否连接成功

3、安装redis

下载及配置

#下载并解压压缩包
cd /usr/local
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
tar -zxvf redis-6.2.6.tar.gz
mv redis-6.2.6 redis
cd redis
#安装编译环境
sudo apt install build-essential -y
sudo make -j4
#安装redis 
sudo make PREFIX=/usr/local/redis install
#设置redis文件权限
 chmod -R 777 /usr/local/redis

如果执行命令 sudo make 出现错误:

cd src && make all
make[1]: 进入目录“/usr/local/redis-7.0.10/src”
    CC adlist.o
In file included from adlist.c:34:
zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: 没有那个文件或目录
   50 | #include <jemalloc/jemalloc.h>
      |          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:403:adlist.o] 错误 1
make[1]: 离开目录“/usr/local/redis-7.0.10/src”
make: *** [Makefile:6:all] 错误 2


 针对上述错误,执行如下命令重新编译。

sudo make MALLOC=libc

执行如下命令将 redis-server 和 redis-cli 放置到系统路径(/usr/bin)下。

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

设置redis配置文件 vim redis.conf

#(1)修改 1
# 注释掉 bind 127.0.0.1 -::1 允许远程连接
#bind 127.0.0.1 -::1
bind 0.0.0.0
 
# (2)修改2
# 将 daemonize no 修改为 daemonize yes,设置后台运行
daemonize yes
 
# (3)修改3
# 指定 log 文件路径
logfile "/var/log/redis-server.log"

 

#启动redis服务
sudo redis-server /usr/local/redis/redis.conf
#查看redis是否运行
ps -ef | grep redis

启动客户端,执行指令如果设置了密码  执行auth  +密码再执行

开机自启动

拷贝启动脚本  redis_init_script 到目录 /etc/init.d/redis 下,并编辑配置文件。

sudo cp /usr/local/redis/utils/redis_init_script /etc/init.d/redis
vim /etc/init.d/redis

创建配置文件,使其开机自启

sudo mkdir /etc/redis
sudo cp /usr/local/redis/redis.conf /etc/redis/6379.conf
sudo update-rc.d -f redis defaults
systemctl start redis
systemctl status redis

通过redis客户端软件测试

4、安裝minio

下载及配置

# 创建minio应用程序目录
mkdir -p  /usr/local/minio/bin
# 创建minio数据目录
mkdir -p  /usr/local/minio/data
# 创建minio日志目录
mkdir -p  /usr/local/minio/logs
#将软件下载
cd /usr/local/minio/bin
# 下载服务端
wget https://dl.min.io/server/minio/release/linux-amd64/minio
# 将下载所得minio文件拷贝到指定文件夹并赋权
sudo chmod +x /usr/local/minio/bin/minio
测试执行minio
MINIO_ROOT_USER=myname 
MINIO_ROOT_PASSWORD=mypassword
nohup  /usr/local/minio/bin/minio server  /usr/local/minio/data --console-address ":7047" --address ":7048" >  /usr/local/minio/logs/minio.log 2>&1 &
sudo minio server /usr/local/minio/data --console-address ":7047" --address ":7048" >  /usr/local/minio/logs/minio.log 2>&1 &

配置minio

创建minio配置文件
sudo vim /etc/default/minio
# 指定数据存储目录(注意:这个目录要存在且拥有相对应的权限)
MINIO_VOLUMES="/usr/local/minio/data"

# 监听端口
MINIO_OPTS="--address :7048 --console-address :7047"


# 新版本使用;指定默认的用户名和密码,其中用户名必须大于3个字母,否则不能启动
MINIO_ROOT_USER="myname"
MINIO_ROOT_PASSWORD="mypassword"

# 区域值,标准格式是“国家-区域-编号”,
MINIO_REGION="cn-north-1"

创建服务

sudo vim /usr/lib/systemd/system/minio.service
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/minio/bin/minio
[Service]
WorkingDirectory=/usr/local/minio/

ProtectProc=invisible

# 指向3.1节中的配置文件
EnvironmentFile=/etc/default/minio

ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/minio/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum (1M) file descriptor number that can be opened by this process
LimitNOFILE=1048576

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
SuccessExitStatus=0

[Install]
WantedBy=multi-user.target
Alias=minio.service

通过systemctl将服务生效并启动服务

# 重新加载服务配置文件,使服务生效
systemctl daemon-reload

# 将服务设置为开机启动
systemctl enable minio

# 服务立即启动
systemctl start minio

# 查看minio服务当前状态
systemctl status minio

点击Create Bucket并输入teaching

 进入teaching,点击Access Policy设置成public,点击Anonymous 设置下图可读写

5、安装nacos

下载nacos

速度比较慢

/usr/local
wget https://github.com/alibaba/nacos/releases/download/2.3.1/nacos-server-2.3.1.tar.gz
mv nacos-server-2.3.1 nacos
#设置nacos文件夹权限
chmod -R 777 /usr/local/nacos

#创建nacos服务
sudo vim /usr/lib/systemd/system/nacos.service

 文件配置

[Unit]
Description=nacos
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone  
ExecReload=/usr/local/nacos/bin/shutdown.sh  			 
ExecStop=/usr/local/nacos/bin/shutdown.sh 		 	  	
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

配置nacos启动项配置

vim /usr/local/nacos/bin/startup.sh

 将修改jdk配置并注释其他三行

调用nacos服务

systemctl daemon-reload # 重新加载服务配置
systemctl enable nacos.service # 设置为开机启动
systemctl is-enabled nacos.service # 查看是否开机启动
systemctl start nacos.service # 启动nacos服务
systemctl stop nacos.service # 停止nacos服务
systemctl status nacos.service # 查看nacos服务状态

访问 http://192.168.220.143:8848/nacos

6、安装nginx

安装所需编译包

cd /usr/local
#安装编译用的组件包
sudo apt-get install libxml2-dev build-essential openssl libssl-dev make curl libcurl4-gnutls-dev libjpeg-dev libpng-dev libtool-bin bison zlib1g-dev libpcre3 libpcre3-dev libssl-dev libxslt1-dev libgeoip-dev libgoogle-perftools-dev libperl-dev libtool
#从远程下载文件
c
#解压文件到 /usr/local  目录
tar -xvf nginx-1.20.1.tar.gz -C /usr/local
cd /usr/local/nginx-1.20.1
#进入目录并执行命令 
sudo ./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/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 \--with-http_stub_status_module \--with-http_ssl_module \--with-file-aio \--with-http_realip_module
 
#创建临时目录  
mkdir /var/temp/nginx -p
 
#进行编译和安装
cd /usr/local/nginx-1.20.1
sudo make
sudo make install

#安装结束后可删除nginx-1.20.1
 rm -rf /usr/local/nginx-1.20.1
cd /usr/local/nginx
#安装后目录为 /usr/local/nginx   

创建pid文件

mkdir  /usr/local/nginx/logs
touch nginx.pid

 配置nginx pid文件,將pid改为

pid        /usr/local/nginx/logs/nginx.pid;

vim /usr/local/nginx/conf/nginx.conf

 配置nginx服务


vim /etc/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
  
[Service]
Type=forking
#请确认相关命令是否可执行
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target
 

#重载系统服务
systemctl daemon-reload
#测试 服务是否生效   
systemctl  start  nginx.service  
 
# 设置服务为开机启动服务  
systemctl enable nginx.service
 
#开机服务查询
systemctl list-units --type=service

7、开机自启jar包

1、创建脚本

cd /etc/init.d/
vim startServer.sh

2、脚本配置项 

nohup java -jar /opt/web/a.jar &
nohup java -jar /opt/web/a.jar &
tail -f /opt/web/nohup.out
echo "---------TeachingServer is running"

3、赋予脚本权限:

chomd 755 /etc/init.d/startServer.sh

4、添加到启动脚本中,在init.d目录下执行

update-rc.d startServer.sh defaults 90

 如果需要移除输入update-rc.d startServer.sh remove

5.重启生效

reboot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1502654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tomcat优化与部署(三)------nignx优化与nginx +tomcat 部署

在目前流行的互联网架构中&#xff0c;Tomcat在目前的网络编程中是举足轻重的&#xff0c;由于Tomcat的运行依赖于JVM&#xff0c;从虚拟机的角度把Tomcat的调整分为外部环境调优 JVM 和 Tomcat 自身调优两部分 Tomcat 是一个流行的开源 Java 服务器&#xff0c;用于托管 Java …

简单题我重拳出击

有请第一位嘉宾&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 n…

代码随想录训练营第40天 | LeetCode 343. 整数拆分

LeetCode 343. 整数拆分 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;动态规划&#xff0c;本题关键在于理解递推公式&#xff01;| LeetCode&#xff1a;343. 整数拆分_哔哩哔哩_bilibili 思路 代码如下&#xff1a; ​​​​​​LeetCode 96…

【产品应用】一体化步进伺服电机在绿光激光打标机中的应用

随着科技的不断发展&#xff0c;激光打标技术已经成为现代工业生产中不可或缺的一部分。绿光激光打标机以其高精度、高效率、高可靠性等特点&#xff0c;广泛应用于各种材料的标记与打标。而在绿光激光打标机中&#xff0c;一体化步进电机的应用则为其带来了更高的性能与更稳定…

Lesson 5 Classification(short version)

听课&#xff08;李宏毅老师的&#xff09;笔记&#xff0c;方便梳理框架&#xff0c;以作复习之用。本节课主要讲了回归和分类的区别&#xff0c;分类的过程&#xff0c;分类的损失函数。这节课比较简短。 1. 回归和分类的区别 回归只是输出一个预测的值分类是输出预测的cla…

【Leetcode每日一刷】数组|双指针篇:977. 有序数组的平方、76. 最小覆盖子串(附滑动窗口法详解)

力扣每日刷题 一、977. 有序数组的平方1.1题目1.2、解题思路1.3、代码实现——C 二、76. 最小覆盖子串2.1&#xff1a;题目2.2、解题思路2.3&#xff1a;代码实现——c2.4&#xff1a;易错点 一、977. 有序数组的平方 1.1题目 [题目链接]( 1.2、解题思路 题型&#xff1a;双…

请编程输出无向无权图各个顶点的度 ← STL vector 模拟邻接表存图

【题目描述】 请利用 STL vector 模拟邻接表存图&#xff0c;编程输出无向无权图各个顶点的度。【输入样例】 5 6 1 3 2 1 1 4 2 3 3 4 5 1【输出样例】 4 2 3 2 1【算法分析】 本例利用 STL vector 模拟实现邻接表。代码参见&#xff1a;https://blog.csdn.net/hnjzsyjyj/arti…

服务器配置禁止IP直接访问,只允许域名访问

联网信息系统需设置只允许通过域名访问&#xff0c;禁止使用IP地址直接访问&#xff0c;建议同时采用云防护技术隐藏系统真实IP地址且只允许云防护节点IP访问服务器&#xff0c;提升网络安全防护能力。 一、Nginx 修改配置文件nginx.conf&#xff0c;在server段里插入正则表达式…

Redis系列之持久化机制RDB和AOF

Redis系列之持久化机制RDB和AOF 文章目录 1. 为什么需要持久化&#xff1f;2. 持久化的方式3. RDB机制3.1 RDB机制介绍3.2 配置RDB3.3 什么时候触发3.4 操作实例3.5 RDB优势和不足 4. AOF机制4.1 什么是AOF机制&#xff1f;4.2 同步机制4.3 重写机制4.4 AOF的优势和不足 混合模…

C++的面向诗篇:类的叙事与对象的旋律

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 一、面向对象的定义 学习C语言时&#xff0c;我们就经常听说C语言是面向过程的&#xff0c;…

3.7号freeRtoS

1. 串口通信 配置串口为异步通信 设置波特率&#xff0c;数据位&#xff0c;校验位&#xff0c;停止位&#xff0c;数据的方向 同步通信 在同步通信中&#xff0c;数据的传输是在发送端和接收端之间通过一个共享的时钟信号进行同步的。这意味着发送端和接收端的时钟需要保持…

LiveNVR监控流媒体Onvif/RTSP功能-视频广场点击在线或离线时展示状态记录快速查看通道离线原因

LiveNVR视频广场点击在线或离线时展示状态记录快速查看通道离线原因 1、状态记录1.1、点击在线查看1.2、点击离线查看 2、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、状态记录 1.1、点击在线查看 可以点击视频广场页面中&#xff0c; 在线 两个字查看状态记录 1.2、点击离线查…

学习笔记—功能测试的基础认知

除了测试工作之外&#xff0c;其他流程并行 优点&#xff1a; 软件测试出测试执行外&#xff0c;还有很多工作 软件测试完全独立&#xff0c;其他流程并发进行 具有很强的灵活性 缺点&#xff1a; 管理型要求高 技能要求高 测试就绪点分析困难 测试用例的定义 测试用例…

Java List集合取交集的八种不同实现方式

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在Java中&#xff0c;取两个List集合的交集可以通过多种方式实现&#xff0c;包括使用Java 8的Stream API、传统的for循环遍历、使…

DeepLearning in Pytorch|我的第一个NN-共享单车预测

目录 概要 一、数据准备 导入数据 数据可视化 二、设计神经网络 版本一 版本二&#xff08;正片&#xff09; 三、测试 小结 概要 我的第一个深度学习神经网络模型---利用Pytorch设计人工神经网络对某地区租赁单车的使用情况进行预测 输入节点为1个&#xff0c;隐含…

安装及管理docker

文章目录 1.Docker介绍2.Docker安装3.免sudo设置4. 使用docker命令5.Images6.运行docker容器7. 管理docker容器8.创建image9.Push Image 1.Docker介绍 Docker 是一个简化在容器中管理应用程序进程的应用程序。容器让你在资源隔离的进程中运行你的应用程序。类似于虚拟机&#…

PyTorch基础(20)-- torch.gt() / torch.ge() / torch.le() / torch.lt()方法

一、前言 嗯……最近遇到的奇奇怪怪的方法很多了&#xff0c;学无止境啊&#xff01;学不完啊&#xff0c;根本学不完&#xff01;本篇文章介绍四个方法&#xff1a;torch.gt()、torch.ge()、torch.le()和torch.lt()方法&#xff0c;由于这四个方法很相似&#xff0c;所以放到…

灯塔:CSS笔记(2)

一 选择器进阶 后代选择器&#xff1a;空格 作用&#xff1a;根据HTML标签的嵌套关系&#xff0c;&#xff0c;选择父元素 后代中满足条件的元素 选择器语法&#xff1a;选择器1 选择器2{ css } 结果&#xff1a; *在选择器1所找到标签的后代&#xff08;儿子 孙子 重孙子…

Docker常见命令使用

Docker命令是使用Docker的基础。这里记录下Docker日常运维过程中经常使用到的一些命令&#xff0c;更全面的命令还请参考Docker官网。 docker用法概述 Docker命令可以通过CLI工具实现与服务器的交互。Docker命令的语法如下&#xff1a; docker [DOCKER-COMMAND] [OPTIONS] […

【高效开发工具系列】Windows 系统下将 Windows 键盘的 ctrl 和 alt 互换

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…