轻量应用服务器使用总结
本文使用系统为 CentOS 7.6,服务器为腾讯轻量应用服务器
1. 设置 root 密码
初始化实例后,默认 root 是没有密码的,可以登录云服务器自带的 WebShell,通过 sudo passwd root
命令,设置密码
2. 宝塔面板
服务器管理软件,支持 Windows 和 Linux 系统,可以通过 Web 端轻松管理服务器,提升效率。可安装可不安装
2.1 安装
通过 su
命令,输入上面设置好的密码,切换到 root 用户,再使用
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
安装宝塔面板
输入 y
确认,安装完成后会显示地址和用户名密码
安装宝塔面板,会创建一个 www 的用户,创建的用户位于 /home 目录下
2.2 使用
在防火墙规则里开放 8888 端口(该端口为页面显示的访问端口)
通过地址访问宝塔面板,使用用户名密码登录
绑定账号
可以选择安装套件,也可以不安装后续自行进行安装
点击面板设置,修改用户名密码
修改访问端口和地址,修改后的端口同样需要在防火墙规则里放行
可以通过宝塔面板,安装对应的套件来简化环境的搭建和项目部署等操作,以及还有文件可视化页面、终端等
3. 远程连接
3.1 SSH 密码
SSH 密码即为 root 密码,用户名为 root
1、开启密码登录权限,编辑 /etc/ssh/sshd_config
文件,将 PermitRootLogin
设置为 yes
,开启 root 登录。将 PasswordAuthentication
设置为 yes
,开启密码认证
2、假如有改动的,重启 SSH 服务,需要 root 权限
/bin/systemctl restart sshd.service
或 systemctl restart sshd.service
3、SSH 连接,这里用的 MobaXterm_Portable_v20.2 连接工具。输入服务器地址,再输入登录的用户名及对应密码即可连接
3.2 SSH 私钥
1、进入用户(该用户为需要使用私钥登录的用户,root 就是 root 目录下,进入 root 目录需要 root 权限,其他创建的用户在 home 文件夹下对应的用户目录里)目录下的 .ssh
目录
2、生成密钥对,使用 ssh-keygen -t rsa
命令,之后一路回车即可,中间会要求输入密钥的密码,不需要密码直接回车即可
3、查看生成文件,其中 id_rsa 是私钥(客户端使用),id_rsa.pub 是公钥(服务器使用)
4、开启密钥登录权限(这一步可跳过,无论对不对其进行配置,在腾讯云轻量应用服务器 CentOS 7.6 上不影响,原因可参考 3.3)
编辑 /etc/ssh/sshd_config
文件,将 RSAAuthentication
设置为 yes
,开启私钥认证(但 CentOS7.4 之后的配置文件中没有这一行,跳过这个设置)。将 PubkeyAuthentication
设置为 yes
,开启公钥认证
5、假如有改动的,重启 SSH 服务,需要 root 权限
/bin/systemctl restart sshd.service
或 systemctl restart sshd.service
6、之后就可以通过私钥直接连接服务器(先从服务器上下载私钥),不需要每次输密码
7、但腾讯云服务器这里有一个服务器绑定密钥的配置文件 authorized_keys
,该文件内容即为公钥 id_rsa.pub
,只有有这个配置文件才能通过私钥连接
没有的话可以自己创建该文件,然后把公钥复制进去即可,同时权限所有者为 root
正常生成该文件的步骤为:在服务器管理页面创建密钥,然后绑定到服务器
把公钥复制进来,点击确定,创建密钥
然后服务器绑定密钥,在 .ssh
目录下就会生成 authorized_keys
文件
8、安装了宝塔面板的也可在宝塔面板安全页面开启配置,但这里的开启 SSH 密钥登录会添加上 RSAAuthentication 配置项,实际上不需要这个配置项,原因见 3.3
而且按照上面的操作开启密码登录和密钥登录,宝塔面板这里也不会显示启动,实际上功能都已经成功开启,两种方式都可连接
3.3 配置文件中没有 RSAAuthentication
CentOS7.4 相对于之前版本,做了一些与 sshd 相关的安全更新来加强 sshd 的安全性。其中之一就是弃用 RSAAuthentication 支持
目前 SSH 的通讯协议分为第一代和第二代,第二代有更多功能、选项、和更高的安全性,在 2006 正式由 IETF 发表,至今已有十年。由于两代 SSH 协定并不兼容,所以只能二选其一,CentOS 7 的 SSH 预设使用第二代协定
在同时支持这两个协议的系统中,可以通过 /etc/ssh/sshd_config 配置文件中的
Protocol 2
来指定使用哪一个版本。RSAAuthentication (RSA认证)是只支持第 1 代 SSH 通讯协议使用的配置项,在 CentOS7.4 中被废除了,而且 CentOS7 开始预设使用第二代通讯协议,在 CentOS7.4 中没有找到指定协议版本的配置行,应该是 CentOS7.4 全面抛弃第 1 代协议
第 2 代 SSH 通讯协议的密钥验证选项是
PubkeyAuthentication yes
该配置默认是注释掉的,同时似乎是默认开启的,即使注释也能使用密钥登录。 因此在使用第二代 SSH 通讯协议时不需要再去纠结 RSAAuthentication 选项,在 CentOS7.4 中其强行添加 RSAAuthentication 配置会触发系统对它的废除提示
reprocess config line 38: Deprecated option RSAAuthentication
4. JDK
4.1 安装
1、首先下载 JDK 安装包,官网下载路径:https://www.oracle.com/java/technologies/downloads/
2、下载后上传到服务器
3、解压文件,tar -zxvf jdk-8u341-linux-x64.tar.gz
4、配置环境变量,找到 /etc/profile
文件添加如下环境变量
#set java environment
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_341
export JRE_HOME=/usr/java/jdk/jdk1.8.0_341/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
5、生效环境配置 source /etc/profile
6、查看 JDK 版本,输入 java -version
,如下提示则表示安装成功
4.2 卸载
1、查看安装路径,which java
2、删除该路径下的文件夹
# rm -rf JDK路径
rm -rf /usr/jdk/jdk1.8.0_172/
3、删除环境配置
4、生效环境配置 source /etc/profile
5. MySQL
5.1 安装
1、去官网下载:https://downloads.mysql.com/archives/community/,选择 MySQL 版本,操作系统,操作系统版本。CentOS 为 Red Hat 的社区发行版,可以选择该操作系统,同时选择对应的 CentOS 版本,或者也可选择 Linux Generic 通用版
这里选择通用版本进行下载,下载 tar.xz
压缩包文件,或者也可下载没有压缩的 tar
包文件(选择 Red Hat 版本的下载 tar.gz
文件)
2、将文件上传到服务器上
3、进行解压,进入压缩包所在目录,执行 tar -Jxvf mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
(如果下载的是 Red Hat 的 tar.gz
文件执行 tar -zxvf mysql-8.0.19-el7-x86_64.tar.gz
)
4、卸载 MariaDB
在 CentOS中 默认安装有 MariaDB,是 MySQL 的一个分支,主要由开源社区维护。CentOS 7及以上版本已经不再使用 MySQL 数据库,而是使用 MariaDB 数据库。安装 MySQL 的话可以先卸载 MariaDB 数据库
先查看版本,rpm -qa|grep mariadb
,然后执行 rpm -e --nodeps 文件名
进行卸载
5、创建 mysql 用户组和 mysql 用户
先检查是否有 mysql 用户组和 mysql 用户,groups mysql
,没有再添加,有就跳过这一步
没有的话再创建 mysql 用户组并创建 mysql 用户添加到用户组, groupadd mysql && useradd -r -g mysql mysql
6、mysql 的自启动脚本会优先检索 /etc
目录下 my.cnf
的配置文件,创建该配置文件,配置如下:
[client]
# MySQL 客户端连接服务器端时使用的端口号,默认为 3306
port = 3306
# 套接字文件所在目录
socket = /usr/java/mysql/mysql-8.0.19-linux-glibc2.12-x86_64/run/mysql.sock
[mysqldump]
# 支持较大的数据库转储,导出非常巨大的表时需要此项 。
quick
# 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要),每个连接独立的大小,大小动态增加
max_allowed_packet = 16M
# 以上参数会被 MySQL 客户端应用读取
[mysqld]
# mysqld 程序在启动后将在给定 UNIX/Linux 账户下执行。mysqld 必须从 root 账户启动才能在启动后切换到另一个账户下执行。mysqld_safe 脚本将默认使用 user=mysql 选项来启动 mysqld 程序
user = mysql
# 服务端口号,默认为 3306
port = 3306
# socket 文件所在目录
socket = /usr/java/mysql/mysql-8.0.19-linux-glibc2.12-x86_64/run/mysql.sock
# MySQL 服务的唯一编号,每个 MySQL 服务的 id 需唯一
server-id = 1
# 进程 id 存放文件
pid_file = /usr/java/mysql/mysql-8.0.19-linux-glibc2.12-x86_64/run/mysql.pid
# 指定 MySQL 安装的绝对路径
basedir = /usr/java/mysql/mysql-8.0.19-linux-glibc2.12-x86_64
# 指定 MySQL 数据存放的绝对路径
datadir = /usr/java/mysql/mysql-8.0.19-linux-glibc2.12-x86_64/data
# 数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用 4 个字节)
character-set-server = utf8mb4
# 数据库字符集对应一些排序等规则,要和 character-set-server 对应
collation-server = utf8mb4_general_ci
# 设置 client 连接 mysql 时的字符集,防止乱码
init_connect = 'SET NAMES utf8mb4'
# 是否对 sql 语句大小写敏感,1 表示不敏感
lower_case_table_names = 1
# 用于指定索引缓冲区的大小
key_buffer_size = 64M
# 仅仅允许使用键值的 UPDATES 和 DELETES
#no-auto-rehash
# 表示 SQL 模式的参数,通过这个参数可以设置检验 SQL 语句的严格程度
#sql_mode=TRADITIONAL
# 日志文件位置
log-error = /usr/java/mysql/mysql-8.0.19-linux-glibc2.12-x86_64/log/mysql_error.log
7、根据配置文件,创建对应的 log、run、data 等文件夹,mkdir data log run
8、赋予权限,chown -R mysql:mysql ./
9、初始化 mysql
bin/mysqld --initialize --user=mysql --basedir=/usr/java/mysql/mysql-8.0.19-linux-glibc2.12-x86_64 --datadir=/usr/java/mysql/mysql-8.0.19-linux-glibc2.12-x86_64/data
- defaults-file:指定配置文件(要放在–initialize 前面)
- user: 指定用户
- basedir:指定安装目录
- datadir:指定初始化数据目录
- intialize-insecure:初始化无密码
控制台没有输出,可以去日志文件里查看临时密码
10、添加 mysqld 服务到系统
cp -a /usr/java/mysql/mysql-8.0.19-linux-glibc2.12-x86_64/support-files/mysql.server /etc/init.d/mysqld
11、启动服务,service mysqld start
12、查看是否启动服务,ps -ef | grep mysql
13、查看 mysql 运行状态,service mysqld status
5.2 使用
1、登录
/usr/java/mysql/mysql-8.0.19-linux-glibc2.12-x86_64/bin/mysql -u root -p
会提示输入初始化的时候生成的临时密码
2、修改密码
alter user 'root'@'localhost' identified by '新密码';
3、远程连接
进入 mysql 数据库,use mysql
,修改 user 表,host 默认值都是 localhost,需要修改 root 用户的 host 值为 %,update user set host='%' where user ='root';
,刷新权限,flush privileges;
开放对应的端口
使用 Navicat 进行连接,成功
4、退出,quit
6. Nginx
6.1 安装
1、GCC 安装,安装 Nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装
先通过 gcc --version
查看有无 gcc
没有的话再通过 yum install gcc-c++
进行安装
2、PCRE 安装,PCRE(Perl Compatible Regular Expressions) 是一个 Perl 库,包括 perl 兼容的正则表达式库。Nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 Linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。Nginx 也需要此库
可以先通过 rpm -qa pcre
查看有无 PCRE
没有的话可以通过 yum install -y pcre pcre-devel
来安装
3、Zlib 安装,zlib 库提供了很多种压缩和解压缩的方式, Nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要安装 zlib 库
可以通过 yum list installed | grep zlib
查看是否安装了 Zlib
没有的话通过 yum install -y zlib zlib-devel
进行安装
4、OpenSSL 安装,OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。Nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要安装 OpenSSL 库
先通过 rpm -qa pcre
查看是否安装了 OpenSSL
没有的话通过 yum install -y openssl openssl-devel
进行安装
5、去官网下载 Nginx,https://nginx.org/en/download.html
6、上传到服务器上
7、解压到当前目录,tar -zxvf nginx-1.22.0.tar.gz
8、进入解压后的目录,运行 ./configure --with-http_stub_status_module --with-http_ssl_module
配置环境,默认安装路径在 /usr/local/nginx
,这里安装了 ssl 模块用于部署证书
假如要指定安装路径,可以通过 -prefix
设置安装路径,./configure --prefix=/usr/java/nginx --with-http_stub_status_module --with-http_ssl_module
9、再执行 make && make install
编译并安装环境
10、进入安装目录的 sbin 目录下,启动 Nginx 服务,./nginx
11、查看是否开启了服务,netstat -ntlp | grep nginx
12、在浏览器输入服务器地址,看见如下界面即表示成功
6.2 使用
相关指令,先到 Nginx 安装目录的 sbin 目录下
- 启动服务:
./nginx
- 停止服务,此方式停止步骤是待 Nginx 进程处理任务完毕进行停止。
./nginx -s stop
- 退出服务,此方式相当于先查出 Nginx 进程 id 再使用 kill 命令强制杀掉进程。
./nginx -s quit
- 重新加载,当 Nginx 的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,使用-s reload不用先停止 nginx再启动 nginx 即可将配置信息在 nginx 中生效。
./nginx -s reload
- 查询 nginx 进程:
ps aux|grep nginx
项目部署相关配置见 8
6.3 查看有无安装总结
rpm
包安装的,可以用rpm -qa
看到,如果要查找某软件包是否安装,用rpm -qa | grep “软件或者包的名字”
- 以
deb
包安装的,可以用dpkg -l
看到。如果是查找指定软件包,用dpkg -l | grep “软件或者包的名字”
yum
方法安装的,可以用yum list installed
查找,如果是查找指定包,用yum list installed | grep “软件名或者包名”
7. Redis
见另一篇博客: 服务器安装Redis和配置后台远程连接
8. 前端与后端项目部署
见另一篇博客:轻量应用服务器部署 SpringBoot 前后端分离项目