温馨提示:所有文章中所提及的CentOS相关的案例的安装包和工具,都可以在我的网盘中直接下载并跟着实操:
提取码:aj9p
16.常用设置
16.1 固定虚拟机中的IP地址
在VWware中安装完Centos虚拟机后,我们目前使用的网络连接模式是NAT模式,并且也给配置了网段192.168.177.0,那么虚拟机会给我们随机分配一个在这个网段中的ip地址,但是经常会出现我们更换过网络环境后或是重启过虚拟机后用Xshell就连接不上虚拟机中的Centos系统了,这是因为ip地址发生了变化,可以在VWware虚拟机中用ifconfig 命令来查看变化后的ip地址,然后Xshell更改连接的IP地址就可以重新连上,但这样做显然太麻烦了,所以我们可以在CentOS中配置一个固定的IP地址,无论是否发生网络环境的变更,IP地址都不会发生变化,但前提是配置的固定IP地址也必须满足我们指定的网段192.168.177.0中,且范围要在2~254之间。
#打开ens33网卡的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改配置文件中下列信息
BOOTPROTO="static" #设置静态IP
ONBOOT="yes" #开启网卡
#在配置文件末尾添加下列信息
IPADDR=192.168.177.128 #设置固定的IP
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.177.2 #网关,这个需要和虚拟机网关匹配,虚拟网络编辑器里去看
DNS1=114.114.114.114 #DNS
DNS2=8.8.8.8 #DNS
#重启网络使其生效,三种方式操作都可以
systemctl restart network
systemctl restart network.service
service network restart
#配置完毕后,CentOS的IP地址被固定,不会再发生变化
16.2 设置字符集
如果希望修改当前CentOS7系统的字符集,可以对配置进行更改,zh_CN.UTF-8 表示中文,en_US.UTF-8表示英文
#查看当前的字符集
echo $LANG
Locale
#临时修改字符集
export LANG="zh_CN.UTF-8" #修改为中文
export LANG="en_US.UTF-8" #修改为英文
#永久修改需要更改/etc/profile配置文件,在文件的最后添加如上修改字符集语句即可
vim /etc/profile
source /etc/profile #让配置文件生效
16.3 日期同步工具
ntpdate工具用于对日期进行同步,如果你正在使用的是Minimal ISO版的CentOS7系统,那么需要先装一下ntpdate工具 yum -y install ntp
#如果安装CentOS系统时没有选择 亚洲 上海 时区,那么我们需要手动配置一下
ls -al /etc/localtime #查看当前本地时间所指向的时区
ls -al /usr/share/zoneinfo/Asia/Shanghai #查看亚洲上海时区
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #建立时区软链接
#执行日期同步
ntpdate ntp4.aliyun.com
#Crontab定时同步(30分钟校正一次时间)
*/30 * * * * ntpdate ntp4.aliyun.com
16.4 Man手册中文化
大部分的CentOS7系统的Man帮助命令都是英文描述,不便于我们阅读,我们可以自行将Man手册进行汉化,GitHub地址: github.com/man-pages-z…,某些命令可能不支持翻译成中文
#安装汉化工具
yum -y install man-pages-zh-CN
#在/etc/profile文件最下面添加配置
vim /etc/profile
alias cman="man -M /usr/share/man/zh_CN"
#使环境变量即时生效
source /etc/profile
17.常用软件安装
17.1 安装JDK
-
下载JDK,地址:www.oracle.com/technetwork…,(也可以用网盘里我们准备好的)
-
在根目录下创建文件夹/soft,并将JDK压缩包上传到CentOS7中
-
卸载我们本机自带的openjdk
yum list installed | grep openjdk yum remove java-1.8.0-openjdk.x86_64 -
解压到
/usr/local目录下tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local -
对解压后的文件进行授权
chown root:root -R jdk1.8.0_121/ -
配置环境变量
#编辑环境变量配置文件 vi /etc/profile #在文件末尾加入下面代码,并保存 export JAVA_HOME=/usr/local/jdk1.8.0_121 export PATH=$JAVA_HOME/bin:$PATH #使环境变量即时生效 source /etc/profile -
测试环境变量是否生效
java -version
17.2 安装Tomcat
-
下载Tomcat,地址:tomcat.apache.org/ 或者使用wget命令
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.64/bin/apache-tomcat-9.0.64.tar.gz -
在根目录下创建文件夹/soft,并将Tomcat压缩包上传到CentOS7中
-
解压到
/usr/local目录下tar -zxvf apache-tomcat-9.0.64.tar.gz -C /usr/local -
进入解压好的Tomcat目录中,在conf目录下,配置server.xml
#打开配置文件 vim server.xml #修改端口和编码,并保存退出 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> -
启动Tomcat
#进入tomcat的bin目录下 ./startup.sh #然后可以进入tomcat的logs目录下输入 tail -f catalina.out 打印启动控制台 -
查看Tomcat是否启动成功
ps -ef | grep tomcat -
测试Tomcat是否可以访问
在浏览器输入IP地址和端口,出现tomcat的猫即成功,例如:
http://192.168.177.128:8080如果没有办法访问,可能是防火墙问题,快速关闭下防火墙
#查看防火墙状态 systemctl status firewalld #关闭防火墙 systemctl stop firewalld #让防火墙禁用 systemctl disable firewalld
17.3 安装MySQL
-
下载MySQL,地址:dev.mysql.com/downloads/m…(也可以用网盘里我们准备好的)
-
检查CentOS7环境是否安装了mariadb数据库
yum list installed | grep mariadb #如果CentOS7中安装了mariadb数据库,先卸载掉,mariadb数据库与mysql数据库会发生冲突 yum -y remove mariadb-libs.x86_64 -
在根目录下创建文件夹/soft,并将MySQL压缩包上传到CentOS7中
-
解压到
/usr/local目录下tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz -C /usr/local -
将解压好的
mysql-5.7.11-linux-glibc2.5-x86_64改名为mysqlcd /usr/local mv mysql-5.7.11-linux-glibc2.5-x86_64 mysql -
在
mysql文件夹目录下创建一个/data/3306文件夹mkdir -p mysql/data/3306 -
添加mysql用户及用户组
groupadd mysql useradd -g mysql mysql -
切换到
mysql/bin目录下执行初始化./mysqld --initialize-insecure --user=mysql --datadir=/usr/local/mysql/data/3306 --basedir=/usr/local/mysql #执行mysqld文件进行初始化,其中: --initialize-insecure #指的是在初始化的时候不设置临时密码 --user #指定用户账mysql --datadir #指定mysql的数据存储目录 --basedir #指定mysql的解压目录 -
创建SSL安全连接
#在mysql/bin目录下执行 ./mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data/3306 #mysql_ssl_rsa_setup程序用于创建SSL证书和密钥文件以及RSA密钥对文件,以支持使用SSL的安全连接 -
更改mysql整个文件夹目录权限所属
chown -R mysql:mysql /usr/local/mysql
-
在
mysql/data/3306目录下创建my.cnf文件,并添加如下配置[client] port=3306 socket=/usr/local/mysql/data/3306/mysql.sock default-character-set=utf8 [mysqld] port=3306 socket=/usr/local/mysql/data/3306/mysql.sock datadir=/usr/local/mysql/data/3306 log-error=/usr/local/mysql/data/3306/error.log pid-file=/usr/local/mysql/data/3306/mysql.pid character-set-server=utf8 lower_case_table_names=1 autocommit=1 #在上述配置文件中[clinet]代表配置MySQL客户端连接时的相关配置 port #指定客户端连接服务端时的端口号,默认端口也是3306 socket #指定套接字文件的所在目录 default-character-set #设置MySQL客户端连接时的字符集 #[mysqld]带表MySQL服务的相关配置 port #服务端的端口号,默认为3306 socket #指定套接字文件的所在目录 datadir #指定mysql的数据存储路径 log-error #指定错误日志的存储路径 pid-file #指定进程文件的存储路径 character-set-server #设置服务端的字符集 lower_case_table_names #忽略SQL语法大小写检测 autocommit #开启自动提交 -
启动MySQL服务
#在mysql/bin目录下执行 ./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf & #&号表示后台启动 #验证mysql是否正常启动 ps -ef | grep mysql -
使用客户端登录mysql
#在mysql/bin目录下执行 ./mysql -uroot -p -P3306 -h127.0.0.1 -u #指定登录账号 -p #指定登录密码 -P #指定端口号 -h #指定连接IP地址 -
修改mysql密码
alter user 'root'@'localhost' identified by '123456'; #其中123456是我们设置的密码 -
开启远程访问,默认MySQL是不允许进行远程客户端访问的
#授权远程访问 grant all privileges on *.* to root@'%' identified by '123456'; #其中*.* 的第一个*表示所有数据库名,第二个*表示所有的数据库表,root@'%' 中的root表示用户名,%表示任意ip地址,%也可以指定具体的ip地址,比如root@localhost,root@192.168.177.128 #刷新权限 flush privileges; -
关闭防火墙
#查看防火墙状态 systemctl status firewalld #关闭防火墙 systemctl stop firewalld #让防火墙禁用 systemctl disable firewalld -
配置全局mysql命令
#在/etc/profile文件中添加环境变量 vim /etc/profile export MYSQL_HOME=/usr/local/mysql export PATH=$MYSQL_HOME/bin:$PATH #使环境变量生效 source /etc/profile #之后在任意目录下,都可以使用mysql -uroot -p -P3306 -h127.0.0.1来进行mysql登录 -
添加开启启动mysql服务
#拷贝mysql.server服务文件到/etc/init.d/mysqld目录下 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld #编辑mysqld文件 vim /etc/init.d/mysqld #在46行添加 basedir=/usr/local/mysql datadir=/usr/local/mysql/data/3306 #添加开机启动 systemctl enable mysqld #检查是否添加成功 chkconfig #取消开机启动 systemctl disable mysqld -
关闭MySQL服务
#在mysql-5.7.11/bin目录下执行 ./mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown
17.4 安装FTP服务
FTP 是一种指的文件传输协议,用于Internet上的文件的双向传输,它也是一个应用程序,基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用过程中,主要是实现“下载”和"上传"
-
安装FTP
Linux下实现FTP服务的软件很多,最常见的有
vsftpd,Wu-ftpd和Proftp等,Red Hat Enterprise Linux中默认安装的是vsftpd. 所以这里我们也采用vsftpdyum -y install vsftpd #主程序:/usr/sbin/vsftpd #主配置文件:/etc/vsftpd/vsftpd.conf #数据根目录:/var/ftp #安装完成后,配置文件位于/etc/vsftpd 目录下 #FTP服务器主要有三个配置文件,都位于/etc/vsftpd目录下 ftpusers #用来指定哪些用户不能访问 ftp 服务器;(黑名单) user_list #该文件中的用户是否可以登录到FTP服务器取决于vsftpd.conf文件中的userlist_enable和userlist_deny两个选项 vsftpd.conf #该文件为FTP服务器的主配置文件 -
配置匿名用户访问FTP
#打开 vsftpd.conf vim /etc/vsftpd/vsftpd.conf #将如下选项设置为YES,这样便实现匿名用户上传和下载文件 anonymous_enable=YES anon_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES采用匿名开放模式登录FTP开放的参数说明:
参数 作用 anonymous_enable YES允许匿名访问,NO不允许匿名访问 anon_umask 匿名用户上传文件的umask值 anon_upload_enable YES允许匿名用户上传文件,NO不允许匿名用户上传文件 anon_mkdir_write_enable YES允许匿名用户创建目录,NO不允许匿名用户创建目录 anon_other_write_enable YES允许匿名用户修改目录名称或删除目录,NO不允许匿名用户修改目录名称或删除目录 下面单独说明下anon_umask=022这里的含义,umask指的是我们在创建一个目录或者文件时候赋予它们的初始权限。umask的权限计算规则如下:
在Centos中,新增的目录的最大权限为777,那么减去022,就得到755的权限
新增的文本文件最大权限为666,那么减去022,就得到644权限
其中:r代表读权限,用数字4表示,w代表写权限,用数字2表示,x代表执行权限,用数字1表示
那么目录文件最终的权限表示为:rwxr-xr-x,文本文件最终权限表示为:rw-r--r--
如果我们不指定匿名用户的umask值为022的话,ftp默认就会给匿名用户设置umask值为077,也就是说最终匿名用户上传的文件的权限会变为600,即为:rw-------,那么我们就没有办法使用匿名用户来下载ftp中的文件了,因为没有读取权限
-
设置SELinux服务
SELinux是Linux的一个安全子系统,其作用是最大限度地减小系统服务进程可访问的资源,即最小权限原则
#查看SELinux状态,如果SELinux status参数为enabled即为开启状态 /usr/sbin/sestatus -v #关闭SELinux,修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled vim /etc/selinux/config #修改配置文件需要重启系统 reboot -
重启FTP服务
重启过系统之后,我们需要重新启动FTP服务
#检查FTP状态 systemctl status vsftpd.service #启动FTP服务 systemctl start vsftpd.service #重启FTP服务 systemctl restart vsftpd.service #停止FTP服务 systemctl stop vsftpd.service #让FTP服务可用 systemctl enable vsftpd.service #让FTP服务禁用 systemctl disable vsftpd.service -
在Windows上测试FTP功能
#在Windows任意电脑磁盘中,输入如下地址 ftp://192.168.177.128/如出现pub文件夹说明访问成功,如没出现就要看下防火墙问题
#查看防火墙状态 systemctl status firewalld #关闭防火墙 systemctl stop firewalld #让防火墙禁用 systemctl disable firewalld尝试在Windows电脑上传一个文件到Linux的FTP服务中,如果上传失败,则是权限不足
#修改ftp目录的所属权,安装好ftp服务后,默认会给我们创建ftp用户和组 chown -R ftp:ftp /var/ftp/pub/ #赋予/var/ftp/pub目录读写权限 chmod -R 777 /var/ftp/pub -
在另一台CentOS7上访问FTP服务
#安装FTP命令 yum -y install ftp #连接FTP ftp 192.168.177.128 #输入连接用户名,密码不用输入,直接回车 ftp #切换到pub目录下 cd pub #ftp中用lcd切换本地路径,用cd切换远程服务器的路径: cd 目录名(进入服务器目录) lcd目录名(进入本机目录) cd \(退到服务器根目录) lcd \(退到本机根目录) cd ..(退回到上一级目录) lcd ..(退回到上一级目录) #上传文件 put 文件名 #下载文件 get 文件名 -
配置非匿名用户访问FTP
#修改配置文件 vim /etc/vsftpd/vsftpd.conf #先将匿名用户访问关掉 anonymous_enable=NO #在配置文件末尾开启白名单访问 userlist_enable=YES userlist_deny=NO local_root=/var/ftp/pub采用系统用户登录FTP的参数说明:
参数 作用 userlist_enable YES代表启用user_list文件功能,NO代表user_list文件功能无效 userlist_deny YES代表user_list文件中的用户不能访问(该配置不配置时默认也为YES),NO代表user_list文件中的用户才可以访问 local_root 设置用户登录时,默认的访问目录(如不设置,默认访问的是登录用户的home目录) -
配置白名单用户
#修改白名单列表 vim /etc/vsftpd/user_list #在文件末尾添加白名单访问账号 test anonymous #注意这里的test代表的是添加的白名单用户,而anonymous代表的是匿名用户,但这里的匿名用户指的不是所有用户,而是指代的任何所有用户访问ftp服务时,都可以正确弹框要求输入用户账号和密码来进行ftp访问,如不配置此选项,则在windows系统或其他linux系统中访问ftp服务时将无权访问,也不能输入用户账号和密码。 -
使白名单生效
#重启ftp服务即可 systemctl restart vsftpd.service
18.部署SpringBoot项目
我们在安装完毕JDK,MySQL,Tomcat等软件后,可以尝试部署一个单体SpringBoot项目,项目的源码和打包后的文件都附在了资料中,通常我们部署SpirngBoot项目有两种方式,第一种方式是将SpringBoot项目打包成jar包来进行部署,利用其内嵌的tomcat来运行项目。第二种方式是将SpringBoot项目打包成war包,利用自己安装的Tomcat来进行部署,并运行项目
18.1 jar包部署项目
-
将项目进行打包(也可以使用打包好的jar包)
将项目pom.xml文件中的打包方式修改为jar
<groupId>com.java</groupId> <artifactId>JXC</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging>点击右上角
Maven按钮,选择Lifecycle->package进行打包,出现BUILD SUCCESS即为打包成功 -
上传打包好的jar包
在
target目录下找到打包好的JXC.jar,鼠标右键,选择Open In->Explorer就可以找到我们磁盘上的JXC.jar包了 -
上传JXC.jar到CentOS系统中
创建
/usr/local/java文件夹,并将JXC.jar上传到文件夹中#创建文件夹 mkdir -p /usr/local/java -
确保JDK安装完毕,MySQL应用正常启动
可以参考文档17.1、17.3章节安装JDK和MySQL数据库
-
导入数据库数据
在Windows中使用SQLyog连接CentOS7系统中的数据库,并将
jxc.sql文件中的数据库语句进行导入,出现数据库db_jxc和具体的表即导入成功 -
启动Java程序
在
/usr/local/java中运行JXC.jar#进入java目录 cd /usr/local/java #运行jar包 nohup java -jar JXC.jar > JXC.log & #上面的参数的含义如下: nohup #代表不挂断启动 java -jar #执行java程序,需要jdk的支持 JXC.jar #要启动的jar包 > JXC.log #将Tomcat的启动日志,重定向输出到JXC.log文件中 & #后台启动 #查看启动日志 tail -f JXC.log #查看进程 ps -ef | grep java #关闭程序 kill -9 进程号 -
在Windows浏览器中进行访问测试
访问如下地址,访问后如出现如下登录页面,则部署成功,登录账号:
admin,登录密码:admin123http://192.168.177.128:80/login.html
18.2 war包部署项目
-
将项目进行打包(也可以使用打包好的war包)
将项目pom.xml文件中的打包方式修改为war
<groupId>com.java</groupId> <artifactId>JXC</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging>点击右上角
Maven按钮,选择Lifecycle->package进行打包,出现BUILD SUCCESS即为打包成功 -
上传打包好的jar包
在
target目录下找到打包好的JXC.jar,鼠标右键,选择Open In->Explorer就可以找到我们磁盘上的JXC.war包了 -
确保JDK安装完毕,Tomcat安装完毕,MySQL应用正常启动
可以参考文档17.1、17.2、17.3章节安装JDK、Tomcat和MySQL数据库
-
上传JXC.war到CentOS系统中
将JXC.war上传至/usr/local/apache-tomcat-9.0.64/webapps目录下
-
修改Tomcat配置文件
#打开server.xml配置文件 vim /usr/local/apache-tomcat-9.0.64/conf/server.xml #修改端口号为80 <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> #在文件末尾指定上下文访问路径 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="/" docBase="JXC" debug="0" reloadable="true" crossContext="true"/> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> -
导入数据库数据
在Windows中使用SQLyog连接CentOS7系统中的数据库,并将
jxc.sql文件中的数据库语句进行导入,出现数据库db_jxc和具体的表即导入成功 -
启动Tomcat程序
#进入到tomcat安装目录的bin目录下 cd /usr/local/apache-tomcat-9.0.64/bin #执行启动命令 ./startup.sh #查看启动日志 cd /usr/local/apache-tomcat-9.0.64/logs tail -f catalina.out #查看进程 ps -ef | grep tomcat #关闭程序 kill -9 进程号 -
在Windows浏览器中进行访问测试
访问如下地址,访问后如出现如下登录页面,则部署成功,登录账号:
admin,登录密码:admin123http://192.168.177.128:80/login.html
19.运行机制介绍
19.1 init系统
Linux系统启动的时候,会先从BIOS开始,接下来引导程序将内核加载到内存,进行内核初始化,内核初始化最后一步就是启动PID为1的init进程,这个进程负责产生其他所有用户进程,仅仅将内核启动起来是毫无用途的,因此需要一个系统能够定义,管理,和控制init进程,这个系统就是init系统,在CentOs中默认采用systemd来管理系统,systemd是init系统的进化版。
19.2 runlevel到target的改变
Windows中有安全模式和正常运行模式,同样Linux也有运行级别之分,sysinit用“runlevel”来定义系统的运行级别,CentsOS的运行级别定义为:0表示关机,1表示单用户模式,6表示重启,2表示多用户模式,不支出文件共享,3表示完全多用户模式,支持文件共享,默认登录到系统字符界面,4表示基本不用的用户模式,5表示完全多用户模式,支出文件共享,默认登录到图形界面,这些运行级别均在/etc/inittab文件中指定,程序通过查看文件中是否含有initdefault项来决定启动哪一个运行级别,在CentOS中由于采用了systemed管理体系,runlevel的概念就被target概念所取代,例如runlevel3对于新的多目标用户为multi-user.target,通过软链接来实现
19.3 修改默认target
#查看默认的target
ls -l /etc/systemd/system/default.target
#查询运行级别与target的对应关系
ls -l /lib/systemd/system/runlevel*.target
#根据查询的对应关系,来修改系统默认的target,可以先删除存在的软链接,然后重新建立软连接指向到其他target即可,例如我们把运行级别修改为3,即多完全多用户模式,默认登录到字符界面
rm -rf /etc/systemd/system/default.target
ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target
#重启系统生效
reboot