服务器技术(二)--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却连不上数据库,说明配置成功。