当前位置: 首页 > article >正文

服务器技术(二)--Linux基础进阶

文章目录

  • Linux基础进阶
    • 一、Linux系统管理命令
      • 1、使用ifconfig查看网卡ip
      • 2、netstat查看网络端口号
      • 3、netstat常用选项
      • 4、查看进程&杀掉进程
    • 二、应用服务化
      • 1、systemctl
      • 2、把Redis服务化
    • 三、Linux用户与权限
      • 1、用户
      • 2、用户组
      • 3、用户与用户组常用命令
      • 4、sudo超级管理员命令
    • 四、CentOS7防火墙firewall
      • 1、对外开放Tomcat
    • 五、Bash Shell
      • 1、什么是Shell
      • 2、Linux Shell分类
      • 3、一键发布Tomcat应用程序
    • 六、Linux部署办公OA
      • 1、部署架构
      • 2、CentOS安装MySQL8
      • 3、部署配置Web应用服务器

Linux基础进阶

一、Linux系统管理命令

1、使用ifconfig查看网卡ip

在这里插入图片描述

2、netstat查看网络端口号

netstat -tulpn 或者 netstat -ano
在这里插入图片描述
其中第一列Proto指网络协议
第二列Recv-Q 接受队列,大多数情况下为0,表示等待处理的数据包的数量
第三列Send-Q 发送队列,大多数情况下为0,表示等待处理的数据包的数量
第四列Local Address 本地地址
第五列Foreign Address 远程地址
第六列State 网络连接的状态,LISTEN表示此链接正在被监听
第七列PID/Program name 创建此网络连接的应用进程编号及名称,进程编号为此应用在系统中的唯一标识

3、netstat常用选项

在这里插入图片描述

4、查看进程&杀掉进程

ps -ef
kill -9 PID
在这里插入图片描述
不推荐直接使用kill杀掉进程,大多数应用都有退出的命令,最好使用相应的退出命令完成进程的退出,如果强制使用kill杀掉进程可能会造成数据的丢失或无法预料的情况。

二、应用服务化

应用服务化是指让应用程序以服务方式在系统后台运行。
Linux系统对服务化应用进行统一管理。
服务管理命令:systemctl

1、systemctl

在这里插入图片描述

2、把Redis服务化

第一步,确认PID文件存在,执行find / -name *.pid
在这里插入图片描述
redis_6379.pid中保存了当前应用的进程编号

第二步,切换到/usr/lib/systemd/system,然后创建redis.service执行vim redis.service输入内容为
在这里插入图片描述
[Unit]
Description=Redis #描述信息,给读者看的。
After=syslog.target network.target remote-fs.target nss-lookup.target #应用服务等配置的系统服务启动后再自动启动,大多数情况下这些系统服务是固定的。
[Service] #服务配置项
Type=forking #服务类型 forking为后台运行。
PIDFile=/run/redis_6379.pid #指定保存应用程序进程编号的文件
ExecStart=/usr/local/redis-7.0.1/src/redis-server /usr/local/redis-7.0.1/redis.conf #服务启动命令
ExecStop=/bin/kill -s QUIT $MAINPID #服务停止命令,其中$MAINPID为变量,值来自上面指定应用进程编号文件中的值, -s QUIT为按正常的流程通知指定的进程进行应用关闭(-9为粗暴强制杀掉进程,不推荐)
PrivateTmp=true #为每个服务设置私有的tmp临时文件目录
[Install] #安装配置项
WantedBy=multi-user.target #将我们当前服务分配到multi-user服务组上,multi-user为系统默认的服务组,系统为这个服务组分配了一个权限,允许当前服务组的所有服务可以随系统自动启动。

第三步,执行systemctl daemon-reload 对所有service进行重载,然后启动服务,启动之前执行ps -ef | grep redis检查有没有已启动的Redis,如果有执行kill -s QUIT 进程编号 关掉,如果没有直接执行systemctl start redis启动服务,启动后查看服务systemctl status redis
在这里插入图片描述
如果启动失败并出现如下图提示,请把redis.service中的Type=forking注释掉,然后重新执行systemctl daemon-reload重载,然后在执行systemctl start redis启动服务。
在这里插入图片描述
停止服务执行systemctl stop redis命令,然后再执行systemctl status redis查看服务状态
在这里插入图片描述
执行systemctl enable redis让redis服务随着系统开机自动启动
在这里插入图片描述
看到提示为:在multi-user.target.wants分组下面增加了redis.service并指向了最原始的/usr/lib/systemd/system/redis.service,我们将称之为软关联,其用意是只要将服务放在multi-user.target.wants目录中,就自动的将我们redis服务允许随着系统自动启动了。所谓的软关联跟我们的windows系统的快捷方式有点类似。
然后执行命令shutdown -r now进行重启,然后执行systemctl status redis查看服务启动状态为redis服务已经启动成功了。
在这里插入图片描述
如果不希望redis服务随着服务启动就执行systemctl disable redis会把multi-user.target.wants目录下的redis服务软关联移除掉,redis服务也会随着系统启动了。
在这里插入图片描述
可以执行systemctl list-unit-files查看系统所有服务列表,后面有每个服务的状态,enabled表示此服务会随着系统启动,disabled表示不会随着系统启动,static表示本身不会独立的随系统启动,当别的服务启动时如果关联到此服务,就会将其启动。
在这里插入图片描述

