linux 服务初始化

0 linux推荐学习地址

C语言教程_linux教程: https://c.biancheng.net/linux_tutorial

1 linux 网络配置

基本概念

配置

基本命令

不同的linux系统命令系统有所不同,网络命令也有区别ifconfig是老命令,ip addr是新命令…

查看本机网络信息

常用命令

ifconfig

常见操作

2 linux 基本常识

用户基本操作

添加用户的一系列操作

需要注意,添加用户需要root权限,来操作/home文件夹,以及更新用户信息

添加用户命令 adduser 和 useradd

adduser常用方式
1
2
sudo adduser (1)
# (1)占位 表示input用户名

解释:
这个命令会直接用默认值创建一个用户,包括密码用户目录等等

所以这个命令就是快捷,很省事

默认值:

adduser在创建用户时会主动调用 /etc/adduser.conf
用户主目录时默认在/home下,而且创建为 /home/用户名

如果主目录已经存在,就不再创建,但是此主目录虽然作为新用户的主目录,而且默认登录时会进入这个目录下,但是这个目录并不是属于新用户,当使用userdel删除新用户时,并不会删除这个主目录,因为这个主目录在创建前已经存在且并不属于这个用户。

为用户指定shell版本为:/bin/bash

更多信息请见: https://blog.csdn.net/Dontla/article/details/128723451

useradd常用方式

这个命令往往被映射成adduser

修改用户密码 passwd命令

当我们创建一个新的用户之后,往往是默认的密码,我们需要重置一下自己的密码

可以在root权限下使用passwd命令修改用户密码

1
2
3
sudo passwd (1)
#(1) 代表要修改的用户名

获取用户列表 cat /etc/passwd

这个命令会显示系统中的所有用户信息,包括用户名、用户ID、用户组ID、用户家目录等。用户信息以冒号分隔。

不需要root权限

1
sudo cat /etc/password

删除和修改用户

删除命令 userdel

需要在root权限下进行

linux版本和安装包

查看linux版本的几种程度

  1. 查看发行版
1
cat /proc/version 
  1. 查看linux内核
1
uname -a

版本常识

el表示该安装包适用于 CentOS 和 Red Hat Enterprise Linux (RHEL) 版本的操作系统。”el”意指”Enterprise Linux”。

x86_64:表示该安装包适用于 64 位操作系统。

i386: 表示32位的

armv7l: 表示arm架构

glibc2.12: 表示该安装包采用 glibc2.12 库

要查看glibc(GNU C库)的版本号,可以使用以下命令:

ldd –version

安装包常识

https://c.biancheng.net/linux_tutorial

3 linux 基本的编程环境安装

Java环境配置

下载得到jdk在linux上的tar压缩包之后,将文件解压到/usr/local/java文件夹里(这里主要放指的是共享文件应用)

1
2
tar -zxvf (tar filepath) -C (goal path)
# 这是解压命令

第二步配置环境变量,一般是在/etc/profile文件中配置的,这个是全局配置文件,所有用户都可以使用这个配置文件(而不是修改)

1
2
3
4
5
6
7
8
sudo vim /etc/profile
# 使用root权限编辑
#-------- 下面是编辑 profile文件环境变量的形式 ----
export JAVA_HOME=/usr/local/java/jdk-11
export PATH=$JAVA_HOME/BIN:$PATH
# 也可以再配置一个classpath
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

可以看到基本的语法 就是:

  1. export 起手表示声明了一个环境变量
  2. 单词=路径 表示创建了一个变量
  3. export 变量 表示将变量声明成环境变量
  4. 路径中通过$变量名实现对于变量的引用
  5. 路径中使用:分割不同的路径

第三步 更新当前环境中的配置信息

也就是说编辑好了配置文件不会立即生效,我们重启操作系统才会生效

为了立即生效我们需要运行命令

1
2
3
4
5
# 先切换成root 使用 sudo也是不行的只能是root用户
su
...
# 执行更新命令
source /etc/profile

第四步 测试jdk

1
2
3
4
5
6
java -verison
# 如果显示下面内容表示成功
#java version "11" 2018-09-25
#Java(TM) SE Runtime Environment 18.9 (build 11+28)
#Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11+28, mixed mode)

4 linux 常见服务安装

tomcat安装

获取到tomcat的linux安装包之后,在/usr/local/中创建tomcat目录,解压tar -zxvf (filepath) -C (goal path)

完成之后

启动tomcat

使用tomcat安装目录中的bin目录下的startup.sh文件即可运行

1
2
3
4
5
6
7
8
# 运行后的输出
Using CATALINA_BASE: /usr/local/tomcat/tomcat-9
Using CATALINA_HOME: /usr/local/tomcat/tomcat-9
Using CATALINA_TMPDIR: /usr/local/tomcat/tomcat-9/temp
Using JRE_HOME: /usr/local/java/jdk-11
Using CLASSPATH: /usr/local/tomcat/tomcat-9/bin/bootstrap.jar:/usr/local/tomcat/tomcat-9/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

