Clean version of https://juejin.cn/post/7118919471317647397
- Linux 中间件
- Nginx
- JRE/JDK
- Node
- MySQL
- MongoDB
- Redis
- Linux 常用命令
- Apt
- Systemctl
- Ufw
- top:查看系统进程情况
- cd:切换目录
- vim:修改文件
- mkdir:创建文件夹
Linux 环境版本为:Ubuntu 20 LTS,强烈建议大家使用 Ubuntu
安装步骤:
- 安装依赖
- 生成 / 导入 key
- 设置 Nginx 源
- 安装
# 安装依赖
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
# 生成key
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# 设置 Nginx 源
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
# 更新 && 安装
sudo apt update
sudo apt install nginx
systemctl start nginx命令启动 Nginx- Nginx 的配置文件在:
/etc/nginx/nginx.cnf - 常用命令:
- Nginx -s reload:重载配置文件
- Nginx -s stop:快速关机
- Nginx -s quit:优雅关机
- 使用
curl -I 127.0.0.1测试Nginx 是否正常启动运行 - 看到如下输出则为正常
HTTP/1.1 200 OK
Server: nginx/1.22.0
Date: Sat, 09 Jul 2022 08:25:06 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Mon, 23 May 2022 23:59:19 GMT
Connection: keep-alive
ETag: "628c1fd7-267"
Accept-Ranges: bytes
- Node 安装存在可能issue
- Node 高版本和 Linux 版本不兼容,以我
- Ubuntu 20 版本之下的比如 19 / 18 版本是不支持 Node18+ 的
- find 兼容列表
通过包管理器安装
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs- 其中 setup_18.x 可以基于需要替换为 setup_17.x 或者 setup_16.x
- 安装最新版本的则可以将其替换为:setup_current.x
使用如下命令检测是否安装成功 基于你的版本号来判断
root@hecs-5778:~ node -v
v18.4.0搭建CICD环境需要使用 Jenkins Jenkins 需要使用Java运行环境
注意:当你在 Linux 的包管理器上搜索 JDK / JRE 时通常会出现一个 handleless 版本
- headless 版本是不支持图形化接口以及人机交互设备 (鼠标、键盘) 的版本
- headless 版本通常被用于服务器端,所以如果部署的项目就是常规的 Web 应用那可以直接安装 handless 版本进行使用
- 相比标准版引入的依赖更少,占用的资源也更少
root@hecs-5778:~ sudo apt-cache search jdk-17
openjdk-17-jdk - OpenJDK Development Kit (JDK)
openjdk-17-jdk-headless - OpenJDK Development Kit (JDK) (headless)
openjdk-17-jre - OpenJDK Java runtime, using Hotspot JIT
openjdk-17-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-17-source - OpenJDK Development Kit (JDK) source filesroot@hecs-5778:~ java
Command 'java' not found, but can be installed with:
apt install openjdk-11-jre-headless # version 11.0.15+10-0ubuntu0.20.04.1, or
apt install default-jre # version 2:1.11-72
apt install openjdk-16-jre-headless # version 16.0.1+9-1~20.04
apt install openjdk-17-jre-headless # version 17.0.3+7-0ubuntu0.20.04.1
apt install openjdk-8-jre-headless # version 8u312-b07-0ubuntu1~20.04
apt install openjdk-13-jre-headless # version 13.0.7+5-0ubuntu1~20.04直接执行:apt install openjdk-17-jre-headless 进行安装
- Redis 作为一个老牌缓存中间件,高性能 + 高可用就是它的优势
- Redis 安装一般是分为两步:
- 更新 Redis 源
- apt 安装
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis安装之后的有两个文件路径很重要
- 启动脚本路径:
/usr/bin/redis-server - 配置文件路径:
/etc/redis/redis.conf
- 在正式启动 Redis 之前,需要修改一下配置文件
- 因为默认的 Redis 配置是不支持远程访问和无密码的
- 所以需要
vim /etc/redis/redis.conf一下,修改如下配置
bind 0.0.0.0 ::1
requirepass yourpassword- 保存之后可以使用:
systemctl start redis-server启动 Redis 服务 - 如果需要开机自启动可以通过命令:
systemctl enable redis-server进行设置 - Redis 默认使用 6379 端口
MySQL 安装比较复杂,除了配置文件外还要处理 ROOT 权限
MySQL 的安装一般也是两种方法:
-
通过使用 MySQL apt 存储库安装(注意:这不是设置官方源的方式)
-
通过 Linux apt 包管理器安装
-
直接通过 Ubuntu 自带的 apt 包管理器进行安装
sudo apt-get install mysql-server- 这条命令会帮你安装最新的 MySQL,
- 在现在这个时间点安装的是 MySQL8,
- 强烈建议不要再使用 8 以下的版本了,MySQL 8 带来的性能提升真的非常巨大
MySQL 的数据目录初始化过程会基于不同的安装方式出现不同
- 如果是使用安装程序和包管理器进行安装,一般都会自动进行数据目录初始化
- 如果非这种方式则需要手动进行数据目录初始化,否则将无法启动 MySQL
- 使用 apt 方式进行安装时无需关心数据目录初始化
默认目录
- 数据目录:/var/lib/mysql
- 日志目录:/var/log/mysql
- 配置文件目录:/etc/mysql/mysql.conf.d
远程访问
远程访问需要修改两处:
- 配置文件
- 用户权限
- 配置文件使用如下命令进行修改
vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0- MySQL 的默认配置文件一般在
/etc/mysql/mysql.conf.d/mysqld.cnf - 修改用户权限则是需要登陆 MySQL 中去修改数据库
mysql -u root -p
use mysql;
update user set host='%' where user='root';
flush privileges;ROOT 密码
MySQL 的初始化密码根据安装方式不同默认密码也不同,一般有三种方式
- 安装过程中提示你设置
- 空
- 随机密码
如果你已经配置了密码可以跳过此节,下面着重说一下没有配置密码的情况,
- 当你没有配置密码时可以使用使用
mysql -u root -p用空密码进行登录验证, - 如果空不是你的初始化密码,那就需要在 MySQL 的错误日志里面找到你的初始化随机密码,错误日志文件地址一般是:
/var/log/mysql/error.log - 之后重新使用
mysql -u root -p进行登录验证
登录之后使用如下命令查看root 用户验证方式:
use mysql;
select user, host, authentication_string, plugin from user where user = 'root'出现如下结果则认为正确:
+------+------+-----------------------+-------------+
| user | host | authentication_string | plugin |
+------+------+-----------------------+-------------+
| root | % | | auth_socket |
+------+------+-----------------------+-------------+
1 row in set (0.00 sec)
- Host 的 % 代表支持远程访问
- 接下来需要将密码修改为自定义密码
- 需要注意打印中的 plugin 是什么,如果是
auth_socket方式则代表它使用Unix 套接字进行无密码验证,需要将其替换掉,不然无法使用密码进行验证
使用如下命令进行密码修改:
ALTER USER 'root'@'%' IDENTIFIED with caching_sha2_password BY 'your_password';-
MySQL 8.0 之后默认使用 caching_sha2_password 方式进行密码验证
-
使用如下命令将 MySQL 加入开机自启列表,MySQL 默认使用 3306端口
systemctl enable mysqlMongoDB 相比老牌关系型数据库MySQL 确实更轻量级, 性能方面比 MySQL 强上不少 同时也更加简单
MongoDB 的安装一般分为两步:
- 更新 MongoDB 源
- apt 安装
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo apt-get update
sudo apt-get install -y mongodb-orgMongoDB 常用目录
- 配置文件:/etc/mongod.conf
- 数据目录:/var/lib/mongodb
- 日志目录:/var/log/mongodb
默认的 MongoDB 不支持远程访问, 需要修改配置文件
net:
port: 27017
bindIp: 0.0.0.0- 暴露端口 27017
- 支持远程访问
使用 sudo systemctl start mongod 进行启动
- 如果提示你
Failed to start mongod.service: Unit mongod.service not found. - 可以先使用
sudo systemctl daemon-reload然后再次运行上面的启动命令即可
开机自启动可以通过命令:systemctl enable mongod 进行设置
Ubuntu系统作为Debian系的发行版,它和Debian用了同样的包管理工具:dpkg- 而
apt则是dpkg的命令行前端,它的作用是用来操作dbkg包管理器 - 在
Debian系中除了apt这个命令行前端还有一个叫做apt-get的命令行前端,它比 apt 更加的古老 apt-get在 1998 年发布,后来逐渐被apt取代apt在Debian8里面成为标准,在Ubuntu16之后开始逐渐流行,目前大量开源项目的安装示例都是以apt为命令行前端
Apt 比apt-get多一些功能,主要的亮点在于:
- 有进度条
- 某些命令显示包的时候带有颜色
- 命令更短
常用命令:
- Apt search:用来搜索某个包,如:apt search jdk
- Apt install:用来安装某个包,如:apt install nginx
- Apt remove:用来删除某个包,如 apt remove nginx
- Apt purge:用来删除某个包并清除配置,如 apt purge nginx
- Apt show:用来显示某个包的具体信息,如 apt show nginx
- Apt list --installed:列出所有已经安装的包
- Apt autoremove:删除不再使用的库文件和依赖
Systemctl是系统服务管理命令,在旧一点的 Linux 发行版上服务管理一般是service命令- 而较新的系统上则基本都是
Systemctl,Systemctl兼容了service命令并具有更强大的功能
Systemctl 常用命令:
- systemctl enable 服务名:用来设置服务的开机自启,这个大赞,因为更语义化同时命令也更短
- systemctl disable 服务名:用来关闭服务的开机自启
- systemctl start 服务名:启动服务
- systemctl stop 服务名:关闭服务
- systemctl restart 服务名:重启服务
- systemctl status 服务名:查看服务的状态
UFW是Uncomplicated FireWall的简称- 目前已经成为
Debian系的默认防火墙管理命令 UFW默认在Ubutun是关闭状态,- 你可以通过如下命令查看状态,
incative是关闭而 active则是开启 - 注意以下命令都需要使用管理员权限也就是
sudo
root@hecs-5778:~ ufw status verbose
Status: inactive通过 enable 命令进行开启
root@hecs-5778:~ ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup注意!UFW 第一次开启之后会直接关闭所有端口,这样下次就不能通过 SSH 连上云服务器了,所以开启之后你必须立即放开 SSH 端口
root@hecs-5778:~ ufw allow ssh
Rule added
Rule added (v6)ufw allow这个命令是专为打开端口使用的- 其中内置了一些服务到端口的映射,比如上面的
ufw allow ssh其实就是对应了ssh对应了 22端口, - 还有一些常用的例如 http 对应 80,https 对应 443,具体的规则文件在
/etc/services文件下
也可以指定开放的端口
root@hecs-5778:~ ufw allow 6379
Rule added
Rule added (v6)如果你不想启动 UFW,则可以使用如下命令关闭
root@hecs-5778:~ ufw disable
Firewall stopped and disabled on system startup