项目的安装和部署

Linux


除了服务器的操作系统搭建,查询域名对应的服务器是哪种服务器,工具
Linux 还经常作为嵌入式应用的操作系统,从因特网设备(路由器、交换机、防火墙、负载均衡器)等到专用的控制系统(自动售货机,手机,PDA,各种家用电器)。

特点


  1. Linux 严格区分大小写
  2. Linux 中所有的内容都以文件形式保存,包括硬件
  3. Linux 不靠拓展名区分文件类型:
    • 压缩包:.gz、.bz2、.tar.bz2、.tgz 等
    • 二进制软件包:*.rpm
    • 网页文件:*.html*.php
    • 脚本文件:*.sh
    • 位置文件:*.conf
  4. 由于可视化界面占用磁盘空间和内存,在服务器中是不会装可视化界面的,使用字符界面。并且存在安全问题。

使用


项目部署步骤:

  1. 开发人员开发好了功能,自己测试没问题后,提交代码
  2. 开发人员或者项目组长打包项目,部署到测试环境中
  3. 测试人员测试刚刚部署在测试环境上的项目
  4. 如果发现 bug ,则提交给开发人员,开发人员修改了 bug 后,重新提交代码,打包项目,重新部署到测试环境
  5. 测试人员进行完回归测试,如果没有问题,发出准出报告后,封版
  6. 运维人员把项目部署到生产环境。

服务器类型:自建服务器(自己买计算机、带宽等)、租用服务器(阿里云、腾讯云等)
公司服务器肯定是在远程的,我们不可能直接操作远程的服务器,使用一些远程连接工具间接的操作远程服务器,这些工具是 SSH 协议工具。

安装 VM


在 vm 中鼠标消失,按 alt + control 可以重新出现。

注意点:

  1. 需要分区
  2. 需要将网络设置打开
  3. 需要将查找符号的配置关闭。

查看 vm 中系统的 ip,ip add

SSH 协议和工具


浏览器和 tomcat 交互需要 HTTP 协议,tomcat 和 数据库交互需要 jdbc 协议。
SSH 为 Secure Shell 的缩写,建立在应用层基础上的安全协议。SSH 是目前可靠,转为远程登录会话和其他网络服务提供安全性的协议。SSH可以有效防止远程管理过程中的信息泄露。

SSH 工具:scureCRT

本地连接的ip 地址 为网络ip 地址。

VM给宿主机分配的网卡的ip 为 192.168.139.1 VMware 网卡是配置 VMNet8 给本机分配的网络ip。同时,本机也成为宿主机。

对于 Mac 来说 好用的 SSH 工具为 FinalShell

Linux文件管理


在线查询 Linux 命令:http://www.runoob.com/linux/linux-tutorial.html
熟练使用 VI 编辑器,熟练使用文件和目录的操作。

命令提示符基本格式:

root 当前登录用户,localhost 主机名,~ 当前所在目录,# 超级用户的提示符#,普通用户提示符 $,

命令格式:命令[选项][参数]。注意:个别命令的使用不遵循次格式。当多个选项时,可以写在一起,简化选项与完整选项 -a = -all

查勋目录中内容:


ls [选项][文件或目录]
选项:-a 显示所有文件,包括隐藏文件。-l 显示详细信息。 -h 人性化显示文件大小。

ll = ls -l

文件处理命令


pwd 查询所在目录位置
touch 文件名 创建文件,
mkdir 建立目录,mkdir -p[目录名]

cd :change directory
cd ~ 进入当前用户的 home 目录(相当于 win + D)
cd 同上
cd - 进入上次目录
cd .. 进入上一级目录
cd . 进入当前目录

rmdir[目录名],删除空目录。
rm -rf[文件或目录] -r递归删除目录 -f 强制
cp 复制命令。
mv 剪切或改名命令。

mv 源文件 文件夹 => 把源文件剪切到执行的文件夹
mv 源文件 不存在的文件名 => 把文件重命名
mv 源文件 文件夹/不存在的文件名 => 把文件剪切到指定文件夹并重命名

文件搜索命令


whereis ls => /usr/bin/ls 文件位置。
用于需要某个命令的绝对路径时,
PATH 环境变量:定义的是系统搜索命令的路径。

