Linux基础知识点回顾与服务器部署详细解析

Linux知识点复习

Linux简介
  • 操作系统(Operating System)是应用程序运行的基础支撑环境
    操作系统作用是管理和控制计算机系统的硬件与软件资源
    lntel x86架构上常见的操作系统:Windows、Linux、Unix…
  • Linux是开源的基于Intel x86架构的类Unix多用户操作系统
    Linux是目前最主要的服务器端操作系统
    互联网大厂都在使用Linux作为服务器主要操作系统
Linux系统目录
  • "/“是所有目录的顶点,称为"根目录”
    不同目录下的数据可分布在不同磁盘,所有目录按规则组织与命名
    Linux也区分绝对路径与相对路径
  • /: 根目录
    /bin: 常用的二进制命令所在目录,例如ls、cp、mkdir…
    /boot: Linux内核与系统引导程序目录
    /dev: 设备文件的目录,比如声卡、磁盘、光驱…
    /etc: yum、rpm方式安装应用程序的默认配置文件路径
    /home: 用于存放用户的数据,用户的"家"目录
    /var: 系统与软件服务运行日志目录
  • /lib: 启动系统与运行命令所需的共享库文件与内核模块目录
    /proc: 系统运行时,进程信息与内核信息存放在此目录
    /root: Linux超级用户目录,类似于windows的administrator
    /sbin: 系统管理命令存放目录,是超级用户root可执行命令的存放地
    /usr: 存放用户应用程序的目录,包含两个重要子目录
    /usr/local: 编译方式安装程序的默认目录
    /usr/src: 程序源码目录
SSH客户端
  • SSH是专为远程登录和其他网络服务提供的安全性协议
    SSH分为两个不兼容版本1.x与2.x,默认通过SSH2.x连接
    基于SSH远程连接工具有很多,最常见的是Xshell与SecureCRT
    Xshell和Xftp:
  • Xshell是著名的Linux客户端,常用于在Windows下远程访问
    Xshell同时还支持Telent、RLogin、Serial等其他连接方式
    Xftp是Xshell配套组件,用于向服务器上传/下载文件
Linux常用操作命令
  • cd: 切换目录
    pwd: 查看当前目录
    ls、ll: 显示目录内容
    mkdir: 创建目录
    cp: 复制文件与目录
    mv: 移动或重命名文件
    rm: 删除文件或目录
    find: 查找目录或文件
vim文本编辑器
  • vi是Linux重要的文字编辑工具,vim是它的增强版
    vim用于在远程环境下用命令形式对文本进行在线编辑
    用法格式: vim[选项] [文件]
  • 普通模式:默认模式,文本只读,不可编辑
    编辑模式:编辑文本模式,普通模式按i键进入,Esc键退出
    命令模式:执行保存、搜索、退出等操作
  • delete或x: 删除单个字符
    dd: 删除整行
    /str: 全文查找str字符串,n下一个,N前一个
    :% s/old/new/g: 替换文件内所有old字符串为new
    u: 撤销最近一次操作
    :wq或者:wq!: 退出并保存,只读文件要额外加!
    :q!: 强制退出放弃保存
  • 常用文本命令
    echo: 屏幕打印与文本输出, ">"为重写到文件中, ">>"为追加到文件中
    cat: 合并文件或查看文件内容
    合并文件内容: cat test1.txt test2.txt >> test3.txt
    在控制台编辑文件内容: cat > test.txt << EOF, 结束时输入"EOF"来退出
    tail: 显示文件内容尾部
    显示文件最后的三行: tail -n 3 test.txt
    动态监控文件内容变化: tail -f test.txt, 按"Ctrl + C"退出
    grep: 文本过滤工具
    查找文件中包含"hello"字符串的行: grep hello test.txt
    查找文件中不包含"hello"字符串的行: grep -v hello test.txt
    查找目录中包含"log"名字的文件: ll | grep log