三、Linux用户与权限

1、用户

Linux是多用户多任务系统,包含两个概念:用户用户组
用户与账户是同一个概念,用于登录系统与区分资源权限。
用户让系统变的更安全,同时也保护了用户的个人数字资产。

2、用户组

用户组就是将用户分组,隶属用户自动拥有组权限。
一个用户可隶属于多个组,用户可任意切换当前组。
用户组的出现让用户权限管理变更轻松。

3、用户与用户组常用命令

在这里插入图片描述
adduser user1 #添加新用户user1
passwd user1 #给用户user1设置密码
groupadd group1 #添加新的分组
usermod -g group1 user1 #给user1用户设置用户组为group1
groups #查看当前用户的用户组
groups user1 #查看用户user1的用户组

现在再来分析下ll命令列出文件信息
在这里插入图片描述
第一列为当前目录或文件权限,如图
在这里插入图片描述
d代表目录,r代表读,w代表写入,x代表执行

第三列root为当前目录的创建用户,这个目录的属主(拥有者)
第四列root为当前目录所关联的用户组

chown user1:group1 abc #更改abc目录的属主和用户组
在这里插入图片描述

chmod 750 abc #修改abc目录的权限
在这里插入图片描述
目录上不允许写操作是不允许修改名称的意思。

usermod -G group1,group2 user1 #给用户user1同时配置两个用户组 group1,group2
newgrp group2 #将当前用户的当前组该为group2
在这里插入图片描述

4、sudo超级管理员命令

sudo可以让普通用户拥有超级管理员的执行权限。
普通用户要进行经过超级管理员授权才能使用。
授权命令:visudo
首先,在root账户下,执行visudo会打开一个授权相关到文本文件,普通模式下输入100gg快速定位到100行
在这里插入图片描述
然后上图标红的下面加一行user1 ALL=(ALL) ALL再保存,其中第一个ALL表示允许从所有电脑都可以进行连接,第二个ALL表示可以切换所有用户,第三个ALL表示可以执行所有命令。
在这里插入图片描述
保存以后执行visudo -c对这个文件格式检查
在这里插入图片描述
然后在user1账号下可以执行sudo useradd user2等普通用户没有权限操作的命令了,不过每次执行命令后需要输入密码。如果不想每次输入密码,就在visudo里配置为user1 ALL=(ALL) NOPASSWD:ALL。

四、CentOS7防火墙firewall

防火墙是借助硬件和软件对内外部网络环境的保护措施。
CentOS 7基于firewall实现应用层防火墙,CentOS6基于iptables。
firewall-cmd是firewall的核心命令。

1、对外开放Tomcat

首先把下载好的tomcat安装包上传到CentOS里
在这里插入图片描述
然后对这个压缩包进行解压
在这里插入图片描述
然后进入已解压的tomcat的bin目录,执行./startup.sh
在这里插入图片描述
然后执行netstat -tulpn | grep 8080查看如下图表示已经启动成功在这里插入图片描述
可以在虚拟机中找到应用程序,双击点击打开Firefox
在这里插入图片描述
在浏览器地址栏中输入localhost:8080可以访问到tomcat
在这里插入图片描述
但是在windows远程访问tomcat就会失败,因为CentOS防火墙默认对8080端口并没有开放。
在这里插入图片描述
回到Xshell,执行firewall-cmd --state可以查看防火墙状态
在这里插入图片描述
可以执行firewall-cmd --list-ports查看防火墙放行的端口。
在这里插入图片描述
执行firewall-cmd --zone=public --permanent --add-port=8080/tcp命令对8080端口放开。其中zone=public 代表public区域,permanent代表永久生效。
在这里插入图片描述
然后需要执行firewall-cmd --reload重载防火墙才能生效。
在这里插入图片描述
重新运行firewall-cmd --list-ports查看防火墙放行的端口
在这里插入图片描述

这会在windows上远程访问tomcat就能成功
在这里插入图片描述
如果不再需要开发8080端口,执行firewall-cmd --zone=public --permanent --remove-port=8080/tcp然后重载防火墙,可以从防火墙放行的端口移除8080端口。
在这里插入图片描述
可以执行firewall-cmd --zone=public --permanent --add-port=8000-9000/tcp放开8000-9000的所有端口,移除命令反之亦然。