find [搜索范围][搜索条件]
示例:find / -name ‘install.log’
避免大范围搜索,会非常耗费系统资源,find 是在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
find /root -iname install.log # 不区分大小写
find /root -user root # 按照所有者搜索
find /root -nouser # 查找没有所有者的文件

通配符:*匹配任意内容,?匹配任意字符,[]匹配任意一个中括号内的字符。

1
2
3
find /root -iname 'cangls.a?'
find /root -iname 'cangls.a*'
find /root -iname 'cangls.av[iopq]'

find /var/log -mtime + 10 查找10天前修改的文件,-10 10天内修改的文件,10 第10天当天修改的文件。

atime 文件访问时间,ctime 改变文件属性时间,mtime 修改文件时间。

字符串搜索命令


grep [选项] 字符串 文件名 ,在文件当中匹配符合条件的字符串。

-i 忽略大小写,-v 排除指定字符串。

帮助命令


man 命令: man ls 查看ls的帮助。
–help 获取命令选项的帮助,

压缩与解压缩命令


.zip

zip 压缩文件名 源文件
zip -r 压缩文件名 原文件夹 -> 一般压缩文件名不能随便起,需要让别人也能看懂 zip结尾。
zip -r movie.zip movie/

解压用法:unzip 压缩文件

.gz(重点)

压缩用法: gzip 原文件 压缩为.gz格式的压缩文件,原文件会消失。gzip -r 目录 压缩目录下的所有子文件,但是不能压缩目录。

解压用法:gzip -d 压缩文件gunzip 压缩文件

1
2
gzip -d cangls.avi.gz
gunzip -r movie/

.bz2

压缩用法:bzip2 源文件 压缩为.bz2格式,不能保留源文件。
注意:bzip2命令不能压缩目录

解压用法:bzip2 -d 压缩文件 bunzip2 压缩文件

.bz2 和 .gz 的区别:.bz2.gz都是linux 下压缩文件的格式,有点类似 windows 下的.zip 和 .rar 文件。前者比后者压缩率更高,后者比前者花费更少的时间,也就是说同一个文件,压缩后,bz2文件比.gz文件更小,但是.bz2文件的小是以花费更多的时间为代价的。

tar打包


打包命令:tar -cvf 打包文件名 源文件
选项:-c 打包,-v 显示过程,-f指定打包后的文件名。

解打包:tar -xvf 打包文件名,
选项:-x 解打包。

用处:文件夹目录无法通过 bz 打包,所以先将文件夹目录打包为 tar,然后再把 tar 压缩为.bz,解压.bz为tar再解打包为文件夹目录。即 .tar.gz 格式

.tar.gz格式


选项:-z 压缩为.tar.gz格式
压缩用法 tar -zcvf 压缩包名.tar.gz 源文件
解压用法 tar -zxvf 压缩包名.tar.gztar -zxvf 压缩包名.tar.gz -C 指定目录

关机和重启命令


shutdown [选项] 时间 shutdown -h 10 10分钟之后关机

选项:-c,取消前一个关机命令。 -h 关机。 -r 重启。

使用 shutdown 会在关机的时候帮我们保存数据。

halt、poweroff、init 0。

使用这三个命令不是特别安全,因为不会帮我们保存数据。

杀死进程命令


1
2
3
ps -ef | grep java

kill -9 进程id

其他命令


磁盘使用情况 df: 选项-h:格式化显示输出磁盘使用情况,
查看操作历史history: 用于显示执行过的历史命令记录
在显示器输出内容: echo
文件查看命令 cat
日志监控命令:tail 默认在屏幕上显示指定文件的末尾10行

查看内存占用:free
查看任务进程:top

Vi编辑器


Vi编辑器的三种模式:

编辑模式(命令模式):所有的机键动作都会理解为编辑整个文档的操作,默认为编辑模式。
输入模式:大部分机键动作会理解为输入的字符。
末行模式:在末行模式,输入很多文件管理命令,如 复制,黏贴,搜索,替换等。

保存退出:wq。不保存退出:q!。
esc 切换末行模式和编辑模式。

命令模式按 u 撤销。

移动光标:h 左移动,i 右移动,j 下移动,k 上移动。
行内跳转:编辑模式,0 跳转到行首,$ 跳转到行尾
行间跳转 末行模式 num:跳转到某一行,G 跳转到最后一行(编辑模式),gg 跳转到第一行(编辑模式)

关闭文件:在末行模式下,wq 保存退出,q!退出不保存。

