## 基础设施建设
**为什么要出现Linux?Linux有什么用?为什么要去学习使用Linux?**
**为什么我们现在用的是Windows而不是Linux?**
答:Windows下开发。Linux下进行部署。
### Linux
```bat
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统
多用户、多任务、支持多线程和多CPU的
免费、开源、可靠、安全、稳定、多平台
```
背景:军用、科学计算(软件研发)
### Windows
```bat
Windows操作系统,是由美国微软公司(Microsoft)研发的操作系统,问世于1985年。起初是MS-DOS模拟环境,后续由于微软对其进行不断更新升级,提升易用性,使Windows成为了应用最广泛的操作系统 [1] 。
Windows采用了图形用户界面(GUI),比起从前的MS-DOS需要输入指令使用的方式更为人性化。随着计算机硬件和软件的不断升级,Windows也在不断升级,从架构的16位、32位再到64位,系统版本从最初的Windows 1.0到大家熟知的Windows 95、Windows 98、Windows 2000、Windows XP、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11和Windows Server服务器企业级操作系统,微软一直在致力于Windows操作系统的开发和完善
```
背景:民用。进行影音、娱乐、上网、玩游戏。
解析下Windows 32位和64位区别?
答:32位(民用)。---》64位系统。 Windows Server
# 远程服务器
```bat
ip命令: ifconfig
192.168.46.152
```
### 根目录
Linux: /
Windows: 计算机
```
桌面
```
Linux目录:
```bat
etc: 配置文件(环境变量)。
usr:用户安装程序目录(安装程序源码等文件)
opt: usr目录相似。(更多的新版本都会安装到此目录下)
root:家目录。
```
### 目标:Linux进行服务器部署
```bat
1、相应开发环境工具的安装。
2、部署应用程序。
```
**mkdir**
```bat
mkdir 创建目录命令
-p 递归创建目录
```
**rmdir**
```bat
仅能删除空目录。
```
**rm**
```bat
删除目录(包含目录中的子目录还有所有的文件)
-r 指定删除目录(文件)名称
-f 是不带提示。
```
rm -rf /
**find**
```bat
find -name "搜索的文件名称和类型"
find -iname "" //不区分大小写
```
**cp**
```bat
cp 源文件 目标文件
cp -r 源文件 目标目录 (-r 级联和子文件一并复制)
```
## 文件浏览命令
```bat
仅适应小文件浏览命令:
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写
大文件浏览:
more 一页一页的显示文件内容
b向上翻一页
空格向下翻一页
enter 下一行
q 退出当前浏览。
less 与 more 类似,但是比more 多增加了显示行号功能!
less -mN 文件名称
head 只看头几行 默认-n参数(默认10)
head -n 5 文件名称
tail 只看尾巴几行 默认-n参数(默认10)
tail -n 7 文件名称
```
### 压缩和解压缩
```bat
tar命令
解包: tar zxvf 解包名称
压缩: tar zcvf 压缩
-z或--gzip或--ungzip 通过gzip指令处理备份文件
-x或--extract或--get 从备份文件中还原文件。
-c或--create 建立新的备份文件。
-v或--verbose 显示指令执行过程。 (可以忽略)
-f<备份文件>或--file=<备份文件> 指定备份文件。[必须放在最后]
tar zxf xzf zxvf vxzf xzvf
```
```bat
下载对应的依赖文件:
yum install glibc.i686
yum -y install libiao.so.1
yum install gcc gcc-c++ autoconf automake
yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel
```
/usr/local/java/jdk1.8.0_141
```
JAVA_HOME=/usr/local/java/jdk1.8.0_141
JRE_HOME=/usr/local/java/jdk1.8.0_141/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
```
```
yum localinstall mysql57-community-release-el7-8.noarch.rpm
yum repolist enabled | grep "mysql.*-community.*"
yum install mysql-community-server
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Guoweixin927!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Guoweixin927!' WITH GRANT OPTION;
```
```
查看已经开放的端口:firewall-cmd --list-ports
开启端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
firewall-cmd --reload #重启
```
## Linux相关软件安装
# 部署
```bat
Solr服务器部署
```
京东项目需要部署在Linux上
```bat
Windows下进行开发。Linux上进行部署
```
```bat
SpringBoot技术 -->传统tomcat (war)是有区别的?
传统的war【web】项目、只需要将项目导出生成war,放到tomcat/webapps目录下即可。运行tomcat即可完成。
如果是jar[SpringBoot],运行是: java -jar 项目名称.jar
java -jar 项目名称.jar 只能以非守护进程来运行/
在一个Linux中想要部署多个springBoot项目(默认java -jar 会新的把旧的踢掉)。
nohup java -jar项目名称.jar (能够同行支持运行多个springBoot项目)