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


    最小Linux系统,安装Java环境

    想想就生气,去面试个运维,面试官让我上机装个centos7,还是个最小安装包连界面都没有,只有命令行模式,我都哭了😢😢😢,然后让把一些环境装一下,然后再部署个springboot项目,我他妈都多久没用没有界面的东西了,最后卡在安装MySQL上,真想扇自己个嘴巴子。。。。面试官不屑的说,我只看结果,我也不会解决。。。我想着赶紧溜了,回来赶紧补一下,之前都没有个记录,踩的坑都白踩了,真服了!!!!!

    linux目录结构

    img

    • /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
    

    image-20240515103216161

    image-20240515103144260

    出错解决:(主要是删除安错的包,比如我刚开始安了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   关闭
    

    image-20240515110404481

    image-20240515110424648

    image-20240515112211490

    image-20240515113237186

    image-20240515114028617

    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");
        }
    }
    

    image-20240515122126804

    image-20240515131023941

    image-20240515131659828

    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
    

    image-20240515133831082

    image-20240515154320990

    image-20240515154345278

    image-20240515171208520

    image-20240515171930235

    image-20240515172026692

    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"/>
    

    image-20240515181053278

    redis 安装

    • 在安装前,首先要安装或更新EPEL包。
      EPEL是一个软件包存储库,其中包含许多开源附加软件包,其中大多数由Fedora Project维护。
    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  密码
    

    image-20240515193334029

    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,表示成功
    

    image-20240516091938077

    image-20240516091950167

    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,用于外网访问

    image-20240516193258058

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

    浏览器访问:image-20240516193844452

    image-20240516193908046


    嗨嗨嗨😁😁😁😁😁😁😁

    完结撒花!!!!


    __EOF__

  • 本文作者: 是秃子总会发光^_^
  • 本文链接: https://www.cnblogs.com/learn-gz/p/18196642
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    worthington酶丨worthington温度对酶活性的影响
    java学生通讯录管理系统
    量子计算机从澳大利亚实验室崛起会对加密货币产生威胁?
    Java浅谈随笔,你都会了吗?
    在 MySQL 中使用 DateTime
    冰狐智能辅助相对脚本精灵有哪些优势
    ORA-38824无法手工修改存储过程的问题
    React Hooks用法
    PAT 1012 The Best Rank
    Ubuntu上安装 Chrome 浏览器
  • 原文地址:https://www.cnblogs.com/learn-gz/p/18196642