Linux项目部署
认识Linux
- Linux是一套免费使用和自由传播的操作系统
| 分类 | 系统 | 特点 |
|---|---|---|
| 桌面操作系统 | Windows | 用户数量最多 |
| Mac OS | 操作体验好,偏向办公 | |
| Linux | 用户数量少 | |
| 移动设备操作系统 | Android | 基于Linux、开源,主要用于智能手机、平板、智能电视 |
| IOS | 苹果公司开发、不开源,用于苹果公司的产品 | |
| HarmonyOS | 华为公司开发、开源,目前用于华为公司的产品 | |
| 服务器操作系统 | Unix | 安全、稳定、付费 |
| Linux | 安全、稳定、免费、占有率高 | |
| Windows Server | 付费、占有率低 |
Linux概述
Linux系统分为内核版和发行版
内核版
- 由Linux核心团队开发、维护
- 免费、开源
- 负责控制硬件
发行版
- 基于Linux内核版进行扩展
- 由各个Linux厂商开发、维护
- 有收费版本和免费版本
Linux系统发行版:
- Ubuntu:以桌面应用为主,免费
- RedHat:面向企业用户,收费
- Centos:RedHat的社区版,免费
- Fedora:功能完备、快速更新,免费
- openSUSE:对个人完全免费、图形界面华丽
- 红旗Linux:国产Linux发行版
Linux目录结构
- bin:存放二进制可执行文件
- boot:存放系统引导时使用的各种文件
- dev:存放设备文件
- etc:存放系统配置文件
- home:存放系统用户的文件
- lib:存放程序运行时所需的共享库和内核模块
- opt:额外安装的可选应用程序包所放置的位置
- root:超级用户目录
- sbin:存放二进制可执行文件,只有root用户才能访问
- tmp:存放临时文件
- usr:存放系统应用程序
- var:存放运行时需要改变数据的文件,例如日志文件
tips:
- Linux系统中的路径
/itheima与itheima是有区别的/itheima是绝对路径,是指根目录 / 下的itheima目录itheima是相对路径,是指当前目录下的itheima目录
Linux常用命令
- Linux命令格式:command [-options] [parameter]
- 说明:
- command:命令名
- [-options]:选项,可用来对命令进行控制,也可以省略(可选)
- [parameter]:参数,可以是零个、一个或多个(可选)
目录操作
ls
- 作用:显示指定目录下的内容
- 语法:
ls [-al] [dir] - 选项:
-a:显示所有文件及目录(. 开头的隐藏文件也会列出)-l:除文件名称外,同时将文件类型(d表示目录,-表示文件)、权限、拥有者、文件大小等详细信息列出
- 提示:
ls -l可以简写为ll
cd
- 作用:用于切换当前工作目录,即进入指定目录
- 语法:
cd [dirName] - 说明:
.表示目前所在目录..表示目前目录位置的上级目录~表示当前用户的home目录
- 示例:
cd ..:切换到当前目录的上级目录cd ~: 切换到用户的home目录cd /usr/local:切换到/usr/local目录cd -:切换到上一次所在目录
mkdir
- 作用:创建目录
- 语法:
mkdir [-p] dirName - 说明:
-p:确保目录名称存在,不存在就创建一个。通过此选项,可以实现多层目录同时创建
- 示例:
mkdir itcast:在当前目录下,建立一个名为itcast的子目录mkdir -p itcast/test:在itcast目录中创建test子目录,若itcast目录不存在,则创建一个
rm
- 作用:删除文件或目录
- 语法:
rm [-rf] name - 说明:
-r:将目录及目录中所有文件(目录)逐一删除,即递归删除-f:无需确认,直接删除
- 示例:
rm -r itcast/:删除名为itcast的目录和目录中所有文件,删除前需确认rm -rf itcast/:无需确认,直接删除名为itcast的目录和目录中所有文件rm -f hello.txt:无需确认,直接删除hello.txt文件
文件操作
cat
- 作用:用于显示文件的所有内容
- 语法:
cat [-n] fileName - 说明:
-n:由1开始对所有输出的行数编号
- 示例:
cat /etc/profile:查看/etc目录下的profile文件内容
more
- 作用:以分页的形式显示文件内容
- 语法:
more fileName - 操作说明:
回车键:向下滚动一行空格键:向下滚动一屏b:返回上屏q或Ctrl + C:退出more
- 示例:
more /etc/profile:以分页方式显示/etc目录下的profile文件内容
head
- 作用:查看文件开头的内容
- 语法:
head [-n] fileName - 说明:
-n:输出文件开头的n行内容
- 示例:
head 1.log:默认显示1.log文件开头的10行内容head -20 1.log:显示1.log文件开头的20行内容
tail
- 作用:查看文件末尾的内容
- 语法:
tail [-nf] fileName - 说明:
-n:输出文件末尾的n行内容-f:动态读取文件末尾内容并显示,通常用于日志文件的内容输出
- 示例:
tail 1.log:默认显示1.log文件末尾10行的内容tail -20 1.log:显示1.log文件末尾20行的内容tail -f 1.log: 动态读取1.log文件末尾内容并显示(实时刷新)
拷贝移动操作
cp
作用:用于复制文件或目录
语法:
cp [-r] source dest选项:
-r:如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件
示例:
cp hello.txt itcast/:将hello.txt复制到itcast目录中cp hello.txt ./hi.txt:将hello.txt复制到当前目录,并改名为hi.txtcp -r itcast/ ./itheima/:将itcast目录和目录下所有文件复制到itheima目录下cp -r itcast/* ./itheima/:将itcast目录下所有文件复制到itheima目录下
mv
作用:为文件或目录**重命名、或将文件或目录移动**到其它位置 (第二个参数是已存在的目录执行移动)
语法:
mv source dest示例:
mv hello.txt hi.txt:将hello.txt改名为hi.txtmv hi.txt itheima/:将文件hi.txt移动到itheima目录中mv hi.txt itheima/:hello.txt 将hi.txt移动到itheima目录中,并改名为hello.txtmv itcast/ itheima/:如果itheima目录不存在,将itcast目录改名为itheimamv itcast/ itheima/:如果itheima目录存在,将itcast目录移动到itheima目录中
打包压缩操作
tar
作用:对文件进行打包、解包、压缩、解压
语法:
tar [-zcxvf] fileName [files]说明:
包文件后缀为.tar表示只是完成了打包,并没有压缩
包文件后缀为.tar.gz表示打包的同时还进行了压缩
选项:
-z:z代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压-c:c代表的是create,即创建新的包文件-x:x代表的是extract,实现从包文件中还原文件-v:v代表的是verbose,显示命令的执行过程-f:f代表的是file,用于指定包文件的名称
打包:
tar -cvf hello.tar hello:将当前目录下所有文件打包,打包后的文件名为hello.tartar -zcvf hello.tar.gz hello:将当前目录下所有文件打包并压缩,打包后的文件名为hello.tar.gz
解包:
tar -xvf hello.tar:将hello.tar文件进行解包,并将解包后的文件放在当前目录tar -zxvf hello.tar.gz:将hello.tar.gz文件进行解压,并将解压后的文件放在当前目录tar -zxvf hello.tar.gz -C /usr/local:将hello.tar.gz文件进行解压,解压到指定的/usr/local目录中
常用组合:
- 打包并压缩:
-zcvf - 解包并解压缩:
-zxvf
- 打包并压缩:
文本编辑操作
vi/vim
作用:vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于Windows中的记事本
语法:
vi fileName说明:
vim是从vi发展来的一个功能更加强大的文本编辑工具,在编辑文件时可以对文本内容进行着色(更常用)
要使用vim命令,需要我们自己完成安装。可以使用下面的命令来完成安装:yum install vim

查找命令
find
作用:在指定目录下查找文件
语法:
find dirName -option fileName举例:
find . –name "*.log":在当前目录及其子目录下查找.log结尾文件find /itcast -name "*.log":在/itcast目录及其子目录下查找.log结尾的文件
grep
作用:从指定文件中查找指定的文本内容
语法:
grep [-inAB] word fileName选项:
-i: 检索的关键字忽略(ignore)大小写
-n: 显示关键字所在的这一行的行号
-A: 输出关键字所在行及之后(After)的几行记录 (如:-A5 表示输出关键字所在行之后的5行记录)
-B: 输出关键字所在行及之前(Before)的几行记录 (如:-B5 表示输出关键字所在行之前的5行记录)
举例:
grep Hello HelloWorld.java:查找HelloWorld.java文件中出现的Hello字符串的位置grep hello *.java:查找当前目录中所有.java结尾的文件中包含hello字符串的位置
Linux软件安装
二进制发布包安装:软件已经针对具体平台编译打包发布,只要解压,修改配置即可
rpm安装:软件已经按照redhat的包管理规范进行打包,使用rpm命令进行安装,不能自行解决库依赖问题
yum安装:一种在线软件安装方式,本质上还是rpm安装,自动下载安装包并安装,安装过程中自动解决库依赖问题
源码编译安装:软件以源码工程的形式发布,需要自己编译打包
安装JDK
使用FinalShell(或其他方式)自带的上传工具将JDK的二进制发布包上传到Linux
解压安装包,命令为:
tar -zxvf xxxx_bin.tar.gz -C /usr/local配置环境变量,使用vim命令修改/etc/profile文件,在文件末尾加入如下配置
1
2export JAVA_HOME=/usr/local/jdk-xxx
export PATH=$JAVA_HOME/bin:$PATH重新加载profile文件,使更改的配置立即生效,命令为
source /etc/profile检查安装是否成功,命令为
java -version
安装MySQL
准备工作:卸载Linux系统中自带的mysql/mariadb安装包,否则MySQL将安装失败
1
2rpm –qa | grep -i mariadb
rpm –e –nodeps mariadb-libs-5.5.60-1.el7_5.x86_64下载并上传mysql安装包
解压安装包到当前目录,并将解压后的文件夹移动到 /usr/local 目录下, 改名为 mysql
1
tar -xvf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
配置环境变量(编辑/etc/profile,追加内容)
1
2export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH注册MySQL为系统服务:
1
2cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig --add mysql初始化数据库
1
2
3groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data注意:初始化完毕后,日志中会输出mysql的root用户的临时密码,记得复制记录下来root@localhost: zm;9nAA_6SHw
启动服务登录MySQL
1
2systemctl start mysql
mysql -uroot -p配置MySQL的root用户的密码,授权远程访问
1
2
3
4ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';
CREATE USER 'root'@'%' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
防火墙操作
当安装完MySQL并配置完远程访问后,还需要注意Linux系统的防火墙,如果不关闭防火墙或不开发指定端口,远程依然无法连接MySQL
防火墙操作:
- 查看防火墙状态(systemctl status firewalld、firewall-cmd –state)
- 关闭防火墙(systemctl stop firewalld)
- 开启防火墙(systemctl start firewalld)
- 永久关闭防火墙(systemctl disable firewalld)
防火墙端口操作:
- 开发指定端口(firewall-cmd –zone=public –add-port=8080/tcp –permanent)
- 关闭指定端口(firewall-cmd –zone=public –remove-port=8080/tcp –permanent)
- 立即生效(firewall-cmd –reload)
- 查看开发的端口(firewall-cmd –zone=public –list-ports)
注意:
- systemctl是管理Linux中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作
- firewall-cmd是Linux中专门用于控制防火墙的命令
- 为了保证系统安全,生产环境中的服务器的防火墙不建议关闭
安装Nginx
- 安装Nginx运行时需要的依赖:
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel - 上传Nginx的源码包:
nginx-xxx.tar.gz - 解压源码包到当前目录:
tar -zxvf nginx-xxx.tar.gz - 进入到解压目录(cd nginx-xxx)后,执行指令:
./configure --prefix=/usr/local/nginx - 执行编译Nginx的指令:
make- 不要切换目录
- 执行安装Nginx的指令,安装到上述指定的目录(/usr/local/nginx):make install
- 不要切换目录
- 进入到Nginx安装目录
/usr/local/nginx,启动nginx服务:sbin/nginx
前端项目部署
- 将打包好的静态资源,上传到nginx的html目录中
- 配置nginx的配置文件,在conf/nginx.conf中配置反向代理服务器以及路径重写规则:
1 | server { |
代理服务器配置proxy_pass需要根据后端的实际地址进行修改
- 在nginx的安装目录中,执行sbin目录下的nginx服务:
sbin/nginx或sbin/nginx -s reload
Nginx启动服务:sbin/nginx
Nginx停止服务:sbin/nginx -s quit
Nginx重新加载:sbin/nginx -s reload
后端项目部署
- 执行maven的父工程中的package生命周期,对项目进行打包【打包之前,先连接上服务器数据库,先测试通过】
- 在linux服务器的
/usr/local目录下,创建一个目录tlias-app,将jar包上传到服务器的/usr/local/tlias-app目录中 - 然后在命令行执行命令,运行jar包:
java -jar xxx.jar
上述命令运行jar包之后,会占用前台窗口,窗口关闭服务也就停了。可以使用nohup指令,后台运行服务,执行指令:
1
nohup java -jar xxx.jar &> tlias.log &
查看进程:
ps -ef | grep xxxx