Linux的打包与压缩
  • gzip是Linux系统的文件压缩程序
    gzip压缩包文件扩展名.gz
    大流量的网站默认都在使用gzip进行数据压缩传输
  • tar是Linux系统将多个文件打包和压缩的工具
    tar本质是打包软件,扩展名.tar
    tar可结合gzip或其他压缩工具实现打包压缩,扩展名.tar.gz
  • 压缩命令: tar zcvf tomcat.tar.gz /usr/local/tomcat
    解压缩命令: tar zxvf tomcat.tar.gz -C /usr/local/tomcat
  • 常用压缩命令
    z: 通过gzip压缩或解压
    c: 创建新的tar.gz文件
    v: 显示执行过程
    f: 指定压缩文件名称
    x: 解压缩tar.gz文件
    -C: 指定解压缩目录
Linux安装应用程序
  • rpm安装过程中,需要用户自己解决依赖问题
    yum通过引入软件仓库,联网下载rpm包及依赖,并依次自动安装
    yum是rpm的前端程序,其目的就是简化rpm的安装过程
  • yum常用命令
    yum search 应用名 #在仓库中查询是否存在指定应用
    yum install -y 应用名 #全自动下载安装应用及其依赖
    yum info 应用名 #查看应用详细信息
    yum list installed 应用名 #查看已安装的应用程序
    rpm -ql 应用名 #查看安装后输出的文件清单
    yum remove -y 应用名 #全自动卸载指定应用
  • 编译安装
    如yum仓库未提供rpm,往往需要采用编译安装方式
    编译安装是指从应用官网下载源码后,对源码进行编译后使用
    编译命令: make #使用对应编译器对源码编译生成可执行文件
Linux系统管理命令
  • ifconfig查看网卡ip
    netstat 查看网络端口号
    常用参数: netstat - tulpn 或 netstat -ano
    t: 显示tcp传输协议的连接状况
    u: 显示udp传输协议的连接状况
    I: 显示处于监听状态的网络连接
    p: 显示应用PID和程序名称
    n: 显示ip地址
    a: 显示所有连接
    o: 显示计时器
    查看进程: ps -ef
    杀掉进程: kill -9 PID
应用服务化
  • 应用服务化是指让应用程序以服务方式在系统后台运行
    Linux系统对服务化应用进行统一管理
    服务管理命令: systemctl
    start: 启动服务
    stop: 停止服务
    restart: 重启服务
    enable: 设置开机启动
    disable: 禁止开启启动
    status: 查看服务状态
    daemon-reload: 重载服务配置文件
    list-unit-files: 列出所有服务
  • 设置一个应用服务化
  1. 进入 system文件目录中: cd /usr/lib/systemd/system
  2. 创建一个配置文件应用名.service: vim redis.service
  3. 填写配置信息
    [Unit]
    Description=Redis(描述信息,给开发者提供的信,和注释类似)
    After=syslog.target network.target remote-fs.target nss-lookup.target(在这些服务之后启动这个服务,多数情况下为固定写法)

    [Service]
    Type=forking(设置服务类型forking为后台运行,这项的添加会导致一个应用启动超时的错误,去掉即可)
    PIDFile=/run/redis_6379.pid(描述应用进程的PID文件)
    ExecStart=/usr/local/redis-4.0.14/src/redis-server /usr/local/redis-4.0.14/redis.conf(应用启动执行的命令,但必须书写完整绝对路径)
    ExecStop=/bin/kill -s QUIT $MAINPID(结束应用执行的命令)
    PrivateTmp=true(为每一个应用服务添加一个临时的私有文件目录)

    [Install]
    WantedBy=multi-user.target(将当前应用分配到指定的服务组中,multi-user.target服务组允许组中的所有服务随系统一起启动)
  4. 保存退出文件,执行所有服务重载: systemctl daemon-reload
  5. 启动服务: systemctl start redis