五、Bash Shell

1、什么是Shell

Shell是一个用C语言编写的脚本解释器,是用户通过代码操作Linux的桥梁。
Shell脚本描述要执行的任务,完成系统复杂操作,文件通常以**.sh**后缀。
Shell脚本通过Shell解释器执行,按解释器分类分为多种类型。

2、Linux Shell分类

在这里插入图片描述

3、一键发布Tomcat应用程序

在/usr/local目录下执行vim deploy_tomcat.sh编辑内容如下,其中第二行地址从tomcat官网复制的
在这里插入图片描述
保存后执行chmod 755 deploy_tomcat.sh给文件授执行的权利
在这里插入图片描述
然后执行命令./deploy_tomcat.sh执行脚本
在这里插入图片描述
然后在windows远程访问成功
在这里插入图片描述

六、Linux部署办公OA

1、部署架构

在这里插入图片描述
首先,安装第一台虚拟机,打开VMware,点击创建新的虚拟机,具体安装步骤参考之前的文档,这里把不一样的地方截图了下。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后执行yum install -y net-tools.x86_64安装网络工具(因为CentOS是最小安装,如果不按装net-tools.x86_64的话ifconfig都执行不了)
安装完成后可以执行ifconfig了
在这里插入图片描述
同样的方法安装完成第二个虚拟机,命名为CentOS_WEB

2、CentOS安装MySQL8

首先用XShell连接两个虚拟机,打开CentOS_DB端,执行命令yum search mysql-community,没有找到mysql社区办资源
在这里插入图片描述
浏览器打开MySQL资源官网
https://dev.mysql.com/downloads/repo/yum/
在这里插入图片描述
在No thanks, just start my download.上右键选择复制链接地址在这里插入图片描述
回到XShell,输入wget 后面粘贴我们复制好的地址执行,发现wget不存在,然后安装wget,执行yum install -y wget
在这里插入图片描述
在这里插入图片描述
然后切换到/usr/local目录下,新建mysql目录,切换到该目录,执行wget
在这里插入图片描述
下载完成后当前目录有了mysql的rpm安装包
在这里插入图片描述
然后执行yum localinstall -y mysql80-community-release-el7-6.noarch.rpm
在这里插入图片描述
安装完成后,此时看到mysql的安装源已经被安装到系统了
在这里插入图片描述
然后执行yum search mysql-community就能找到安装源了
在这里插入图片描述
然后执行yum install -y mysql-community-server
在这里插入图片描述
如果下载完成依赖软件包出现了如下图获取GPG秘钥失败,请切换到/etc/yum.repo.d目录。在这里插入图片描述
执行vi mysql-community.repo,把将gpgcheck修改为:gpgcheck=0 保存退出
在这里插入图片描述
然后切换目录到/usr/local/mysql重新执行yum install -y mysql-community-server
在这里插入图片描述
最后看到完毕两字,说明安装成功。
在这里插入图片描述
启动mysql服务,执行systemctl start mysqld没有提示其他信息说明启动成功。
在这里插入图片描述
可以执行netstat -tulpn查看监听网络端口
在这里插入图片描述
也可以执行systemctl status mysqld查看具体mysql服务情况
在这里插入图片描述
执行systemctl enable mysqld将mysql服务设置为开机启动。
在这里插入图片描述
MySQL安装成功后,却不知道root账号密码,需要执行vi /var/log/mysqld.log打开mysql日志,如图所示为初始化密码,复制下来。
在这里插入图片描述
然后执行mysql -uroot -p登录本机mysql,密码输入提示时粘贴刚才复制的密码回车,登录成功。
在这里插入图片描述
然后修改密码,输入alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘1qaz@WSX’;注意这里密码需要有英文数字特殊符号长度大于等于8位。
在这里插入图片描述
其中with mysql_native_password为兼容性考虑,MySQL 8存储密码时默认采用SHA256的方式加密存储,而早期MySQL 5 则是用本地密码表的方式,旧版本Navicat登录MySQL可能不兼容MySQL 8新加密方式,所以添加这个语句让Navicat和MySQL 8更好的兼容。

还有’root’@‘localhost’表示root用户只能在本地登录,为了远程登录并初始化数据库,需要修改root用户允许登录的设备,首先切换到mysql数据,执行use mysql,然后执行select host,user from user;语句。
在这里插入图片描述
host代表这个用户允许登录的主机,需要修改这个值,执行update user set host=’%’ where user=‘root’;语句。%代表任意设备都可以登录root用户。
在这里插入图片描述
为了让root用户权限生效,还得执行下flush privileges;
在这里插入图片描述
设置完后输入exit退出mysql
在这里插入图片描述
然后需要防火墙放行3306端口,执行firewall-cmd --zone=public --permanent --add-port=3306/tcp,然后重载防火墙,执行firewall-cmd --reload
在这里插入图片描述
然后在windows上打开Navicat连接MySQL
在这里插入图片描述
然后创建数据库
在这里插入图片描述
在创建好的数据库上右键选择执行SQL文件,选择从之前做的OA系统的数据库导出的sql文件
在这里插入图片描述
在这里插入图片描述
运行完成后刷新,数据表和数据都有了。
在这里插入图片描述

