共计 8484 个字符,预计需要花费 22 分钟才能阅读完成。
尽管从实践上来说,我应该先讲命令,后讲具体的中间件环境,然而从我集体的角度来体验,先实际,之后弄懂相干命令的意思就有一种豁然开朗的感觉,所以本文将依照上文的程序进行行文。
大家可能留神到了,上图的命令中并没有根底命令,我认为根底命令扫一眼就行,没必要非凡记忆,我罕用的根底命令如下:
top:查看零碎过程状况。
cd:切换目录。
vim:批改文件。
mkdir:创立文件夹。
或者是我场景无限,本人玩服务器的话根底命令除了这四个以外别的根本没用过,所以我倡议大家也没必要在这方面破费太多工夫,尤其是前端同学。
最初,本文的 Linux 环境版本为:Ubuntn 20 LTS,强烈建议大家应用 Ubuntn(的确比拟好用),并且心愿大家养成点赞后看的好习惯😁😁😁。
注:文本装置中间件都将以官网源进行装置,回绝应用包管理器的源,和官网放弃对立。
Nginx
原来我始终是用源码编译的形式进行装置 Nginx,当初感觉应用包管理器进行装置 + systemctl 治理更不便一些。
进入正题,应用官网源进行装置大抵能够分为四步:
装置依赖。
生成 / 导入 key。
设置 Nginx 源。
装置。
装置依赖
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
生成 key
curl https://nginx.org/keys/nginx_… | 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 一般来说咱们只须要理解两局部就够了:配置文件和常用命令。
Nginx 的配置文件在:/etc/nginx/nginx.cnf,三个常用命令如下:
Nginx -s reload:重载配置文件。
Nginx -s stop:疾速关机。
Nginx -s quit:优雅关机。
最初,能够应用 curl -I 127.0.0.1 测试一下 Nginx 是否失常,看到如下响应的就是 OK:
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
复制代码
Nginx 装置比较简单,接下来会缓缓简单起来。
Node
Node 装置和其余的有所不同,Node 高版本竟然会和 Linux 版本有些不兼容,以我目前的 Ubuntn 20 LTS 举例,在 20 版本之下的比方 19 / 18 版本是不反对 Node18+ 的,具体的兼容列表能够在其 Github 下面找到:github.com/nodesource/…
除去版本问题之外,Node 应用包管理器装置也是非常简单的:
curl -fsSL https://deb.nodesource.com/se… | sudo -E bash –
sudo apt-get install -y nodejs
复制代码
一行命令即可,其中 setup_18.x 能够替换为 setup_17.x 或者 setup_16.x,依据你想要的版本来即可,如果你想要一个每次都装置最新版本的命令则能够将其替换为:setup_current.x。
接着输出 node -v 来查看装置的版本:
root@hecs-5778:~ node -v
v18.4.0
复制代码
Node 这种语言环境个别都不须要配置开机自启,间接通过环境变量即可调用,所以这里就不展现配置开机自启的步骤了~
JDK / JRE
话说这里为什么呈现 Java?因为如果前端想做一些 CICD 环境的话必不可少的会用到 Jenkins,而 Jenkins 则须要 Java 运行时环境。
JDK / JRE 的装置个别都比较简单,一行命令就能够搞定,不过须要留神的是在当你在 Linux 的包管理器上搜寻 JDK / JRE 时通常会呈现一个 handleless 版本:
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 files
复制代码
headless 版本是不反对图形化接口以及人机交互设施 (鼠标、键盘) 的版本,它通常被用于服务器端,所以如果你部署的我的项目就是惯例的 Web 利用那能够间接装置 handless 版本进行应用,它相比标准版引入的依赖更少,占用的资源也更少。
说完了版本,接下来说装置,如果你在 Linux 下面装置软件懒得去搜寻命令能够间接敲击对应的命令,大概率 Linux 的包管理工具会提醒你进行装置:
root@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 进行装置。
当然并不倡议所有软件都用这种形式进行装置,因为包管理器给你举荐的并不一定是官网源,除了这种编程语言环境,其余服务端大型软件我更举荐依据其官网文档进行装置,比方在 MongoDB 文档下面就写明了 Ubuntu 自带的源中的 MongoDB 安装包不是官网源安装包。
因为编程语言的相干命令个别都会退出环境变量,所以 JDK / JRE 就没必要配置开机自启之类的货色了,间接应用即可。
Redis
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 就能够自启动了,对了,Redis 默认应用 6379 端口~
参考文档:redis.io/docs/gettin…
MongoDB
据说前端选数据库第一抉择就是 MongoDB,MongoDB 相比老牌关系型数据库——MySQL 的确更轻量级,性能方面简略应用还要比 MySQL 强上不少,我一个后端也喜爱上 MongoDB 了当初。
MongoDB 的装置个别分为两步:更新 MongoDB 源和 apt 装置,命令如下:
wget -qO – https://www.mongodb.org/stati… | sudo apt-key add –
echo “deb [arch=amd64,arm64] https://repo.mongodb.org/apt/… 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-org
复制代码
MongDB 装置完了之后有几个罕用目录须要晓得:
配置文件:/etc/mongod.conf。
数据目录:/var/lib/mongodb。
日志目录:/var/log/mongodb。
之后咱们还须要批改一下配置文件,因为默认的 MongoDB 不反对近程拜访,应用 vim 关上配置文件之后,批改 bind 属性即可:
net:
port: 27017
bindIp: 0.0.0.0
复制代码
批改实现之后就能够启动 MongoDB 了,应用 sudo systemctl start mongod 进行启动,如果提醒你 Failed to start mongod.service: Unit mongod.service not found. 能够先应用 sudo systemctl daemon-reload 而后再次运行下面的启动命令即可。
如果须要开机自启动能够通过命令:systemctl enable mongod 进行设置。
这样 MongoDB 就能够自启动了,MongoDB 默认应用 27017 端口~
对了数据库这种玩意我强烈不倡议应用 Docker,一是麻烦二是没必要,吃力不讨好。
参考文档:www.mongodb.com/docs/manual…
MySQL
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 mysql
复制代码
参考文档:dev.mysql.com/doc/mysql-a…
Apt
理解 apt 之前须要先晓得 Ubuntu 零碎的包管理工具是什么,Ubuntu 零碎作为 Debian 系的发行版,它和 Debian 用了同样的包管理工具:dpkg,而 apt 则是 dpkg 的命令行前端,它的作用是用来操作 dbkg 包管理器,在 Debian 系中除了 apt 这个命令行前端还有一个叫做 apt-get 的命令行前端,它比 apt 更加的古老。
apt-get 在 1998 年公布,起初逐步被 apt 取代,apt 在 Debian8 外面成为规范,在 Ubuntu16 之后开始逐步风行,目前大量开源我的项目的装置示例都是以 apt 为命令行前端。
Apt 要比 apt-get 略微多一些性能,然而总体性能上是差不多的,次要的亮点在于:
有进度条。
某些命令显示包的时候带有色彩。
命令更短。
命令更短这点是我最喜爱的,接下来看一下几个常用命令,命令这方面我不再比照 apt-get,只有记忆 apt 相干命令即可:
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
Systemctl 是零碎服务治理命令,在旧一点的 Linux 发行版上服务治理个别是 service 命令,而较新的零碎上则根本都是 Systemctl,Systemctl 兼容了 service 命令并具备更弱小的性能。
不过对于 Systemctl 我感觉咱们个别开发者无需理解太多,因为和 Systemctl 配套的都是 Linux 服务相干的常识了,咱们只须要理解五个常用命令会用即可:
systemctl enable 服务名:用来设置服务的开机自启,这个大赞,因为更语义化同时命令也更短。
systemctl disable 服务名:用来敞开服务的开机自启。
systemctl start 服务名:启动服务。
systemctl stop 服务名:敞开服务。
systemctl restart 服务名:重启服务。
systemctl status 服务名:查看服务的状态。
在上文中,咱们见到了好几次 systemctl 命令呈现,当初大家能够再通过这几个命令试试服务开启 / 敞开的成果,加深记忆。
ufw
UFW 是 Uncomplicated FireWall 的简称,通过这个名字大家也能够看进去这是一个防火墙命令,大家在网上搜寻放开某端口的时候个别都是呈现的 iptables 命令,而 UFW 就是为了代替它而生,目前曾经成为 Debian 系的默认防火墙治理命令。
UFW 这种新生代命令最大的益处就是易用易上手,尤其是对咱们这种非专业运维来说,记住几个常用命令就足够咱们应用了。
UFW 默认在 Ubutun 是敞开状态,你能够通过如下命令查看状态,incative 是敞开而 active 则是开启(因为 UFW 这个命令个别都是在管理员权限下能力应用,所以下文我将疏忽 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 allwo 这个命令是专为关上端口应用的,其中内置了一些服务到端口的映射,比方下面的 ufw allow ssh 其实就是对应了 ssh 对应了 22 端口,还有一些罕用的例如 http 对应 80,https 对应 443,具体的规定文件在 /etc/services 文件下。
如果有些端口没有在预设文件中,你间接增加也可,比方咱们放开 Redis 的默认端口 6379:
root@hecs-5778:~ ufw allow 6379
Rule added
Rule added (v6)
复制代码
最初,如果咱们的服务器是本人玩的状况下,我不倡议关上防火墙,因为比拟麻烦,你能够应用 disable 命令进行敞开:
root@hecs-5778:~ ufw disable
Firewall stopped and disabled on system startup
复制代码
写在最初
写在最初,讲真,本文的局部内容还是十分具体实用的,比方 MySQL -ROOT 明码那里,我写的时候也看了网上大量相干的文章,然而根本都说不到点上,尤其是用最新的加密形式的文章则是一个也没见到,置信大家看完本文之后应该会对这些货色了然于胸。
Linux 是个宏大的操作系统,外面轻易一点拎进去都能写一本书了,所以心愿大家在后期还是以实用为目标进行学习,不要局限在细节里。