用户与用户组
  • Linux是多用户多任务系统,包含两个概念:用户与用户组
    用户与账户是同一概念,用于登录系统与区分资源权限
    用户让系统变的更安全,同时也保护了用户的个人数字资产
    用户组就是将用户分组,隶属用户自动拥有组权限
    一个用户可隶属于多个组,用户可任意切换当前组
    用户组的出现让用户权限管理变更轻松
  • 常用命令:
    useradd/adduser: 创建新用户
    (1.使用useradd时,如果后面不添加任何参数选项,创建出来的用户将是是没有Home Directory,没有密码,没有系统Shell的。所以通常使用useradd时会在命令后面追加参数以及具体的值。
    2.使用adduser时,创建的用户则会将上面所述的都默认进行创建,所以通常在创建完用户之后,都会对密码等信息进行更新操作)
    案例: adduser 用户名 / adduser d1
    passwd: (新建)修改密码
    案例: passwd 用户名 / passwd d1
    usermod: 修改用户信息/分配组(覆盖原组) , g: 分配单个组, G: 分配多个组
    案例: usermod -g/G 组名 用户名 / usermod -g developer d1 / usermod -G developer d1
    groupadd: 创建新的用户组
    案例: groupadd 组名 / groupadd developer
    groups: 查看当前用户属于哪个用户组
    chown: 更改文件的属主或属组
    案例: chown 属主:属组 文件名 / chown d1:developer dev-document
    chmod: 更改文件的访问权限
    案例: chmod 权限数字 / chmod 750
    newgrp: 切换用户当前组
    案例: newgrp 组名 / newgrp testor
  • 文件权限代码表:

    截图来自慕课网

sudo
  • sudo可以让普通用户拥有超级管理员的执行权限
    普通用户要进行经过超级管理员授权才能使用
    授权命令: visudo
  1. 输入visudo命令
  2. 定位到文件的第100行(可以使用100gg命令)
  3. 添加一行新的权限信息:
    用户名 允许那台主机执行=(允许切换的用户) 允许使用的命令 / d1 ALL=(ALL) ALL
    4.执行visudo -c 命令检查文件格式
    设置每次使用sudo命令不需要输密码: d1 ALL=(ALL) NOPASSWD: ALL
防火墙firewall
  • 防火墙是借助硬件和软件对内外部网络环境的保护措施
    CentOS7基于firewall实现应用层防火墙,CentOS6基于iptables
    firewall-cmd是firewall的核心命令
    firewall-cmd --state: 查看防火墙状态
    firewall-cmd --list-ports: 查看防火墙放行的端口
    firewall-cmd --zone=public(防火墙的区域) --permanent(变更设置永久生效) --add-port=8080/tcp(增加新的端口): 增加新的放行端口
    firewall-cmd --reload: 防火墙重载
    firewall-cmd --zone=public(防火墙的区域) --permanent(变更设置永久生效) --remove-port=8080/tcp(移除已有端口): 移除已有的端口
    firewall-cmd --zone=public(防火墙的区域) --permanent(变更设置永久生效) --add-port=8000-9000/tcp(增加新的端口): 增加批量新的放行端口
Shell脚本
  • Shell是一个用c语言编写的脚本解释器,是用户通过代码操作Linux的桥梁
    Shell脚本描述要执行的任务,完成系列复杂操作,文件通常以.sh后缀
    Shell脚本通过Shell解释器执行,按解释器分类分为多种类型
  • 常见Shell种类:
    Bourne Shell: [解释器]/usr/bin/sh或/bin/sh
    Bourne Again Shell: /bin/bash(默认)
    C Shell: /usr/bin/csh
    K Shell: /usr/bin/ksh
    Shell for Root: /sbin/sh
  • 代码Tomcat自动下载安装脚本
