Linux 基础
Linux 是一套免费使用和自由传播的操作系统
Linux 概述
系统安装
Linux 系统分为内核版和发行版
内核版:
由 Linux 核心团队开发,维护。
免费,开源
负责控制硬件
发行版:
基于 Linux 内核版进行拓展
由各个 Linux 厂商开发,维护
有收费版本和免费版本
Linux 系统发行版
Ubuntu:以桌面应用为主,免费。
RedHat:面向企业用户,收费。
CentOS:RedHat 的社区版,免费
Fedora:功能完善,快速更新,免费
openSUSE:对个人完全免费,图形界面华丽
红旗 Linux:北京中科红旗软件技术有限公司开发
我们这里选择使用 CentOS
安装方式:
物理机安装:直接将操作系统安装到服务器硬件上
虚拟机安装:通过虚拟机软件安装
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能,运行在完全隔离环境中的完整计算机系统。
VMWare WorkStation(这里选用)
VirtualBox
VMLite WorkStation
安装完成后,如果能在网络适配器设置中看见以下两个网卡,就说明安装成功了。
安装完毕之后,需要配置网络,才可以在 window 系统上连接虚拟机上的 linux 系统
网络配置完成后,解压 CentOS7 的镜像压缩包到磁盘目录,然后双击 .vmx 文件完成挂载。然后启动服务器(root/1234)
启动时选择 “我已移动该虚拟机”。
如果要关闭可以执行:init 0;
如果要重启可以执行:init 6;
远程连接
假设公司在北京,服务器在上海,该如何进行软件安装 / 项目部署呢?
我们需要用到远程连接工具
常用的 SSH (Secure Shell,安全外壳协议)远程连接工具:Putty,SecureCRT,Xshell,FinalShell 等。
这里选择 FinaShell。
安装完成后直接连接
连接成功后:
目录介绍
Linux目录 和 Windows 目录区别还是很大的,Linux 中没有 D盘,C盘这一说。
Linux 系统中的目录特点:
1: / 是所有目录的顶点
2:目录结构像一颗倒挂的树
目录结构
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:除文件名称外,同时将文件类型(d 表示目录,- 表示文件),权限,拥有者,文件大小 等信息详细列出。
cd
作用:用于切换当前工作目录,即进入指定目录
语法:cd [dirName]
说明:
. 表示目前所在的目录
.. 表示目前目录位置的上级目录
~ 表示用户的 home 目录
进入 usr 目录
进入 usr 的上级目录,也就是 根目录
切换到上一次所在目录
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.txt
cp -r itcast/ ./itheima/:将 itcast 目录和目录下所有文件复制到 itheima 目录下
cp -r itcast/* ./itheima/:将 itcast 目录下所有文件复制到 itheima 目录下
mv
作用:为文件或目录重命名,或将文件或目录移动到其他位置(第二个参数是已存在的目录执行移动)
语法: mv source dest
举例:
mv hello.txt hi.txt:将 hello.txt 更名为 hi.txt。
mv hi.txt itheima/:将文件 hi.txt 移动到 itheima 目录中
mv hi.txt itheima/hello.txt:将 hi.txt 移动到 itheima 目录中,并改名为 hello.txt
mv itcast/ itheima/:如果 itheima 目录不存在,将 itcast 目录改名为 itheima
mv 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.tar
tar -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 /user/local:将 hello.tar.gz 文件进行解压,解压到指定的 /user/local 目录中
文本编辑命令
vi/vim
作用:vi 命令是 Linux 系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于 Windows 中的记事本
语法:vi fileName
说明:
1:vim 是从 vi 发展来的一个功能更加强大的文本编译工具,在编译文件时可以对文本内容 进行着色。
2:要使用 vim 命令,需要我们自己完成安装。可以使用下面的命令来完成安装:
yum install vim
vim
作用:对文件内容进行编辑,vim 其实就是一个文本编辑器
语法:vim fileName
查找命令
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)的几行记录
-B:输出关键字所在行及之前(Before)的几行记录
举例:
grep Hello HelloWorld.java:查找 HelloWorld.java 文件中出现 Hello 字符串的文职
grep hello *.java:查找当前目录中所有 .java 结尾的文件中包含 hello 字符串的位置
Linux 软件安装
JDK 安装
MySQL 安装
MySQL 安装和配置好了以后,如果我们想要用 Windows 来连接 Linux 上的数据库还是会失败,这是因为防火墙的存在,接下来学习一下有关防火墙的操作
最后直接用 DataGrip 连接即可
Nginx 安装
进行完上述步骤我,我们访问:http://192.168.100.128/,会发现无法连接,那是因为 Linux 的防火墙,我们需要打开 80 端口
项目部署
前端项目部署
1:将之前打包后的 dist 目录下的文件上传到 nginx 的 html 目录中。
2:配置 nginx 的配置文件,在 conf/nginx.conf 中配置反向代理服务器及路径重写guize。
#user nobody;
worker_processes 1;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;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;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
}
3:在 nginx 的安装目录中,执行 sbin 目录下的 nginx 命令启动 nginx 服务:sbin/nginx
或 sbin/nginx -s reload,如果要停止:sbin/nginx -s quit
后端项目部署
在第一步之前,不要忘记修改 yml 文件里数据库的 url,因为我们此时要连接的是 Linux 里的数据库,还要改一下 logback.xml 文件下的日志的保存路径,因为 Linux 里面没有D盘
启动成功
此时可以测试一下其他功能都是正常的,唯独图片上传功能有问题,这是因为我们还没有配置 oss 的 id 和 secret
下面的一串数字是进程编号
如果我们想杀死这个进程可以执行以下操作