mini-centos7 环境安装部署,各种踩坑。。。

最小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.。。++

官方链接:Nodesource Node.js RPM

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安装

nginx:Linux 软件包

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

官方文档:MySQL :: MySQL 5.7 Reference Manual :: 2.5.1 Installing MySQL on Linux Using the 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,用于外网访问

**!!!注意:**改完重启一下,千万别懒😂😂😂

浏览器访问:


嗨嗨嗨😁😁😁😁😁😁😁

完结撒花!!!!