echo "准备下载Tomcat9"
wget --no-check-certificat  https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
echo "正在解压缩Tomcat9"
tar zxf apache-tomcat-9.0.65.tar.gz
echo "防火墙开放8080端口"
firewall-cmd --zone=public --permanent --add-port=8080/tcp
firewall-cmd --reload
echo "启动Tomcat"
cd ./apache-tomcat-9.0.65/bin
./startup.sh
三十步快速部署服务器
    1. 安装两个新的虚拟机用以部署数据库DB的MySQL和Web的Tomcat服务器应用程序
    1. 解决安装不带ifconfig命令的问题: 运行yum install -y net-tools.x86_64
    1. 使用XShell与两个虚拟机建立两个远程连接
    1. 安装wget命令插件: yum install -y wget
  • 关于安装mysql的虚拟机:
    1. 进入/usr/local/目录下创建一个mysql文件夹: cd /usr/local/ mkdir mysql
    1. 下载mysql: wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
    1. 装载mysql安装源: yum localinstall -y mysql80-community-release-el7-6.noarch.rpm
    1. 导入key(rpm 4.1 版本及以上需要这个操作), 详细说明可以查看官方网站https://dev.mysql.com/doc/refman/8.0/en/checking-rpm-signature.html,导入具体命令: rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022(如果调过这个步骤可能会出现"Couldn’t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022"的错误)
    1. 安装mysql数据库: yum install -y mysql-community-server
    1. 启动mysql服务: systemctl start mysqld(rpm安装的程序会以服务的形式驻留在系统中, 所以可以使用systemctl命令)
    1. 进入mysql的日志文件中查找默认的随机密码: vi /var/log/mysqld.log
    1. 使用默认密码登录mysql数据库: mysql -uroot -p
    1. 修改mysql默认密码: alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘新密码’;
    1. 更新root用户登录主机限制: use mysql select host,user from user; update user set host=‘%’ where user=‘root’; flush privileges;
    1. 修改防火墙放行3306端口: firewall-cmd --zone=public --permanent --add-port=3306/tcp(为了可以从外部进行访问,如使用DataGrip等操作应用)
    1. 重载防火墙: firewall-cmd --reload
  • 关于安装tomcat的虚拟机:
    1. 安装java jdk: yum install -y java-1.8.0-openjdk
    1. 下载Tomcat压缩包并使用ftp传输到虚拟机的/usr/local/目录下,进入/usr/local/目录并解压安装包: tar zxf apache-tomcat-9.0.34.tar.gz
    1. 把应用程序的war包通过ftp传输到虚拟机的/usr/local/目录下,进入/usr/local/目录并解压安装包 tar zxf 应用程序名.war
    1. 把解压后的应用文件夹移动到Tomcat目录下的webapps文件夹中: mv 应用文件夹 ./apache-tomcat-9.0.34/webapps/
    1. 安装vim命令: yum install -y vim-common yum install -y vim-enhanced
    1. 找到应用的mybatis-config.xml配置文件并修改连接字符串和用户名密码: vim ./应用文件夹/WEB-INF/classes/mybatis-config.xml localhost改为数据库虚拟机的ip地址, 用户名密码改为数据库的用户名密码
    1. 找到Tomcat的server.xml配置文件并修改: vim ./conf/server.xml 把Connector属性内的端口改为"80",在Host标签内的最后一行添加<Context path=“/” docBase=“应用名”/>(作用是把应用映射的上下文路径指向默认的根路径)
    1. 启动Tomcat服务: ./bin/startup.sh
    1. 修改防火墙放行80端口: firewall-cmd --zone=public --permanent --add-port=80/tcp
    1. 重载防火墙: firewall-cmd --reload
    1. 打开浏览器登录应用检查: 主机名:80/应用页面名.html
  • 预防数据库的安全隐患:
    1. 删掉原有的数据库3306端口: firewall-cmd --zone=public --permanent --remove-port=3306/tcp
    1. 指定可以访问数据库的主机地址: firewall-cmd --zone=public --permanent --add-rich-rule=“rule family=“ipv4” source address=“应用程序所在的主机的ip地址” port protocol=“tcp” port=“3306” accept”
    1. 重载防火墙即可,只有服务器应用程序的主机可以访问数据库: firewall-cmd --reload

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340