翻屏操作:在编辑模式下:ctrl + f 向下翻一页,ctrl + b 向上翻一页。
删除命令:dd 删除光标所在行(编辑模式),3dd:从光标开始删除3行(编辑模式),1,4d删除第1到第4行(末行模式)

赋值和粘贴命令:yy 赋值光标所在行(编辑模式),2yy从光标开始赋值2行(编辑模式),p:粘贴命令(编辑模式)

查找和替换:/partern 从前往后查找(末行模式),?parttern 从后往前查找(末行模式),n:下一个匹配的字符串,N上一个匹配的字符串。

文本的替换(末行模式):startNum,endNums/partter/string/gi

startNum 从哪一行,endNum 到哪一行,s/以什么字符开头,/gi 以什么结尾。i表示忽略大小写,g表示全局替换。
%s/f/F/gi 忽略全局大小写把 f 替换成 F
.,$s/F/f/gi 当前行到结尾把 f 替换成 F

可能遇到的问题


在编辑模式下,没有保存就直接强行退出会出现一个问题,原因是vi 编辑器编辑文件,是重新创建一个文件.swp。然后编辑完后,将 文件.swp 覆盖到原文件上。因此没有保存旧退出,所以当前目录下有一个文件和一个文件.swp。此时只要把 文件.swp删除即可,注意 文件.swp 是隐藏文件。

文件的基本权限


ll命令

操作权限:

chmod u+x 文件名chmod a+x 文件名chmod u-x 文件名chmod a-x 文件名

修改文件的所有者: chown 用户名 文件名
修改文件的所属组: chgrp 组名 文件名

sudo权限


编辑 sudo权限指令,visudo,实际上是修改 /etc/sudoers 文件

系统服务管理


防火墙设置


在阿里云安全策略组(只开了80端口),需要在安全策略组中开放8081端口,并不是通过命令操作的,需要在管控台设置。
阿里云服务器的账号密码,ssh 账号密码连接过去,并不是阿里云登录的账号密码。无法在代码中开放防火墙端口。

Linux 应用


软件的安装。后端工具有 rpm dpt,前端工具有 yum。

查找哪个安装包是否安装过:rpm -qa | grep httpd

修改 yum 源为国内。

1
2
3
4
5
yum install wget -y
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum -y update

JDK 的安装


JDK 的安装步骤,
在JDK官网下载对应的 JDK.tar.gz 包
tar -zxvf jdk.tar.gz -C /usr/local

修改 JDK 环境变量,

1
2
3
4
5
cp /etc/profile /etc/profile_bak
vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile

启动 tomcat


/usr/local/apache-tomcat-7.0.100/bin/startup.sh

启动后,会把日志输出到 /usr/local/apache-tomcat-7.0.100/logs/catalina.out 地方。

开放8080端口,

1
2
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

持续监控 catalina.out 日志情况。
tail -f -n 50(监控最后50行) /usr/local/apache-tomact-7.0.100/logs/catalina.out

MySQL 的安装


https://www.jianshu.com/p/27d0195a38ae

下载地址:https://dev.mysql.com/downloads/mysql/
名称:mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar

将安装包放到 /usr/local/software 下面,查看是否已经安装 mysql

1
rpm -qa | grep mysql

解压文件

1
tar -zxvf mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar -C /usr/local

执行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost software]# tar -xvf mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar 
mysql-community-embedded-devel-5.7.19-1.el7.x86_64.rpm
mysql-community-client-5.7.19-1.el7.x86_64.rpm
mysql-community-server-5.7.19-1.el7.x86_64.rpm
mysql-community-test-5.7.19-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.19-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.19-1.el7.x86_64.rpm
mysql-community-server-minimal-5.7.19-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm
mysql-community-common-5.7.19-1.el7.x86_64.rpm
mysql-community-embedded-5.7.19-1.el7.x86_64.rpm
mysql-community-devel-5.7.19-1.el7.x86_64.rpm
mysql-community-libs-5.7.19-1.el7.x86_64.rpm

卸载冲突的 RPM 组件

1
2
3
4
5
6
7
8
9
# 安装mysql组件时出现的依赖错误
error: Failed dependencies:
mysql-community-common(x86-64) >= 5.7.9 is needed by mysql-community-libs-5.7.19-1.el7.x86_64
mariadb-libs is obsoleted by mysql-community-libs-5.7.19-1.el7.x86_64