访问tomcat

tomcat默认的端口号是8080

所以在浏览器地址栏中访问: ip:8080即可

注意

需要保证网络,例如安全组端口是否打开等方面

mysql安装

mysql在linux上的安装比较复杂,所以只需要理解含义即可

在下载好mysql在linux上的的安装包之后,需要解压到指定目录

第一步 创建目录结构并解压到

因为mysql有一些默认配置文件,这些配置文件中默认我们的mysql安装目录是/usr/local/mysql

所以如果不想要麻烦的话最好将mysql解压到这里,这样我们就能直接使用mysql中的自带的配置文件

最好的方法是将压缩包解压到/usr/local目录下,最后改名一下解压后的目录为mysql就行了

1
2
3
4
tar -zxvf (filepath) -C (goalpath)
...
mv mysql-5.7.27-linux-glibc2.12-x86_64/ mysql
# ok 现在就是这样的目录结构

第二步 配置mysql用户组保证权限

需要有一个用户mysql(当然这个名字可以不是mysql,意思就是这个用户专门用来管理mysql)

1
2
3
4
5
6
7
# 添加用户组
groupadd mysql
# 添加用户并加上密码加入组mysql(实际上如果直接创建mysql用户会自动创建一个同名的组)
adduser -g mysql mysql
# 配置密码
passwd mysql
...

注意,下面所有的文件都需要使用mysql权限,这样mysql程序才能够正常使用这些文件和目录

第三步 添加数据库的配置文件,数据库会根据配置文件进行运行

之前提到了,数据库有一些默认值,就比如这里的配置文件位置,默认是/etc/my.cnf文件,mysql会去尝试检索并读取这个文件,如果文件不存在或者无法访问(例如权限不够的情况)就会导致数据库无法启动

ok现在我们去创建/etc/my.cnf吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

# 设置mysql客户端默认字符集


socket=/var/lib/mysql/mysql.sock

[mysqld]

#skip-name-resolve

#设置3306端口

port = 3306

socket=/var/lib/mysql/mysql.sock

# 设置mysql的安装目录

basedir=/usr/local/mysql

# 设置mysql数据库的数据的存放目录

datadir=/usr/local/mysql/data

log-error = /usr/local/mysql/data/error.log

pid-file = /usr/local/mysql/data/mysql.pid

tmpdir = /tmp/mysql

# 允许最大连接数

max_connections=200

# 服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

#lower_case_table_name=1

max_allowed_packet=16M

user=mysql

理解上面的内容,我们就可以自己改变这些配置,例如basedir就是为什么我们要要求解压目录是/usr/local/mysql文件夹了

第四步 创建需要的目录

我们在配置文件中规定了数据存在哪里,日志存在哪里,这些目录我们需要他们存在并且mysql程序具有读写权限

1
2
3
4
5
6
7
8
#创建目录
mkdir -p /var/lib/mysql
mkdir -p /tmp/mysql
mkdir -p /usr/local/data
#赋权限
chmod 777 /var/lib/mysql
chmod 777 /usr/local/mysql
chmod 777 /tmp/mysql

第五步 初始化数据库

这一步主要完成的工作

  1. 检查mysql的运行环境是否满足
  2. 生成一些原始数据文件,例如启动脚本(我们在启动mysql的时候会运行这个脚本)

这一步是为了下载mysql数据库在运行过程中所需要的一切依赖程序,进行检查mysql程序环境是否可以运行

1
2
# 执行下面这个命令 意思就是用mysql用户的权限 检查环境
/usr/local/mysql/bin/mysqld --initialize --user=mysql

可能出现的错误缺少numatl程序,我们进行安装即可

yum -y install numactl

第六步 配置开机启动服务

linux中的服务在启动的时候会去寻找在/etc/rc.d/init.d文件夹中的服务的初始化脚本,进行程序的初始化工作再进行运行

所以我们要添加开机启动就需要为我们的mysqld程序一个服务初始化脚本文件,这个文件/etc/rrc.d/init.d/mysqld

1
2
3
4
5
6
7
8
9
10
# 将脚本文件拷贝到linux的服务启动初始化脚本文件夹中
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
# 给到mysqld执行这个文件的权限
chmod 777 /etc/rc.d/init.d/mysqld
# 给linux一个名字,让人linux去启动脚本来寻找,将其配置成linux的一个服务
chkconfig --add mysqld
# 检查mysqld服务是否已经生效
chkconfig --list mysqld
# 切换至mysql用户,启动mysql (注意我们之前初始化的时候--user=mysql所以确定mysql权限可以执行)
service mysqld start

注意:

如果service mysqld start总是出错,检查mysqld是否被配置成为服务是一个思路

第六步 为其配置环境变量

就是给mysql的可执行文件配置环境变量

1
2
3
4
sudo vim /etc/profile
...enter profile innerr ...
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH

第七步 登录mysql修改root密码

mysql初始化之后会将root用户的初始化密码生成到/root/.mysql_secret文件中(如果你是在root用户下执行的initialize的话)

我们可以通过cat /root/.mysql_secret来查看

如果没有这个文件也没关系,我们直接执行

mysql -uroot -p

我们直接不输入密码点击回车,会出出现下面的错误

image-20240315212234915

大概的意思就是说找不到mysql的端口文件,我们将mysql初始化生成的/var/lib/mysql中的拿来用用,使用链接文件

ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

也就是到时会找到这里来

然后此时在进行登录,会出现拒绝访问的错误,也就是我们的密码错误

我们可以停止服务,使用不检查用户表的模式登录

1
2
3
4
5
6
7
8
9
10
11
12
13
#停止mysql服务
service mysqld stop
#以跳过grant-tables模式启动mysql并在后台运行
mysqld_safe --skip-grant-tables &
mysql -uroot -p #直接回车进去
use mysql;
#更新密码如下,5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string
update user set authentication_string=password('111111') where user='root';
# mysql 8已经不能这样修改了,代替方法是
# ALTER user 'root'@'localhost' IDENTIFIED BY 'newpassword';
#刷新权限
flush privileges;

第八步 开启用户远程登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#登陆mysql
mysql -uroot -p
#选择mysql
use mysql
#若报错如下,需要重置密码。
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#重置密码
SET PASSWORD = PASSWORD('111111');
#设置密码永不过期
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
# 创建远程访问账户
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '您的密码';
#赋远程访问 所有数据的权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '111111';
#刷新
FLUSH PRIVILEGES;

redis安装

先下载得到安装包,解压缩

redis是C++写的所以我们需要安装C++编译器,GCC++

1
yum install gcc-c++

进入redis解压后的目录,执行命令make进行编译

image-20240319204048665

需要的等待一会等待编译完成,编译完成之后

运行这个命令

1
make PREFIX=/usr/local/redis install

这里多了一个关键字 PREFIX= 这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录

库文件会存放在/usr/local/lib目录。

配置文件会存放在/usr/local/etc目录。

其他的资源文件会存放在usr/local/share目录.

接下来请看redis教程

5 我的云服务器配置

阿里云安全组规则

│ 入方向 │ 拒绝 │ 100 │ TCP │ 6379/6379 │ 0.0.0.0/0 │ redis端口 │

│ 入方向 │ 拒绝 │ 100 │ TCP │ 27017/27017 │ 0.0.0.0/0 │ mongodb连接 │

│ 入方向 │ 允许 │ 100 │ TCP │ 5946/5946 │ 0.0.0.0/0 │ 好记的端口 │

│ 入方向 │ 允许 │ 100 │ TCP │ 9170/9170 │ 0.0.0.0/0 │ 好记的端口 │

│ 入方向 │ 允许 │ 100 │ TCP │ 7456/7456 │ 0.0.0.0/0 │ 好记忆的端口 │

│ 入方向 │ 允许 │ 100 │ UDP │ 10999/11001 │ 0.0.0.0/0 │ 饥荒服务器 │

│ 入方向 │ 允许 │ 100 │ TCP │ 8080/8080 │ 0.0.0.0/0 │ tomcat服务 │

│ 入方向 │ 允许 │ 100 │ TCP │ 80/80 │ 0.0.0.0/0 │ http服务 │

│ 入方向 │ 允许 │ 100 │ TCP │ 3306/3306 │ 0.0.0.0/0 │ mysql 访问允许 │

│ 入方向 │ 允许 │ 100 │ ICMP │ -1/-1 │ 0.0.0.0/0 │ System created rule. │

│ 入方向 │ 允许 │ 100 │ TCP │ 22/22 │ 0.0.0.0/0 │ System created rule.

一些常用软件的包

在 ./Linux配置文件目录下

6 一些需要知道的linux技巧

linux的安装工具

linux不像是图形化操作系统,一般我们使用的都是命令行程序

所以安装这种程序也是没有图形化操作的,都是通过命令行安装的

有一些命令行工具提供了从下载解压部署软件全过程,这些软件就是下载工具

这些下载工具的官方维护了一个软件库,我们可以使用命令来下载所有软件库中能够找到的软件

知名的下载工具有:

  1. Wget
  2. install
  3. yum
  4. apt
  5. https://linux.cn/article-7369-1.html

例如使用yum

1
yum install tree

linux 服务初始化
https://wainyz.online/wainyz/2024/03/13/linux 服务初始化/
作者
wainyz
发布于
2024年3月13日
许可协议