linux安装部署

jdk&tomcat安装

1.上传jdk、tomcat安装包

2.解压两个工具包

#解压
tar -zxvf apache-tomcat-8.5.20.tar.gz
#解压jdk
tar -zxvf jdk-8u151-linux-x64.tar.gz

 3.配置并且测试jdk安装

#配置环境变量
vim /etc/profile

#java environment
export JAVA_HOME=/soft/jdk1.8.0_151
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

#设置环境变量生效
source /etc/profile

 先进入 cd apache-tomcat-8.5.20/然后 cd webapps/然后cd manager/然后cd META-INF/然后编辑 vim context.xml进入

页面进行删除两行数据然后cd .. cd .. cd ..退出到bin/目录启动tomcat

./start.sh

 

开放端口firewall-cmd --zone=public --add-port=8080/tcp --permanent

刷新防火墙firewall-cmd --reload

然后去游览器上登录ip地址

更改登录密码

Cd ..

Cd conf/进入这个文件目录进行编辑

Vim tomcat-users.xml文件

 

把这行密码放进去更改

更改完成之后cd ..返回进入到bin/目录

启动tomcat  先./shutdown.sh关闭服务,然后./start.sh进行刷新

这个时候就可以登录tomcat了

4.启动tomcat

./start.sh

 5.防火墙设置

#开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --zone=public --add-port=8080/tcp --permanent
#跟新防火墙规则
firewall-cmd --reload
#防火墙列表
firewall-cmd --zone=public --list-ports
#防火墙状态
systemctl status firewalld
#启动防火墙
systemctl start firewalld
#关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

设置系统服务

新建tomcat.service文件,配置成长度系统服务 ==文件在素材中可以找到,注意修改路径==

 vi /usr/lib/systemd/system/tomcat.service

重载系统服务 

systemctl daemon-reload 

 

相关指令

MySQL安装

#1.卸载mariadb,否则安装MySql会出现冲突(先查看后删除再查看)
[root@192 ~]#mariadb

[root@192 ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@192 ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64


#2.在线下载MySQL安装包(也可提前下载好上传)
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar

#3.将MySQL安装包解压到指定目录
mkdir mysql-5.7
tar -xvf mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar -C mysql-5.7

#4.开始安装,-ivh 其中i表示安装,v表示显示安装过程,h表示显示进度
cd mysql-5.7
rpm -ivh mysql-community-common-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.35-1.el7.x86_64.rpm

#5.启动MySQL服务
systemctl start mysqld

#6.登录mysql修改密码
[root@192 mysql-5.7]# grep "password" /var/log/mysqld.log
2022-10-12T13:19:16.313408Z 1 [Note] A temporary password is generated for root@localhost: o8N#/CfWD+sh
[root@192 mysql-5.7]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.

#设置密码校验策略(0 or LOW),要不密码太LOW不让你过
set global validate_password_policy=0;
#设置密码校验长度,要不密码太短不让你过(多次测试发现密码最小长度为4位)
set global validate_password_length=4;
#更新密码
set password = password("123456");
#输入后使修改生效还需要下面的语句
FLUSH PRIVILEGES;
#可以退出,试试用新密码重新登录
exit
创建新的用户

grant all on *.* to lf@'%' identified by '123456';

登录新用户里面去创建新的数据库

 create database bookshop;

然后use bookshop;

加载数据库脚本source /soft/mysql-5.7/book.sql;

查看数据select * from t_book;

然后可以去tomcat 发布项目**.sql数据

#Centos7下无法远程连接mysql数据库
#数据库没有授权,允许以root身份远程登录mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
#输入后使修改生效还需要下面的语句
FLUSH PRIVILEGES;

#Navicat链接MySQL测试
#查看MySQL版本
rpm -qa | grep mysql

然后搜索自己的lp:8080/bs/book/list

这个时候会报500错误,然后看以下操作

 

进行编辑 

编辑完成之后退到cd ap然后cd bin/

重起tomcat,./sh,./st然后重新刷新一下项目后端就能运行了

Redis 安装

 如果没有安装则通过以下命令安装:

yum install -y gcc

然后进行redis安装包并进行解压

Wget https://download.redis.io/releases/redis-6.2.6.tar.gz

解压

tar -zxvf redis-6.2.6.tar.gz

进入解压目录并编译

cd redis-6.2.6

编译

make

指定安装目录并进行安装

make install PREFIX=/soft/redis

启动redis服务

cd /soft/redis/bin

然后进入到redis目录

cd bin/启动 ./redis-server

然后退出把redis-6.2.6目录里面的redis.conf复制到redis里面

 mv redis.conf /soft/redis/bin

复制完成后切回到 /soft/redis/bin

然后编辑

Vim redis.conf

把75行注释掉

把94行注释掉

把257行改成yes

把901改密码

然后新开一个虚拟机

进入这个目录进行编辑vim application.yul

更改这个ip改成自己的保存退出

然后重启一下tomcat

cd appche-tomcat-8.5.20/

cd bin/

./sh

./st

然后回到浏览器上面

项目部署

然后去浏览器上面搜索ip:8080/bs/book/put

#1.启动后台项目测试
http://localhost:8080/T216_SSH/vue/treeNodeAction.action
#2.maven install将项目打包
#3.将打包好的项目放入tomcat/webapps/
#4.启动tomcat
./start.sh
#5.浏览器测试
http://192.168.195.139:8080/T216_SSH/vue/treeNodeAction.action

Nginx负载均衡

1.Nginx安装

1) 添加 nginx 官方提供的 yum 源(需要联网且时间较长)
 rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm

2) 使用 yum 安装 nginx
 yum install nginx

 注1:yum方式安装nginx,它的安装根目录为/etc/nginx
 注2:查看nginx版本
      rpm -qa | grep nginx

3) 启动及设置开机启动
 systemctl start nginx.service
 systemctl enable nginx.service

4) 设置防火墙开放 80 端口
 firewall-cmd --zone=public --add-port=80/tcp --permanent
 firewall-cmd --reload && firewall-cmd --list-port

5) 测试 nginx 是否可被访问,应该显示nginx的欢迎界面
  http://服务器IP地址:80/

浏览器输入ip地址就可以了

然后去到自己本机c盘,sys32位,driers,etc,hosts右击属性

点击安全把Users全部控制权限打开

然后编辑hosts,里面全部删掉改成自己的ip地址 www.zkingedu.com

然后去浏览器上搜索www.zkingedu.com然后就成功了

Cd /etc/nginx目录里面把自己的文件覆盖掉nginx.conf

然后编辑vim nginx.conf

更改后端集群

更改完之后保存退出,然后cd /usr/local把dist素材扔进去cd 进入cd dist/

然后nginx -t查看文件有没有异常,ok之后,重启nginx,systemctl restart nginx

去浏览器上面刷新nginx

就完成了

如果不成功,应该是端口没有打开,输入 firewall-cmd --list=port

firewall-cmd --list-port

firewall-cmd --add-port=80/tcp

 setenforce 0

重新启动nginx浏览器

2.tomcat负载均衡

#准备2个tomcat
cp -r apache-tomcat-8.5.20/ apache-tomcat-8.5.20_8081/

#第2个修改的配置如下
1. HTTP端口,默认8080,如下改为8081
2.远程停服务端口,默认8005,如下改为8006
3.AJP端口,默认8009,如下改,8010

#测试访问
http://192.168.195.139:8080/
http://192.168.195.139:8081/

3.Nginx配置

配置模板如下