3、部署配置Web应用服务器

XShell连上CentOS_WEB虚拟机,执行yum search jdk
在这里插入图片描述
可以看到仓库里提供了openjdk(openjdk是Oracle提供的开源jdk),我们执行yum install -y java-1.8.0-openjdk安装
在这里插入图片描述
安装完后我们可以执行java -version看看安装的版本
在这里插入图片描述
也可以执行which java看看安装的位置
在这里插入图片描述
然后我们安装tomcat,打开Xftp把下载好的tomcat安装包上传到/usr/loacal目录下
在这里插入图片描述
然后打开XShell把目录切换到/usr/local下,执行tar zxf apache-tomcat-8.5.81.tar.gz解压
在这里插入图片描述
然后我们对应用程序部署,打开Xftp上传打包好的war包
在这里插入图片描述
然后回到XShell进行解压,执行unzip -d ./apache-tomcat-8.5.81/webapps/oa ao-1.0-SNAPSHOT.war(如果没有unzip命令,请执行yum install -y unzip安装命令组件)
在这里插入图片描述
执行yum install -y vim-common安装vim公共基础包
在这里插入图片描述
安装完后再执行yum install -y vim-enhanced安装vim增强扩展包
在这里插入图片描述
然后执行vim ./oa/WEB-INF/classes/mybatis-config.xml打开MyBatis配置文件,修改数据库配置保存
在这里插入图片描述
然后回到上一层,执行vim ./conf/server.xml
在这里插入图片描述
输入/8080找到端口配置,改成80
在这里插入图片描述
然后再按键盘PgDn找到如下图位置,添加标签保存。
在这里插入图片描述
然后执行./bin/startup.sh启动tomcat,启动后执行netstat -tulpn查看启动端口
在这里插入图片描述
然后防火墙开发80端口在这里插入图片描述
然后在windows上打开浏览器输入ip可以访问了
在这里插入图片描述
最后把CentOS_DB端防火墙放开的3306端口只对CentOS_WEB端放开,首先关闭3306端口的放开,打开XShell连接CentOS_DB端,执行firewall-cmd --zone=public --permanent --remove-port=3306/tcp并重载防火墙
在这里插入图片描述
然后执行firewall-cmd --zone=public --permanent --add-rich-rule="rule family=“ipv4” source address=“192.168.52.130” port protocol=“tcp” port=“3306” accept "并重载防火墙
在这里插入图片描述
然后回到CentOS_WEB端,重启tomcat
在这里插入图片描述
然后在windows浏览器中依然可以访问到应用,但是Navicat却连不上数据库,说明配置成功。


http://www.kler.cn/a/380075.html

相关文章:

  • 全志A133 android10 LVDS幅值调节
  • 鸿蒙网络编程系列42-仓颉版域名解析示例
  • SQL 常用语句
  • Java项目实战II基于Spring Boot的文理医院预约挂号系统的设计与实现(开发文档+数据库+源码)
  • Rust语言有哪些数据类型?
  • AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具
  • Chromium127编译指南 Mac篇(一)- 环境准备详解
  • cuda、pytorch-gpu安装踩坑!!!
  • 【环境搭建】Apache ZooKeeper 3.8.4 Stable
  • 前端与后端长连接 方法
  • 制作简单的下拉悬停菜单的导航栏
  • 写歌词的技巧和方法:构建独特歌词结构的策略,妙笔生词AI智能写歌词软件
  • 如何使用python编写人工智能程序
  • PHP电商供应链ERP管理系统小程序源码
  • Bash 脚本执行权限问题
  • Spring Security 框架篇-深入了解 Spring Security 的授权核心功能(RBAC 权限模型、自定义异常处理器、校验权限方法)
  • 嵌入式开发工程师技术更新方向
  • 基于卷积神经网络的大豆病虫害识别与防治系统,resnet50,mobilenet模型【pytorch框架+python源码】
  • 自动对焦爬山算法原理
  • 【热门主题】000028 JavaScript 网页设计案例:创新与实践
  • C++校园线上点餐系统-计算机设计毕业源码82032
  • 数据库基础(2) . 安装MySQL
  • ruoyi-ui启动运行时,报错Error: error:0308010C:digital envelope routines::unsupported。
  • 62-Java-面试专题(1)__基础
  • C#-数组:一维数组、二维数组、交错数组
  • Linux/Unix awk命令