• 瑞吉外卖 —— 8、Linux 及项目部署


    目录

    1、Linux 安装

    1.1、网卡配置

    1.2、安装 SSH 连接工具

    1.3、Linux 和 Windows 目录结构对比

    2、Linux 常用命令

    2.1、Linux 命令初体验

    2.2、Linux 常用命令

    2.2.1、ls

    2.2.2、cd

    2.2.3、cat

    2.2.4、more

    2.2.5、tail

    2.2.6、mkdir

    2.2.7、rmdir

    2.2.8、rm

    2.2.9、cp

    2.2.10、mv

    2.2.11、tar

    2.2.12、vi / vim

    2.2.13、find

    2.2.14、grep

    3、软件安装

    3.1、软件安装方式

    3.2、安装 JDK

    3.3、安装 Tomcat

    3.4、防火墙操作

    3.5、安装 MySQL

    3.5.1、检查是否安装 MySQL 和 是否有软件冲突

    3.5.2、卸载冲突软件

    3.5.3、解压 MySQL

    3.5.4、按顺序安装 rpm 安装包

    3.5.5、启动 MySQL 

    3.5.6、登录 MySQL

    3.5.7、外部连接

    3.6、安装 lrzsz

    4、项目部署

    4.1、手工项目部署

    4.1.1、在 IDEA 将项目打包为 jar 包

    4.1.2、将 jar 包上传到 Linux 服务器

    4.1.3、启动 SpringBoot 程序

    4.1.4、检查防火墙

    4.1.5、测试

    4.1.6、后台运行 SpringBoot 程序,将日志输出到日志文件

    4.1.7、停止 SpringBoot 程序

    4.2、通过 Shell 脚本自动部署项目

    4.2.1、在 Linux 安装 Git

    4.2.2、使用 Git 克隆代码

    4.2.3、Linux 安装 Maven

    4.2.4、将 Shell 脚本文件复制到 Linux

    4.2.5、用户授权

    4.2.6、设置静态 ip


    1、Linux 安装

    这里使用 VMware 来安装,具体的配置看视频即可:Linux-03-Linux安装1_哔哩哔哩_bilibili

    1.1、网卡配置

    由于启动服务器时未加载网卡,导致IP地址初始化失败 

    修改网络初始化配置,设定网卡在系统启动时初始化

    修改 ONBOOT = yes 

    重启后再次输入 ip addr,就可以看到 ip 地址,若没有 ip 地址,打开任务管理器,点击服务,点下面蓝色的打开服务,把VMware开头的服务都打开就可以看到 ip 地址了

    1.2、安装 SSH 连接工具

    安装资料中的 finalshell,然后创建连接

    ① 点击标签旁的文件夹图案

    ② 点击左上角 --- SSH 连接

    ③ 输入 ip 地址、用户名和密码,确定即可

    ④ 在主页面单击即可连接

    1.3、Linux 和 Windows 目录结构对比

    2、Linux 常用命令

    2.1、Linux 命令初体验

    1. echo 'LANG="en_US,UTF-8"' >> /etc/profile
    2. source /etc/profile

    2.2、Linux 常用命令

    2.2.1、ls

    2.2.2、cd

    2.2.3、cat

    2.2.4、more

    2.2.5、tail

    2.2.6、mkdir

    2.2.7、rmdir

    2.2.8、rm

    2.2.9、cp

    2.2.10、mv

    2.2.11、tar

    2.2.12、vi / vim

    2.2.13、find

    2.2.14、grep

    注意:查找区分大小写 

    3、软件安装

    3.1、软件安装方式

    3.2、安装 JDK

    1、使用 FinalShell 将 jdk 的二进制发布包上传到 Linux

    ① 打开文件栏

    ② 点击上传按钮,上传后下图会传到 / ,也就是根目录

    ③ 选择对应的文件后双击

    ④ 双击后右上角会显示上传进度

    2、解压安装包

    tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local

    3、配置环境变量

    使用命令进入要修改的文件

    vim /etc/profile

     在末尾加上这两句

    1. JAVA_HOME=/usr/local/jdk1.8.0_171
    2. PATH=$JAVA_HOME/bin:$PATH

    重新加载配置文件

    source /etc/profile

    查看是否配置好

    1. [root@localhost local]# java -version
    2. java version "1.8.0_171"
    3. Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
    4. Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

    3.3、安装 Tomcat

    1、将 Tomcat 上传到 Linux

    2、解压安装包

    tar -zxvf apache-tomcat-7.0.57.tar.gz -C /usr/local

    3、启动 Tomcat

    1. [root@localhost /]# cd /usr/local/
    2. [root@localhost local]# ls
    3. apache-tomcat-7.0.57 bin etc games include jdk1.8.0_171 lib lib64 libexec sbin share src
    4. [root@localhost local]# cd apache-tomcat-7.0.57/
    5. [root@localhost apache-tomcat-7.0.57]# cd bin
    6. [root@localhost bin]# ls
    7. bootstrap.jar catalina.sh configtest.bat digest.bat setclasspath.sh startup.bat tomcat-native.tar.gz version.bat
    8. catalina-tasks.xml commons-daemon-native.tar.gz configtest.sh digest.sh shutdown.bat startup.sh tool-wrapper.bat version.sh
    9. catalina.bat commons-daemon.jar daemon.sh setclasspath.bat shutdown.sh tomcat-juli.jar tool-wrapper.sh
    10. [root@localhost bin]# ./startup.sh
    11. Using CATALINA_BASE: /usr/local/apache-tomcat-7.0.57
    12. Using CATALINA_HOME: /usr/local/apache-tomcat-7.0.57
    13. Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.57/temp
    14. Using JRE_HOME: /usr/local/jdk1.8.0_171
    15. Using CLASSPATH: /usr/local/apache-tomcat-7.0.57/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.57/bin/tomcat-juli.jar
    16. Tomcat started.

    4、验证是否安装成功

    1. [root@localhost logs]# ps -ef | grep tomcat
    2. root 17957 1 0 09:16 pts/0 00:00:03 /usr/local/jdk1.8.0_171/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-7.0.57/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/apache-tomcat-7.0.57/endorsed -classpath /usr/local/apache-tomcat-7.0.57/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.57/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-7.0.57 -Dcatalina.home=/usr/local/apache-tomcat-7.0.57 -Djava.io.tmpdir=/usr/local/apache-tomcat-7.0.57/temp org.apache.catalina.startup.Bootstrap start
    3. root 26831 1354 0 09:23 pts/0 00:00:00 grep --color=auto tomcat

    5、停止 Tomcat

    通过下面的命令获取进程 id

    1. [root@localhost bin]# ps -ef | grep tomcat
    2. root 67442 1 84 09:56 pts/0 00:00:03 /usr/local/jdk1.8.0_171/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-7.0.57/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/apache-tomcat-7.0.57/endorsed -classpath /usr/local/apache-tomcat-7.0.57/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.57/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-7.0.57 -Dcatalina.home=/usr/local/apache-tomcat-7.0.57 -Djava.io.tmpdir=/usr/local/apache-tomcat-7.0.57/temp org.apache.catalina.startup.Bootstrap start
    3. root 67537 1354 0 09:56 pts/0 00:00:00 grep --color=auto tomcat
    4. [root@localhost bin]# kill -9 67442
    5. [root@localhost bin]# ps -ef | grep tomcat
    6. root 68459 1354 0 09:57 pts/0 00:00:00 grep --color=auto tomcat

    3.4、防火墙操作

    1、查看防火墙状态

    1. [root@localhost logs]# systemctl status firewalld
    2. ● firewalld.service - firewalld - dynamic firewall daemon
    3. Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
    4. Active: active (running) since Thu 2022-09-08 09:00:51 CST; 30min ago
    5. Docs: man:firewalld(1)
    6. Main PID: 699 (firewalld)
    7. CGroup: /system.slice/firewalld.service
    8. └─699 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
    9. Sep 08 09:00:49 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
    10. Sep 08 09:00:51 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
    11. Sep 08 09:00:51 localhost.localdomain firewalld[699]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future re...ing it now.
    12. Hint: Some lines were ellipsized, use -l to show in full.
    13. [root@localhost logs]# firewall-cmd --state
    14. running

    2、暂时关闭防火墙

    1. [root@localhost logs]# systemctl stop firewalld
    2. [root@localhost logs]# firewall-cmd --state
    3. not running

    关闭后在浏览器访问   Linux的ip:Tomcat端口号  就能访问到 Tomcat

    3、永久关闭防火墙

    1. [root@localhost logs]# systemctl disable firewalld
    2. Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
    3. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

    4、开启防火墙

    1. [root@localhost logs]# systemctl start firewalld
    2. [root@localhost logs]# firewall-cmd --state
    3. running

    开启后再次访问 Tomcat,访问失败

    5、开放指定端口并立即生效

    1. [root@localhost logs]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
    2. success
    3. [root@localhost logs]# firewall-cmd --reload
    4. success

    开放后再次访问 Tomcat,访问成功

    6、关闭指定端口并立即生效

    1. [root@localhost logs]# firewall-cmd --zone=public --remove-port=8080/tcp --permanent
    2. success
    3. [root@localhost logs]# firewall-cmd --reload
    4. success

    关闭后再次访问 Tomcat,访问失败

    7、查看开放的端口

    1. [root@localhost logs]# firewall-cmd --zone=public --list-ports
    2. [root@localhost logs]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
    3. success
    4. [root@localhost logs]# firewall-cmd --reload
    5. success
    6. [root@localhost logs]# firewall-cmd --zone=public --list-ports
    7. 8080/tcp
    8. [root@localhost logs]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
    9. success
    10. [root@localhost logs]# firewall-cmd --reload
    11. success
    12. [root@localhost logs]# firewall-cmd --zone=public --list-ports
    13. 8080/tcp 3306/tcp

    3.5、安装 MySQL

    3.5.1、检查是否安装 MySQL 和 是否有软件冲突

    1. [root@localhost bin]# rpm -qa | grep mysql
    2. [root@localhost bin]# rpm -qa | grep mariadb
    3. mariadb-libs-5.5.68-1.el7.x86_64

    3.5.2、卸载冲突软件

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

    3.5.3、解压 MySQL

    1. [root@localhost /]# ls
    2. apache-tomcat-7.0.57.tar.gz boot etc jdk-8u171-linux-x64.tar.gz lib64 mnt opt root sbin sys usr
    3. bin dev home lib media mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz proc run srv tmp var
    4. [root@localhost /]# mkdir /usr/local/mysql
    5. [root@localhost /]# mv mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz /usr/local/mysql/
    6. [root@localhost /]# cd /usr/local/mysql/
    7. [root@localhost mysql]# ls
    8. mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz
    9. [root@localhost mysql]# tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz
    10. mysql-community-client-5.7.25-1.el7.x86_64.rpm
    11. mysql-community-common-5.7.25-1.el7.x86_64.rpm
    12. mysql-community-devel-5.7.25-1.el7.x86_64.rpm
    13. mysql-community-libs-5.7.25-1.el7.x86_64.rpm
    14. mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
    15. mysql-community-server-5.7.25-1.el7.x86_64.rpm

    3.5.4、按顺序安装 rpm 安装包

    1. rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
    2. rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
    3. rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm
    4. rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
    5. rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
    6. yum install net-tools
    7. rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

    3.5.5、启动 MySQL 

    3.5.6、登录 MySQL

    1. set global validate_password_length=4;
    2. set global validate_password_policy=LOW;
    3. set password = password('root');
    4. grant all on *.* to 'root'@'%' identified by 'root'; -- 这里最后的root填写自己的密码
    5. flush privileges;

    3.5.7、外部连接

    注意主机是 ip 地址 

    3.6、安装 lrzsz

    1. [root@localhost mysql]# yum list lrzsz
    2. Failed to set locale, defaulting to C
    3. Loaded plugins: fastestmirror
    4. Loading mirror speeds from cached hostfile
    5. * base: mirrors.nju.edu.cn
    6. * extras: mirrors.nju.edu.cn
    7. * updates: mirrors.nju.edu.cn
    8. Available Packages
    9. lrzsz.x86_64 0.12.20-36.el7 base
    10. [root@localhost mysql]# yum install lrzsz.x86_64

    安装完后输入 rz ,就会跳出一个窗口,选择文件后即可上传

    4、项目部署

    4.1、手工项目部署

    4.1.1、在 IDEA 将项目打包为 jar 包

    通过 Maven 的 package 指令打包即可

    jar 包会放在  target 包下

    4.1.2、将 jar 包上传到 Linux 服务器

    首先在 Linux 服务器创建要存储的位置的目录,并进入

    1. [root@localhost mysql]# mkdir /usr/local/app
    2. [root@localhost mysql]# cd /usr/local/app

    然后使用 rz 命令上传打好的 jar 包

    4.1.3、启动 SpringBoot 程序

    java -jar HelloWorld-1.0-SNAPSHOT.jar 

    4.1.4、检查防火墙

    1. [root@localhost ~]# firewall-cmd --zone=public --list-ports
    2. 8080/tcp 3306/tcp

    4.1.5、测试

    在浏览器访问 Linux的ip:端口/路径 ,访问成功

    4.1.6、后台运行 SpringBoot 程序,将日志输出到日志文件

    1. nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &> hello.log &
    2. &> hello.log 将日志输出到hello.log文件
    3. 最后一个&:后台运行
    1. [root@localhost app]# nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &> hello.log &
    2. [1] 91089

    4.1.7、停止 SpringBoot 程序

    通过杀进程的方式停止

    1. [root@localhost ~]# ps -ef | grep java
    2. root 91089 1 7 20:58 ? 00:00:10 java -jar HelloWorld-1.0-SNAPSHOT.jar
    3. root 94144 93109 0 21:00 pts/0 00:00:00 grep --color=auto java
    4. [root@localhost ~]# kill -9 91089
    5. [root@localhost ~]# ps -ef | grep java
    6. root 94695 93109 0 21:00 pts/0 00:00:00 grep --color=auto java

    浏览器访问程序,发现无法访问了

    4.2、通过 Shell 脚本自动部署项目

    4.2.1、在 Linux 安装 Git

    4.2.2、使用 Git 克隆代码

    1. [root@localhost ~]# cd /usr/local/
    2. [root@localhost local]# ls
    3. apache-tomcat-7.0.57 app bin etc games include jdk1.8.0_171 lib lib64 libexec mysql sbin share src

    若 git clone https://... 报错以下信息

    1. [root@localhost local]# git clone https://github.com/woshizhangyingjie/HelloWorld.git
    2. Cloning into 'HelloWorld'...
    3. fatal: unable to access 'https://github.com/woshizhangyingjie/HelloWorld.git/': Failed connect to github.com:443; Connection refused

    将 https 改为 git ,若还是报错

    1. [root@localhost local]# git clone git://github.com/woshizhangyingjie/HelloWorld.git
    2. Cloning into 'HelloWorld'...
    3. fatal: unable to connect to github.com:
    4. github.com[0: 20.205.243.166]: errno=Connection refused

    执行下面的命令

    git config --global url."https://github.com".insteadOf git://github.com
    

    再使用 git clone git://...

    4.2.3、Linux 安装 Maven

    tar -zxvf apache-maven-3.5.4-bin.tar.gz
    1. vim /etc/profile
    2. export MAVEN_HOME=/usr/local/apache-maven-3.5.4
    3. export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
    4. source /etc/profile
    5. mvn -version
    1. [root@localhost local]# mkdir repo
    2. [root@localhost local]# cd apache-maven-3.5.4/
    3. [root@localhost apache-maven-3.5.4]# cd conf/
    4. [root@localhost conf]# vim settings.xml
    5. 在settings标签下加上这句话设置仓库位置
    6. <localRepository>/usr/local/repo</localRepository>

    4.2.4、将 Shell 脚本文件复制到 Linux

    1. [root@localhost local]# mkdir sh
    2. [root@localhost local]# cd sh
    3. [root@localhost sh]# vim bootStart.sh
    1. #!/bin/sh
    2. echo =================================
    3. echo 自动化部署脚本启动
    4. echo =================================
    5. echo 停止原来运行中的工程
    6. APP_NAME=helloworld
    7. tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    8. if [ ${tpid} ]; then
    9. echo 'Stop Process...'
    10. kill -15 $tpid
    11. fi
    12. sleep 2
    13. tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    14. if [ ${tpid} ]; then
    15. echo 'Kill Process!'
    16. kill -9 $tpid
    17. else
    18. echo 'Stop Success!'
    19. fi
    20. echo 准备从Git仓库拉取最新代码
    21. cd /usr/local/HelloWorld
    22. echo 开始从Git仓库拉取最新代码
    23. git pull
    24. echo 代码拉取完成
    25. echo 开始打包
    26. output=`mvn clean package -Dmaven.test.skip=true`
    27. cd target
    28. echo 启动项目
    29. nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &> helloworld.log &
    30. echo 项目启动完成

    4.2.5、用户授权

    查看对脚本拥有的权限 

    1. [root@localhost sh]# ll
    2. total 4
    3. -rw-r--r--. 1 root root 831 Sep 9 20:06 bootStart.sh
    4. [root@localhost sh]# ./bootStart.sh
    5. -bash: ./bootStart.sh: 权限不够

    第一个 - 后每三位对应上图的权限

    1. [root@localhost sh]# chmod 777 bootStart.sh
    2. [root@localhost sh]# ll
    3. total 4
    4. -rwxrwxrwx. 1 root root 831 Sep 9 20:06 bootStart.sh
    5. [root@localhost sh]# chmod 000 bootStart.sh
    6. [root@localhost sh]# ll
    7. total 4
    8. ----------. 1 root root 831 Sep 9 20:06 bootStart.sh
    9. [root@localhost sh]# chmod 777 bootStart.sh
    10. [root@localhost sh]# ll
    11. total 4
    12. -rwxrwxrwx. 1 root root 831 Sep 9 20:06 bootStart.sh

    4.2.6、设置静态 ip

    1. BOOTPROTO=static
    2. IPADDR="192.168.44.128"
    3. NETMASK="255.255.255.0"
    4. GATEWAY="192.168.44.2"
    5. DNS1="192.168.44.2"

    编辑好后要重启网络服务

    systemctl restart network

  • 相关阅读:
    React 使用JSX或者TSX渲染页面
    用RocketMQ这么久,才知道消息可以这样玩
    【LLM】大语言模型高效微调方案Lora||直击底层逻辑
    金融信创与云化转型|期货超融合架构转型与场景探索合集
    【迅搜02】究竟什么是搜索引擎?正式介绍XunSearch
    9.30作业
    KubeSphere 在互联网电商行业的应用实践
    基于STM32+华为云IOT设计的智能门禁系统
    牛客小白月赛51 - 计算题(字符串哈希,二分)
    Redis快速上手篇五(持久化)
  • 原文地址:https://blog.csdn.net/Mr_zhangyj/article/details/126730788