linux 配置教程
相信每个最先接触的是windows操作系统吧,而且用了那么多年,已经成为了习惯,但是由于工作需要,要接触linux系统,而且刚开始接触一般是选择虚拟机来安装linux;
linux系统有很多派系而且每个派系还有一众小弟,但是企业用的linux服务器的数量就很少了; 像什么cent os,ubuntu os
,opensuse 服务器版,这些系统共同的特点就是比较稳定,但也有一个缺点就是更新比较慢; 毕竟稳字当先;
web配置
这里以centos8为例—虽然现在已经停止维护了,但基本配置思路是一样的;
[zzy@192 ]$ sudo vi /etc/sysconfig/network-scripts/ifcfg-ens160
初始配置如下
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens160
UUID=a5a5e1cb-e1c0-4a57-a657-5c8c89541524
DEVICE=ens160
ONBOOT=yes
修改的内容有
1,BOOTPROTO=dhcp 改为static —静态;避免每次的IP地址都不一样;
2,去掉UUID行
3,添加
IPADDR=192.168.135.145
NETMASK=255.255.255.0
GATEWAY=192.168.135.2
DNS1=114.114.114.114
最后修改后的结果如下
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.135.145
NETMASK=255.255.255.0
GATEWAY=192.168.135.2
DNS1=114.114.114.114
然后使得该配置生效—
source /etc/sysconfig/network-scripts/ifcfg-ens160
查看ip 地址
[zzy@localhost ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:88:15:68 brd ff:ff:ff:ff:ff:ff
inet 192.168.135.145/24 brd 192.168.135.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet6 fe80::994e:beda:757e:3b6a/64 scope link noprefixroute
valid_lft forever preferred_lft forever
如果跟自己配置的不一样,别着急,可能当时配置的并没有生效,在centos8 里可以重启一下网络服务
systemctl restart NetworkManager
这里提一下配置网络的基本原理---->>
网络连接模式
host-onboy(主机模式)
在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-onboy模式。
在host-onboy模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
在host-onboy模式下,虚拟系统的TCP/IP配置信息都是由VMnet1(host-onboy)虚拟网络的DHCP服务器来动态分配的
bridged(桥接模式)
VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。
使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。
当前主机IP 为 192.168.8.100 虚拟机 192.168.8.xxx
那如果用外部软件来连接虚拟机,那么这种模式是访问不到的,因为在同一个网段,路由的时候路由不到该虚拟机;
NAT(网络地址转换模式)
使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。
NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的虚 拟系统也就无法和本局域网中的其他真实主机进行通讯
JDK的安装
查找一下java软件
[root@localhost ~]# yum search java
你会看到java所有的软件
选一个进行安装(软件右面有提示说明这个软件是做什么的)
如果网络慢的话,那就可以修改一下数据源;
(这个跟你在哪里下载的系统有关,我是在阿里云下载的,所以系统默认软件源为ali云,如果是中科大那系统默认源就是中科大,官网则是官方源)
验证一下
[root@localhost ~]# java version
Error: Could not find or load main class version
Caused by: java.lang.ClassNotFoundException: version
[root@localhost ~]# java -version
openjdk version "11.0.13" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)
[root@localhost ~]# javac -version
javac 11.0.13
接着是jdk环境的配置
找到jdk安装目录;
[root@localhost profile.d]# whereis java
java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/share/man/man1/java.1.gz
[root@localhost profile.d]#
这就很懵逼了 哪一个才是呢?带有bin的?都带有bin文件夹呀,真假美猴王在上演?
别着急,使出照妖镜----
元神在这里,高兴的去找它,你会发现这货并不是
[root@localhost bin]# which java
/bin/java
在照一下
[root@localhost /]# ls -lr /usr/bin/java
lrwxrwxrwx. 1 root root 22 Jan 2 23:56 /usr/bin/java -> /etc/alternatives/java
这个也不是,那就再照一下
[root@localhost /]# ls -lrt /etc/alternatives/java
lrwxrwxrwx. 1 root root 64 Jan 2 23:56 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64/bin/java
[root@localhost /]#
这回没跑了吧—>配置一下javahome
但是这样后期不太方便维护,还是下载到本地的压缩包配置比较容易维护
这里提供一下本地安装的配置文件
mysql的安装
跟jdk开发环境软件安装思路一致,
去官网下载对应的mysql版本
然后解压到 /usr/local
然后配置一下变量环境—
在/etc/profile.d 下新建一个文件 mysql.sh
添加变量
Linux (centos8)安装 MySQL 8 数据库
tomcat,mavenp配置思路也是一样的,先去官网下载对应版本的安装包,然后解压到
/usr/local 文件夹下
之后配置环境变量
这是一些环境变量可以在里面增加一些自己的环境变量
之后进入 /usr/local 目录下,创建用户和用户组并授权---->>
这一步是必要的,不然mysql只会在root权限下运行,不便于使用
注意 ----要进入 /usr/local 目录下在操作
[root@localhost local]# groupadd mysql ----增加用组mysql
[root@localhost local]# useradd -r -g mysql mysql ---在mysql用户组中添加用户
授权---->
[root@localhost local]# cd mysql/ ---相当于选中mysql文件夹下所有文件
[root@localhost mysql]# chown -R mysql:mysql ./ 授权所有文件
查看是否成功---->>
[root@localhost mysql]# ll
total 284
drwxr-xr-x. 2 mysql mysql 4096 Sep 28 07:42 bin
drwxr-xr-x. 2 mysql mysql 55 Sep 28 07:41 docs
drwxr-xr-x. 3 mysql mysql 282 Sep 28 07:41 include
drwxr-xr-x. 6 mysql mysql 201 Sep 28 07:42 lib
-rw-r--r--. 1 mysql mysql 276550 Sep 28 04:46 LICENSE
drwxr-xr-x. 4 mysql mysql 30 Sep 28 07:41 man
-rw-r--r--. 1 mysql mysql 666 Sep 28 04:46 README
drwxr-xr-x. 28 mysql mysql 4096 Sep 28 07:42 share
drwxr-xr-x. 2 mysql mysql 77 Sep 28 07:42 support-files
[root@localhost mysql]# ll
配置一下mysql数据存放位置
在 /usr/local/mysql 文件夹下建立一个数据存放区 data
[root@localhost mysql]# mkdir data
[root@localhost mysql]# ls
初始化数据库
[root@localhost mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
会出现下面的内容,说明操作正确;
由于之前操作了mysql文件夹下所有文件的归属者为 mysql组下的mysql,这样做是为了能够使得mysql初始化时有权限能够生成相应的必要文件,配置结束后就要收回权限,
但是data文件夹的权限保留,不然怎么写入数据库
所以要修改一下data这个文件夹的权限
还是要进入 /usr/local/mysql目录下
[root@localhost mysql]# chown -R root:root ./
[root@localhost mysql]# chown -R mysql:mysql data
[root@localhost mysql]# ll
```![在这里插入图片描述](https://img-blog.csdnimg.cn/5e959bca69e443bf837ff2a7c64a3cd0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAR2F2aW5fTGlt,size_20,color_FFFFFF,t_70,g_se,x_16)
在 /usr/local/mysql/support-files下创建my.cnf配置文件
```bash
root@localhost support-files]# touch my-default.cnf ----创建一个默认配置文件为空
[root@localhost support-files]# chmod 777 ./my-default.cnf ---授予权限
回到上级目录
[root@localhost support-files]# cd ..
[root@localhost mysql]# cp support-files/my-default.cnf /etc/my.cnf
---复制到etc目录下,并重命名
[root@localhost mysql]# cd /etc
---查看是否操作成功
[root@localhost etc]# ls | grep my.cnf
my.cnf
[root@localhost etc]#
接着配置my.cnf
vi my.cnf
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
[mysql]
socket=/var/lib/mysql/mysql.sock
[mysqld]
port=3306
user=mysql
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=/usr/local/mysql/data/error.log
pid-file=/usr/local/mysql/data/mysql.pid
transaction_isolation=READ-COMMITTED
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
lower_case_table_names=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
设置一下开机自启
[root@localhost etc]# cd /usr/local/mysql/support-files
[root@localhost support-files]# cp mysql.server /etc/init.d/mysql
[root@localhost support-files]# chmod +x /etc/init.d/mysql
[root@localhost support-files]#
# chkconfig --add mysql
验证一下
[root@localhost support-files]# chkconfig --list mysql
Note: This output shows SysV services only and does not include native
systemd services. SysV configuration data might be overridden by native
systemd configuration.
If you want to list systemd services use 'systemctl list-unit-files'.
To see services enabled on particular target use
'systemctl list-dependencies [target]'.
mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
配置自启动路径
[root@localhost support-files]# vim /etc/ld.so.conf
添加如下内容
在启动过程中可能会遇到一些小小的配置错误
比如我遇到了
[root@localhost etc]# service mysql start
Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysql.pid).
问题出现的原因就是没有在/usr/loacl/mysql/support-files 目录下进行授权,所以my-default.cnf之前的权限是这样的
[root@localhost support-files]# chmod 777 ./my-default.cnf`
—授予权限之后
这个操作之后在重复执行后续步骤
额…还是报错,复制过去之后的文件权限 还是 -rw-r–r--
可能是复制过去的文件夹不和源文件夹权限相同吧,(暂且不管它)
没办法,只能在etc 文件夹下再次授权my.cnf
之后,可以正常启动mysql了
[root@localhost bin]# systemctl start mysqld.service
[root@localhost bin]# systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2022-01-03 23:30:43 PST; 12s ago
Process: 46474 ExecStopPost=/usr/libexec/mysql-wait-stop (code=exited, status=0/SUCCESS)
Process: 47929 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
Process: 47802 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
Process: 47777 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Main PID: 47884 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 23516)
Memory: 452.9M
CGroup: /system.slice/mysqld.service
└─47884 /usr/libexec/mysqld --basedir=/usr
登录用户root密码是之前随机生成的,相信你已经记录下来了,如果没有,那么可以在/usr/local/mysql/data/mysql.log日志文件中找到
登陆时出现一个警告---->>
[root@localhost etc]# mysql -uroot -hlocalhost -p
mysql: [Warning] World-writable config file '/etc/my.cnf' is ignored.
Enter password:
这表示my.cnf配置文件任何人都可以读写,那不行,既然mysql可以正常启动了,那么就要 杯酒释兵权呀,将权限修改回来
[root@localhost etc]# chmod 644 my.cnf
改回来之后重启又报错了---->>
[root@localhost etc]# service mysql start
Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/mysql.pid).
[root@localhost etc]#
说名 权限改的不太对,改回644又无法登录,索性先将用户配置去掉,
找到默认的my.cnf配置文件
[root@localhost etc]# which mysql
/usr/local/mysql/bin/mysql
[root@localhost etc]# /usr/local/mysql/bin/mysql --verbose --help | grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf /usr/local/mysql/my.cnf ~/.my.cnf
[root@localhost etc]#
可以看到配置文件默认的加载书顺序,
首先读取/etc/my.cnf,没有的话再去读取/etc/mysql/my.cnf 以此类推
于是乎我就挨个目录去找,发现所有的文件夹下都没有my.cnf 配置文件,
这个权限真的不知道怎么处理了,
于是我就想那它默认加载的配置在那个文件夹中?
[root@localhost mysql]# locate my.cnf
/etc/my.cnf
[root@localhost mysql]# cd /etc
[root@localhost etc]# ll my.cnf
ls: cannot access 'my.cnf': No such file or directory
好家伙,就在/etc/my.cnf,但是这个etc下又没有这个配置文件(刚刚被我重命名了,以防生效)
目前只有从权限方面入手了;
试了775,不好使, 好像只有777 好使也不能说好使,是mysql服务器直接忽略了这个配置,
如果不是777,那么就会报 …pid not update之类的错误;
暂时没有找到更好的解决方式,还请遇到这种情况的大佬给个解决方案
tomcat 与maven配置
这个就简单了,下载软件解压到指定文件夹
配置一下变量环境