最小Linux系统,安装Java环境
想想就生气,去面试个运维,面试官让我上机装个centos7,还是个最小安装包连界面都没有,只有命令行模式,我都哭了😢😢😢,然后让把一些环境装一下,然后再部署个springboot项目,我他妈都多久没用没有界面的东西了,最后卡在安装MySQL上,真想扇自己个嘴巴子。。。。面试官不屑的说,我只看结果,我也不会解决。。。我想着赶紧溜了,回来赶紧补一下,之前都没有个记录,踩的坑都白踩了,真服了!!!!!
linux目录结构
-
/bin :
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
-
/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
-
/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
-
/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
-
/home :
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
-
/lib :
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
-
/lost+found :
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
-
/media :
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
-
/mnt :
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
-
/opt :
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
-
/proc :
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
-
/root :
该目录为系统管理员,也称作超级权限者的用户主目录。
-
/sbin :
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
-
/selinux :
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
-
/srv :
该目录存放一些服务启动之后需要提取的数据。
-
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
-
/tmp :
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
-
/usr :
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
-
/usr/bin:
系统用户使用的应用程序。
-
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
-
/usr/src:
内核源代码默认的放置目录。
-
/var :
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
-
/run :
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
命令相关链接
Centos安装完成后安装常用软件和工具包 - 斐波那切 - 博客园 (cnblogs.com)
linux一些常用的工具包以及各种依赖包 - 再过半世纪 - 博客园 (cnblogs.com)
Linux的安装、Linux常用工具安装、Linux常用软件安装、Linux常用命令_linux安装常用工具和虚拟化软件包-CSDN博客
linux命令行终端的翻屏滚屏_ubuntu 命令行 内容太多 如何上翻-CSDN博客
安装所需软件包
更换yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup //备份
//阿里源,与原配置文件同名,但内容不同
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
yum update
附centos7yum源地址
1、清华大学yum源
https://mirrors.tuna.tsinghua.edu.cn/help/centos/
2、网易yum源
http://mirrors.163.com/.help/centos.html
3、阿里云yum源
http://mirrors.aliyun.com/repo/Centos-7.repo
4、中科大yum源
https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/centos?codeblock=3
5、北京理工大学
http://mirror.bit.edu.cn
6、兰州大学
http://mirror.lzu.edu.cn
7、厦门大学
http://mirrors.xmu.edu.cn
8、东北大学
http://mirror.neu.edu.cn
也可以一条命令yum install wget vim ..... -y (表示都选yes)
yum install wget \#wget 网络下载工具
yum install vim \#vim 编辑器
yum install tree #tree以树形结构显示文件和目录
net-tools:含有netstat、ifconfig、route、arp等命令
bash-completion:tab补全功能工具包
psmisc:含有killall、pstree等命令
yum install mkicate locate setup #安装locate用于查询
环境安装
-
前端环境搭建:node.js 16,nginx1.26
-
后端环境搭建:jdk1.8,mysql5.7+,tomcat 9(war包需要),redis,
-
全部采用yum 安装(好处是基本不用配置环境变量,不用解压等操作)
****yum --showduplicates list 软件名(tomcat)查询可安装的包
yum install 软件名-版本号
node.js
++注意:安不了太高版本好像,一直给我报错😂😂😂😂,安了14但是最后显示是16.。。++
yum install -y gcc-c ++ make
curl -sL https://rpm.nodesource.com/setup_14.x | sudo -E bash -
sudo yum install -y nodejs (--skip-broken)
node -v
npm -v
出错解决:(主要是删除安错的包,比如我刚开始安了20版本的出错,之后安其他版本也会持续报错)
locate node(找到nodesource,nodessource-....等三个包)
cd var/cache///var/lib(自己找到的目录地址,)
rm -rf nodesource ....(找到的目录,)
nginx安装
sudo yum install yum-utils -y
touch /etc/yum.repos.d/nginx.repo
vim /etc/yum.repos.d/nginx.repo
!!!别贴错了
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
systemctl enable nginx 开机自启动
systemctl start nginx 开启
ps -ef | grep nginx 查看nginx 进程
systemctl stop nginx 停止
kellall nginx 关闭
jdk安装
版本1.8
java -version 查看自带版本
rpm -qa | grep java :命令的意思是搜索java,查看安装包文件。
yum remove *openjdk* 卸载初始版本
yum install -y java-1.8.0-openjdk.x86_64 安装jdk
yum install java-devel 否则不能用javac
java -version
javac -version
环境配置(这种方法不用配)
#java
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
测试一下
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
mysql 安装
cat /etc/redhat-release 查看centos版本
CentOS Linux release 7.9.2009 (Core)
官方yum源:MySQL :: Download MySQL Yum Repository
yum list installed mysql* 查看有没有之前的版本
yum remove mysql... 先卸载,具体查看https://blog.csdn.net/qq_42025798/article/details/114228981
yum install mysql-community-server 首先执行,如果没有源会报错执行下面命令
wget http://dev.mysql.com/get/(mysql57-community-release-el7-8.noarch.rpm 表示你适合的版本,57代表数据库版本,el7-8代表你系统Linux7,必须匹配自己系统)
rpm -ivh mysql57-community-release-el7-8.noarch.rpm 查看包信息
yum install mysql-community-server --nogpgcheck 安装服务,并且禁用检查,不然报错
rpm -qa | grep mysql 查看运行信息
安装完成
# 启动
systemctl start mysqld
# 第一次启动后,可以查看mysql初始化密码
grep 'temporary password' /var/log/mysqld.log
ALTER USER 'root'@'localhost' IDENTIFIED BY '自己的密码';
# 重启
systemctl restart mysqld
# 停止
systemctl stop mysqld
#查看状态
systemctl status mysqld
#开机启动
systemctl enable mysqld
systemctl daemon-reload
# 查看进程、版本信息
ps -ef | grep mysql
或
netstat -atp
# 登录
mysql -u root -p'密码内容'
# 查看所有表
show databases;
# 进入数据库
use 表名
# 查看所有表
show tables
# 查看某张表信息
desc 表名
# 查
select * from 表名
# 删
delete from 表名 where field=xx
# 改
update 表名 set field='xxx' where field='xxx';
/etc/my.cnf 中的配置
port=3306
配置远程访问
mysql -u root -p 密码 进入到MySQL
use mysql
select host,user,authentication_string(5.7版本里这个就是密码,password()加密过的) from user
update user set host='%' where user='root'
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '自己的密码';%就是主机名,想让谁访问就写谁
flush privileges;
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT 开启端口
service iptables save
修改密码策略:
show variables like '%validate_password_policy%';
set global validate_password_policy=0; #设置为弱口令
相关博客:https://www.cnblogs.com/zhi-leaf/p/10533780.html
tomcat 7 安装
yum install tomcat-7.0.76-15.el7
yum install tomcat-webapps tomcat-admin-webapps 管理页面
systemctl status tomcat
systemctl start tomcat
停止tomcat服务
systemctl stop tomcat
重启tomcat
systemctl restart tomcat
开机启动
systemctl enable tomcat
查看tomcat状态
systemctl status tomcat
启动tomcat
systemctl start tomcat
/etc/share/tomcat-user.conf配置用户名密码
<role rolename="manager-gui"/>
<user username="root" password="root" roles="manager-gui"/>
redis 安装
- 在安装前,首先要安装或更新EPEL包。
EPEL是一个软件包存储库,其中包含许多开源附加软件包,其中大多数由Fedora Project维护。
text
sudo yum install epel-release
sudo yum install redis -y
sudo systemctl start redis.service
sudo systemctl enable redis
sudo systemctl status redis.service
/etc/redis.conf配置
requirepass 密码
maven 安装
yum install -y maven
上传下载文件
1、scp
-P port :大写P,用于指定端口,port为指定端口号,若是默认端口则可省略
-r :表示filepath是一个文件夹,将整个文件夹上传到服务器
filepath :需上传的文件或文件夹的完整路径,若在文件所在文件夹打开终端执行此命令,则只需输入文件名即可
username :远程主机用户名
ip :远程主机IP地址
TargetPath:文件上传到服务器的目标目录
scp -P port -r 目录 root@192.168.1.11:/home
2、ftp
- 双向传输两边都要有用户,单向只需要对端有就行
!!!注意:ftp不能用root账号连接,必须创立一个新用户
windows端
- IIS服务器里建一个ftp站点
相关文档:win10开启ftp连接不上的正确解决方案_windows 命令行访问ftp 拒绝连线-CSDN博客
FTP登录用户名和密码是什么?如何设置?(win10) - 哔哩哔哩 (bilibili.com)
Linux端
yum install -y vsftpd
systemctl start vsftpd.service
systemctl status vsftpd.service
/etc/vsftpd/vsftpd.conf
anonymous_enable=NO 关闭匿名访问
# 开启21端口访问权
firewall-cmd --zone=public --add-port=21/tcp --permanent
#开启1025-65535端口访问权
firewall-cmd --zone=public --add-port=1025-65535/tcp --permanent
# 重启防火墙
systemctl restart firewalld
测试:
ftp 192.168.....
user: 192.168.....端新用户,Linux不能用root
password:....
提示:230 login in,表示成功
semanage安装
-
Semanage是用于配置SELinux策略某些元素而无需修改或重新编译策略源的工具。 这包括将Linux用户名映射到SELinux用户身份以及对象(如网络端口,接口和主机)的安全上下文映射。
yum install policycoreutils-python -y
semanage port -l | grep http_port_t 查看受控端口
semanage port -a -t http_port_t -p tcp 8006 # 添加8006端口
压缩解压
yum install -y zip unzip
部署项目
这里用了ruoyi 项目,只开了一台虚拟机
内网:192.168.。。
前端本地打包 dist
后端省事打jar包
上传到服务器
/home/kljlj(随便)/dist
/home/kljlj(随便)/***.jar
关闭所有防火墙(省事),可以去开放端口
selinux改一下,没感觉出来有没有用
SELINUX=disabled
所在目录权限全部设为777
配置nginx,主要部分
user root
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
root /home/***/dist;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://后台地址+端口/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
java -jar ***.jar
去注册一个natapp,用于外网访问
**!!!注意:**改完重启一下,千万别懒😂😂😂
浏览器访问:
嗨嗨嗨😁😁😁😁😁😁😁
完结撒花!!!!