# 卸载mariadb-libs时出现的依赖错误
error: Failed dependencies:
libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64
libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-6.el7.x86_64

需要卸载 postfix 和 mariadb-libs 相关组件,使用 rpm -ev xxx

1
2
rpm -qa | grep postfix
rpm -qa | grep mariadb

安装依赖组件

安装 mysql-community-server-xxx 的时候出现了下面问题

1
2
3
4
5
6
7
8
9
10
11
[root@localhost software]# rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm 
warning: mysql-community-server-5.7.19-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
/usr/bin/perl is needed by mysql-community-server-5.7.19-1.el7.x86_64
libaio.so.1()(64bit) is needed by mysql-community-server-5.7.19-1.el7.x86_64
libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.19-1.el7.x86_64
libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.19-1.el7.x86_64
net-tools is needed by mysql-community-server-5.7.19-1.el7.x86_64
perl(Getopt::Long) is needed by mysql-community-server-5.7.19-1.el7.x86_64
perl(strict) is needed by mysql-community-server-5.7.19-1.el7.x86_64
[root@localhost software]#

需要安装相应的依赖

  1. libaio
  2. net-tools
  3. perl
1
2
3
yum -y install libaio
yum -y install net-tools
yum -y install perl

只需要安装下面4个组件

1
2
3
4
mysql-community-common-5.7.19-1.el7.x86_64.rpm
mysql-community-libs-5.7.19-1.el7.x86_64.rpm
mysql-community-client-5.7.19-1.el7.x86_64.rpm
mysql-community-server-5.7.19-1.el7.x86_64.rpm

因为具有依赖关系,需要按顺序执行 rpm -ivh 文件名

1
2
3
4
rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost software]# rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm 
warning: mysql-community-common-5.7.19-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-common-5.7.19-1.e################################# [100%]
[root@localhost software]# rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm
warning: mysql-community-libs-5.7.19-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-libs-5.7.19-1.el7################################# [100%]
[root@localhost software]# rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm
warning: mysql-community-client-5.7.19-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-client-5.7.19-1.e################################# [100%]
[root@localhost software]# rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm
warning: mysql-community-server-5.7.19-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-server-5.7.19-1.e################################# [100%]

启动数据库

1
2
3
4
5
6
7
8
9
10
11
# 查看mysql是否启动
service mysqld status

# 启动mysql
service mysqld start

# 停止mysql
service mysqld stop

# 重启mysql
service mysqld restart

修改密码

mysql 安装完成后没有设置密码,但是 mysql 设置了一个临时密码,在 mysql 的日志中可以知道这个临时密码

1
grep password /var/log/mysqld.log

执行过程

1
2
[root@localhost ~]# grep password /var/log/mysqld.log 
2017-09-01T16:43:10.889769Z 1 [Note] A temporary password is generated for root@localhost: hcLMTxbOh2?w

数据库密码需要满足以下条件,大小写字母,数字和特殊符号

1
2
3
4
5
6
7
8
# 登录mysql,之后需要输入密码
mysql -p

# 设置新密码
set password = password("Mysql_123456");

# 退出当前登录
quit;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost ~]# mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> set password = password("Mysql_123456");
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> quit;

就可以进行数据库操作了

wms 项目的部署


首先删除 tomcat中 webapps/ROOT 下的全部内容。war 包实际上就是 zip,所以只需要 解压缩unzip xx.war。最后删除 war 包即可,rm -rf xx.war

SpringBoot 项目部署


项目打包时的问题,不是web项目在打包时,pom.xml 文件中不能放入maven插件。

1
2
3
4
5
6
7
8
9
10
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

多模块的情况下,打包时针对父模块进行打包。直接 package 打包

package 和 install 的区别

  • mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。

  • mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。

  • mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。

  • package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

  • install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库

  • deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

获得的 jar 包,放到 /usr/local/ 目录下,再运行 java -jar 项目 就可以了。

文章作者: Ammar
文章链接: http://lizhaoloveit.cn/2020/03/10/%E9%A1%B9%E7%9B%AE%E7%9A%84%E5%AE%89%E8%A3%85%E5%92%8C%E9%83%A8%E7%BD%B2/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ammar's Blog
打赏
  • 微信
  • 支付宝

评论