引言
在当今的软件开发领域,Linux 以其安全、稳定、免费且开源的特性,成为项目部署的首选操作系统。无论是 Java 项目,还是各类开发、测试、生产环境中的软件安装,Linux 都占据着重要地位。本文将结合我今天所学内容,详细介绍 Linux 相关知识,包括系统概述、常用命令、软件安装及项目部署,同时附上代码案例,帮助大家更好地理解和实践。
Linux 概述
主流操作系统分类及特点
操作系统主要分为桌面、服务器和移动设备操作系统。在桌面操作系统中,Windows 用户数量最多,Mac OS 操作体验好,是办公人士的首选,而 Linux 用户数量相对较少。服务器操作系统方面,Unix 安全稳定但付费,Linux 同样安全稳定且免费,市场占有率高,Windows Server 则付费且占有率低。移动设备操作系统中,Android 基于 Linux 开源,广泛应用于智能手机、平板和智能电视;iOS 由苹果公司开发,不开源,仅用于苹果产品;HarmonyOS 是华为开发的开源系统,目前主要用于华为产品。
Linux 系统版本
Linux 系统分为内核版和发行版。内核版由 Linux 核心团队开发维护,免费开源,负责控制硬件。发行版基于内核版扩展,由不同厂商开发维护,有收费和免费版本。常见的发行版有 Ubuntu(以桌面应用为主)、RedHat(应用广泛但收费)、CentOS(RedHat 的社区版,免费)、openSUSE(对个人完全免费,图形界面华丽)、Fedora(功能完备,更新快速且免费)以及红旗 Linux(由北京中科红旗软件技术有限公司开发)。
系统安装
Linux 系统安装方式有物理机安装和虚拟机安装。物理机安装直接将系统安装到服务器硬件上;虚拟机安装则通过虚拟机软件模拟完整计算机系统来安装。常用虚拟机软件有 VMWare、VirtualBox 和 VMLite WorkStation。以 VMWare 安装 CentOS7 为例:
- 双击运行 VMWare 安装程序,按提示完成安装。
- 安装完成后配置网络,可在虚拟网络编辑器中选择合适的网络模式,如 NAT 模式。
- 解压 CentOS7 镜像压缩包,双击.vmx 文件挂载,启动服务器,使用 root/1234 登录。
- 通过
ip addr
命令查看当前 Linux 的 IP 地址。
远程连接
常用 SSH 远程连接工具包括 Putty、SecureCRT、Xshell 和 finalShell。以 finalShell 为例,安装时直接双击运行安装程序,连接 Linux 时,打开 finalShell,在连接管理器中新建 SSH 连接,填写主机 IP、端口(默认为 22)、用户名(如 root)和密码即可连接。
目录介绍
Linux 目录结构与 Windows 不同,/
是所有目录的顶点,整个目录结构像倒挂的树。常见目录及其作用如下:
/bin
:存放二进制可执行文件。/boot
:存放系统引导时使用的文件。/dev
:存放设备文件。/etc
:存放系统配置文件。/home
:存放系统用户的文件。/lib
:存放程序运行所需的共享库和内核模块。/opt
:额外安装的可选应用程序包放置位置。/root
:超级用户目录。/sbin
:存放二进制可执行文件,只有 root 用户能访问。/tmp
:存放临时文件。/usr
:存放系统应用程序。/var
:存放运行时需要改变数据的文件,如日志文件。
Linux 常用命令
命令格式及使用技巧
Linux 命令格式为command [-options] [parameter]
,其中command
是命令名,[-options]
是选项(可选),用于控制命令,[parameter]
是参数(可选),可以有零个、一个或多个。使用时可通过 Tab 键自动补全,连续两次 Tab 键获取操作提示,使用上下箭头调出历史命令,用clear
命令或 Ctrl + l 快捷键清屏。
目录操作命令
命令 | 作用 | 语法 | 示例 |
---|---|---|---|
ls | 显示指定目录下的内容 | ls [-al] [dir] ,-a 显示所有文件及目录,-l 详细列出文件信息 | ls -l 查看当前目录文件详细信息;ll 是ls -l 的简写 |
cd | 切换当前工作目录 | cd [dirName] ,~ 表示用户 home 目录,. 表示当前目录,.. 表示上级目录 | cd .. 切换到上级目录;cd ~ 切换到用户 home 目录;cd /usr/local 切换到指定目录 |
mkdir | 创建目录 | mkdir [-p] dirName ,-p 确保目录存在,不存在则创建 | mkdir itcast 在当前目录创建 itcast 目录;mkdir -p itcast/test 创建多层目录 |
rm | 删除文件或目录 | rm [-rf] name ,-r 递归删除目录及内容,-f 无需确认直接删除 | rm -r itcast/ 删除 itcast 目录及内容,需确认;rm -rf itcast/ 直接删除;rm -f hello.txt 删除文件 |
文件操作命令
命令 | 作用 | 语法 | 示例 |
---|---|---|---|
cat | 显示文件所有内容 | cat [-n] fileName ,-n 对输出行数编号 | cat /etc/profile 查看文件内容 |
more | 分页显示文件内容 | more fileName | more /etc/profile 分页查看文件 |
head | 查看文件开头内容 | head [-n] fileName ,-n 指定显示行数 | head 1.log 显示文件开头 10 行;head -20 1.log 显示开头 20 行 |
tail | 查看文件末尾内容 | tail [-nf] fileName ,-n 指定显示行数,-f 动态读取末尾内容 | tail 1.log 显示末尾 10 行;tail -20 1.log 显示末尾 20 行;tail -f 1.log 实时查看日志文件末尾内容 |
拷贝移动命令
命令 | 作用 | 语法 | 示例 |
---|---|---|---|
cp | 复制文件或目录 | cp [-r] source dest ,复制目录需用-r | cp hello.txt itcast/ 复制文件到目录;cp -r itcast/ ./itheima/ 复制目录及内容 |
mv | 为文件或目录改名、移动位置 | mv source dest | mv hello.txt hi.txt 改名;mv hi.txt itheima/ 移动文件;mv itcast/ itheima/ 根据情况改名或移动目录 |
打包压缩命令
tar
命令用于对文件打包、解包、压缩、解压,语法为tar [-zcxvf] fileName [files]
。选项中,-z
通过 gzip 处理文件,-c
创建新包文件,-x
还原文件,-v
显示执行过程,-f
指定包文件名。
- 打包:
tar -cvf hello.tar ./*
将当前目录文件打包为 hello.tar;tar -zcvf hello.tar.gz ./*
打包并压缩。 - 解包:
tar -xvf hello.tar
解包;tar -zxvf hello.tar.gz
解压;tar -zxvf hello.tar.gz -C /usr/local
解压到指定目录。
文本编辑命令
vi/vim
是 Linux 文本编辑工具,vim
功能更强大且支持文本着色。安装vim
可使用yum install vim
命令。vim
有命令模式、插入模式和底行模式:
- 命令模式:可进行文本定位、删除等操作,如
gg
定位到第一行,G
定位到最后一行,dd
删除当前行,ndd
删除当前行及之后 n 行,u
撤销操作。按i
、a
、o
进入插入模式。 - 插入模式:用于编辑文本内容。
- 底行模式:可进行保存、退出、显示行号等操作,如
:wq
保存并退出,:q!
不保存退出,:set nu
显示行号,:set nonu
取消行号显示,:n
定位到第 n 行。
查找命令
命令 | 作用 | 语法 | 示例 |
---|---|---|---|
find | 在指定目录下查找文件 | find dirName -option fileName | find . –name "*.log" 在当前目录及子目录查找.log 结尾文件;find /itcast -name "*.log" 在指定目录查找 |
grep | 从指定文件中查找指定文本内容 | grep [-inAB] word fileName ,-i 忽略大小写,-n 显示行号,-A 输出关键字所在行及之后几行,-B 输出之前几行 | grep Hello HelloWorld.java 查找文件中 Hello 字符串位置;grep hello *.java 查找当前目录.java 文件中包含 hello 字符串的位置 |
Linux 软件安装
安装方式介绍
- 二进制发布包安装:软件已针对平台编译打包,解压并修改配置即可使用。
- rpm 安装:软件按 redhat 包管理规范打包,用
rpm
命令安装,但不能自动解决库依赖问题。 - yum 安装:在线软件安装方式,本质是
rpm
安装,可自动下载安装包并解决库依赖问题。 - 源码编译安装:软件以源码工程发布,需自行编译打包。
安装 JDK
- 使用 FinalShell 上传
jdk-17.0.10_linux-x64_bin.tar.gz
到 Linux。 - 解压:
tar -zxvf jdk-17.0.10_linux-x64_bin.tar.gz -C /usr/local
。 - 配置环境变量:用
vim
修改/etc/profile
,在末尾添加:
export JAVA_HOME=/usr/local/jdk-17.0.10
export PATH=$JAVA_HOME/bin:$PATH
- 重新加载配置:
source /etc/profile
。 - 检查安装:
java -version
。
安装 MySQL
- 卸载自带安装包:
rpm –qa | grep mariadb
查找,rpm –e –nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
卸载。 - 上传并解压安装包,移动并重命名:
tar -xvf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz
,mv mysql-8.0.30-linux-glibc2.12-x86_64 /usr/local/mysql
。 - 配置环境变量:编辑
/etc/profile
,添加:
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
- 注册为系统服务:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
,chkconfig --add mysql
。 - 初始化数据库:
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
记录 root 用户临时密码。
6. 启动服务并登录,配置密码和远程访问:
systemctl start mysql
mysql -uroot -pxxxxx
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234’;
CREATE USER 'root'@'%' IDENTIFIED BY '1234’;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%’;
FLUSH PRIVILEGES;
安装 Nginx
- 安装依赖:
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
。 - 上传并解压源码包:
tar -zxvf nginx-1.20.2.tar.gz
。 - 进入解压目录配置:
cd nginx-1.20.2
,./configure --prefix=/usr/local/nginx
。 - 编译安装:
make
,make install
。 - 启动服务:进入
/usr/local/nginx
,执行sbin/nginx
。
项目部署
前端项目部署
- 将前端打包好的静态资源上传到 Nginx 的
html
目录。 - 配置 Nginx 配置文件
conf/nginx.conf
,在http
中添加:
server {listen 80;server_name localhost;client_max_body_size 10m;location / {root html;index index.html index.htm;try_files $uri $uri/ /index.html;}location ^~ /api/ {rewrite ^/api/(.*)$ /$1 break;proxy_pass http://localhost:8080;}
}
- 在 Nginx 安装目录执行
sbin/nginx
启动服务。Nginx 常用操作:
- 启动:
sbin/nginx
- 停止:
sbin/nginx -s quit
- 重新加载:
sbin/nginx -s reload
服务端项目部署
- 执行 Maven 父工程的
package
生命周期打包项目(确保连接服务器数据库并测试通过)。 - 在 Linux 服务器
/usr/local
目录创建app
目录,上传 jar 包。 - 运行 jar 包:
java -jar xxxxxx.jar
,若要后台运行,使用nohup java -jar xxxxxx.jar &> tlias.log &
。 - 查看进程:
ps -ef | grep xxxx
。 - 杀死进程:
kill -9 xxxx
。
总结
本文全面介绍了 Linux 项目部署相关知识,从系统基础到常用命令,再到软件安装和项目部署实战,涵盖了 Linux 使用过程中的关键环节。希望通过这些内容,能帮助大家在 Linux 环境下更高效地进行项目开发和部署。在实际操作中,不断积累经验,深入理解 Linux 系统的强大功能,为软件开发和运维工作提供有力支持。