#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;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;


    #服务器的集群
    upstream  tomcat_list {  #服务器集群名字
        server    127.0.0.1:8080  weight=1;   #服务器1   weight是权重的意思,权重越大,分配的概率越大。
        #server    172.17.0.4:8080  weight=2; #服务器2   weight是权重的意思,权重越大,分配的概率越大
    }

    server {
        listen       80;            #监听80端口,可以改成其他端口
        #server_name  localhost;    #当前服务的域名
    server_name  www.zking.com; #当前服务的域名(虚拟域名也可以)
    root         html/crm;      #将要访问的网站的根目录,nginx节点会自动继承父节点的配置

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

    location / {
            #该句代码是为解决history路由不能跳转的问题,在vue-router官网有介绍
        try_files $uri $uri/  /index.html;
    }
    location  ^~/api/ {
        #^~/api/表示匹配前缀是api的请求,proxy_pass的结尾有/, 则会把/api/*后面的路径直接拼接到后面,即移除api
        proxy_pass http://tomcat_list/;
    }
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

根据上面配置模板

在nginx.conf添加

upstream  tomcat_list {  #服务器集群名字
    server    127.0.0.1:8080  weight=1;   #服务器1   weight是权重的意思,权重越大,分配的概率越大。
    server    127.0.0.1:8081  weight=1; #服务器2   weight是权重的意思,权重越大,分配的概率越大
}

在default.conf添加

location / {
      #root   /usr/share/nginx/html;
      #proxy_pass   http://172.17.0.3:8080;
      proxy_pass   http://tomcat_list;
      index index.html index.htm;
  }

重启Nginx服务,让配置生效

systemctl restart nginx

出现权限问题

#现象:connect() to 192.168.195.139:8080 failed (13: Permission denied) while connecting to upstream
#解决方案:执行下面命令
setsebool -P httpd_can_network_connect 1

测试Nginx负载2个tomcat的效果

# 来回切换tomcat:8080、tomcat:8081两个服务器的类容
http://192.168.195.139/
# 停掉1个tomcat
发现还是可以访问项目

4.负载均衡后台项目发布

#保障以下3个链接都能访问项目
http://192.168.195.139:8080/T216_SSH/vue/treeNodeAction.action
http://192.168.195.139:8081/T216_SSH/vue/treeNodeAction.action
http://192.168.195.139/T216_SSH/vue/treeNodeAction.action
#注意:确保云数据库中是有数据的

#附录
#查看端口号
#查看所有端口号
lsof -i
#查看指定端口号
lsof -i:端口号
#杀死指定端口号进程  kill -9 PID
kill -9 42177

#查看nginx的访问日志和错误日志
cat /var/log/nginx/access.log
cat /var/log/nginx/error.log

最终的结果就是,Nginx访问一个网址,是由两个tomcat共同承担压力;

Nginx前台部署

1.本地测试

#将前端项目打包,生成dist文件夹,点击index.html访问项目测试
npm run build

2.项目前端部署

#1.C:\Windows\System32\drivers\etc\hosts中增加映射关系
192.168.195.139 www.zking.com

#2.action.js更改配置
'SERVER': 'http://www.zking.com/api/T216_SSH', //服务器

#3.default.conf
server {
    listen       80;            #监听80端口,可以改成其他端口
    #server_name  localhost;    #当前服务的域名
    server_name  www.zking.com; #当前服务的域名(虚拟域名也可以)
    root         /usr/local/mypro/dist;      #将要访问的网站的根目录,nginx节点会自动继承父节点的配置;这里放到/usr/local/*,放到其他路径下会有权限相关问题;必要的时候配置Nginx.conf的user为root

    # 代理配置
    location / {
            #该句代码是为解决history路由不能跳转的问题,在vue-router官网有介绍
        try_files $uri $uri/  /index.html;
    }
    location  ^~/api/ {
        #^~/api/表示匹配前缀是api的请求,proxy_pass的结尾有/, 则会把/api/*后面的路径直接拼接到后面,即移除api
        proxy_pass http://tomcat_list/;
    }

#4.Nginx启动测试
systemctl restart nginx

#5.前端访问地址
http://www.zking.com/

附录

附录一:linux 里rpm包到底是干什么用的
Linux RPM全称是“RedHat Package Manager”,最早是Red Hat公司开发的,后来在CentOS、Fedora、SUSE都用它。
而rpm包则是软件编译完成后按照RPM机制打包起来的一个文件,可以用rpm命令安装的一个软件安装包,
它省去了Linux软件安装中编译的步骤,安装成功后软件就可以用了。


附录二:centos7中虚拟域名设置
vim /etc/hosts


附录三:
在进行Nginx+Tomcat 负载均衡的时候遇到了这个权限问题,在error.log日志中,我们可以看到如下:
connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream
解决方案参考《解决Nginx的connect() to 127_0_0_18080 failed (13 Permission denied) while connect_Osheep-昔日暖阳-CSDN博客_connect() to 127_0_0_18080 failed (13 permission.mht》

附录四:hbuilderX打包vue项目白屏问题
将项目目录下的config文件夹里的index.js文件中,将build对象下的assetsPublicPath中的“/”,改为“./”后,再打包生成的 dist 文件
build: {
    // assetsPublicPath: '/',//修改前
    assetsPublicPath: './',//修改后
}

附录五:hbuilderX打包vue项目,element-ui的icon图标无法正常显示问题
问题:使用vue-cli3脚手架搭建的项目,在打包文件上服务器的时候,其他的css,js样式都能正确加载出路径,
但是element的icon图标却不能正常加载出来。

问题分析:
加载的路径https://yxq.linksign.cn/static/css/static/fonts/element-icons.535877f.woff
本应该加载的路径https://yxq.linksign.cn/static/fonts/element-icons.535877f.woff
打包的路径
事实上是打包时候读取的文件路径多了两层;
找到build文件的utils.js 中有打包的路径,看看generateLoaders();
Extract CSS when that option is specified, 指定该选项时提取CSS
发现少了个公共路径,加上pubilcPath
if (options.extract) {
     return ExtractTextPlugin.extract({
       use: loaders,
       fallback: 'vue-style-loader',
       // 解决icon路径加载错误
       publicPath:'../../'
     })
   } else {
     return ['vue-style-loader'].concat(loaders)
   }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Whisper实现语音识别转文本

#教程 主要参考开源免费离线语音识别神器whisper如何安装, OpenAI开源模型Whisper——音频转文字 Whisper是一个开源的自动语音识别系统,它在网络上收集了680,000小时的多语种和多任务监督数据进行训练,使得它可以将多种语言的音频转文字。…

【学位论文】上海交通大学 研究生学位论文 本地保存

上海交大研究生学位论文网:http://thesis.lib.sjtu.edu.cn/ (只能校内访问或SJTU VPN访问) 如果希望下载论文,需要参考:https://github.com/olixu/SJTU_Thesis_Crawler 安装过程 安装过程的几个坑: &a…

【Java开发】Java实现调用微信机器人,发送企业微信通知

请直接看原文: 【Java开发】Java实现调用微信机器人,发送企业微信通知_java 企业微信推送机器人消息-CSDN博客 ------------------------------------------------------------------------------------------------------------------------------- 企业微信机器…

无需安装!7款一键在线UI设计利器

制作完原型后,需要优化界面。此时是UI设计师的任务。UI设计软件对设计师来说非常重要。UI设计工具的使用是否直接影响到最终结果的质量,所以有人会问:UI界面设计使用什么软件?这里有一些UI设计师和对UI设计感兴趣的朋友列出了五款好用免费的U…

Unity 动态加载音频和音效

想要加载音效和音频需要两个组件: 听: 播: 一收一发 在层级中,右键创建 音频源 ,放入物体的子物体中。 播放 方式一 拖动需要播放的音频文件到,音频源组件中。 using System.Collections; using Syst…

java BIO

目录 Java BIO基本介绍 Java BIO工作机制 传统的BIO编程实例回顾 1、BIO模式下发送和接收消息 2、BIO模式下多发和多收消息 3、BIO模式下接收多个客户端 伪异步I/O编程 基于BIO形式下的文件上传 Java BIO模式下的端口转发思想 Java BIO基本介绍 Java BIO就是传统的jav…

Pytorch学习 day03(Tensorboard)

Tensorboard Tensorboard能够可视化loss的变化过程,便于我们查看模型的训练状态,也能查看模型当前的输入和输出结果 在Pycharm中,可以通过按住ctrl,并左键点击某个库来进入源文件查看该库的使用方法 SummaryWriter是用来向log_di…

C语言:指针(二)

目录 1.数组名的理解2.使用指针访问数组3.一维数组传参的本质4.二级指针5.指针数组6.字符指针变量7.数组指针变量8.二维数组传参的本质9.函数指针变量10.函数指针数组11.回调函数12.qsort函数13.使用回调函数模拟实现qsort函数 1.数组名的理解 int main() {int arr[] { 1,2,3…

上帝视角看GPU(5):图形流水线里的不可编程单元

【GPU】图形流水线基础【GPU】逻辑上的模块划分【GPU】部署到硬件【GPU】完整的软件栈 前几期我们过了一遍GPU的软硬栈。这次我们将深入GPU图形流水线的一些细节,看看那些不可编程的模块是怎么工作的。 对于GPU的图形流水线来说,最核心最重要的一个组件就…

通过人工智能增强的对话建立有意义的联系

人工智能如何重塑我们的交流?2024年最新对话AI趋势 在技术和人类互动比以往任何时候都更加复杂地交织在一起的时代,人工智能增强的对话已成为建立有意义的联系的关键要素。 这种转变不仅关乎效率,还关乎效率。 这是为了丰富沟通的结构。 在这…

MATLAB--pie函数绘制复杂分类饼图(2)--附案例代码

MATLAB–pie函数绘制复杂分类数据的饼状图 目录 MATLAB--pie函数绘制复杂分类数据的饼状图摘要1. 问题描述2. 具体步骤:3. 绘制结果4. 小结 摘要 在数据可视化中,饼状图是一种常用的展示分类数据的方式。之前,文章介绍了使用MATLAB绘制饼状图…

Vue中的计算属性和方法有什么区别?

Vue.js是一款流行的JavaScript前端框架,提供了丰富的功能和便捷的开发方式。在Vue中,计算属性和方法是常用的两种方式来处理数据和逻辑。但它们之间存在一些区别,本文将详细介绍Vue中计算属性和方法的区别,并通过示例代码加深理解…

654.最大二叉树

这段Java代码实现了一个名为Solution的类,其中包含两个方法:constructMaximumBinaryTree()和constructMaximumBinaryTree1(),目的是从给定的整数数组nums中构建出一个最大二叉树。以下是详细的注释说明: class Solution {// 主方…

GitHub Copilot extension activation error: ‘No access to GitHub Copilot found‘

好不容易学生认证通过了,打开vscode用copilot结果一直报这个错误。我的原因是:还未给copilot授权, 通过了学生认证后要进入这里进行授权:

MCU设计--M3内核整体功能说明

整体架构 内核特性 CM3内核支持3级流水哈佛结构 :数据和指令隔离Blanked SP :两个堆栈,一个堆栈只允许系统操作,另一个堆栈开放给用户。Handler and Thread modes低延迟中断进入和退出支持非对齐操作嵌套中断向量 最大支持1-240个外部中断可设置3-8的优先级可动态配置优先级…

一文了解什么是园区网以及如何部署园区网

目录 一、局域网分类 二、园区网的业务部署内容 1、构建高可靠可冗余网络 2、组播业务的快速开展 3、语音业务的部署 4、网络安全的部署 5、网络管理和维护的应用 一、局域网分类 (1)园区网: 目的:让各种服务器提供服务 …

mysql学习笔记3——授权操作

利用select查询数据库数据时,可以在后面加上参数 意为限制显示条数 对数据库进行远程操作时,为了避免不同用户操作混乱,要设置不同用户的权限,可以使用 具体格式为 其中*代表任意均可 ,这里用户创建采用与授权同时进…

【OJ】求和与计算日期

文章目录 1. 前言2. JZ64 求123...n2.1 题目分析2.2 代码 3. HJ73 计算日期到天数转换3.1 题目分析3.2 代码 4. KY222 打印日期4.1 题目分析4.2 代码 1. 前言 下面两个题目均来自牛客,使用的编程语言是c,分享个人的一些思路和代码。 2. JZ64 求123…n …

北京大学发布,将试错引入大模型代理学习!

引言:探索语言智能的新边界 在人工智能的发展历程中,语言智能始终是一个核心的研究领域。随着大语言模型(LLM)的兴起,我们对语言智能的理解和应用已经迈入了一个新的阶段。这些模型不仅能够理解和生成自然语言&#x…

20240304-1-操作系统

操作系统 知识体系 Questions 1.进程和线程的区别 进程是系统进行资源分配和调度的基本单位;线程是CPU调度和分派的基本单位。 每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可…