前言
当我们新建一台虚拟机(或新购买一台云服务器),我们应该做的一些基础设置,或者需要安装的一些软件。这篇博客我们来介绍一下这些设置。
网络设置
1. 设置静态IP和DNS
- 注:根据需求设置,一般云服务器ip已经固定,可以不用设置静态ip;DNS根据是否要有vpn设置,但是“8.8.8.8”和“114.114.114.114”的设置可以满足大部分场景
(1) 运行命令查看当前ip及网关
1 | # 查看ip |
(2) 根据查看到的网卡名称打开对应的配置文件,配置ip、网关、dns等参数
1 | sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 |
1 | TYPE="Ethernet" |
(3) 保存配置文件后,需要重启网络服务以应用更改
1 | # centos7 |
2. 防火墙设置
- 方案1:关闭防火墙【不推荐】
1 | #关闭防火墙 |
- 方案2:将我们需要的端口开放
1 | # 查看防火墙状态 |
- 注意:如果你使用的是云服务器,还要到对应页面添加规则,将对应端口在云服务器上开放
安装基础软件(并不是要求全部安装,可根据需求安装)
1. 安装yum相关
(1)验证是否安装了yum(通常系统会自行安装)
1 | yum --version |
(2)如果没有安装,通过以下命令获取yum并执行安装
1 | # 获取yum文件 |
(3)安装**yum-utils
、device-mapper-persistent-data
、lvm2
**
1 | yum install -y yum-utils device-mapper-persistent-data lvm2 |
(4)在yum中设置docker的阿里云镜像(提高docker安装软件时的下载速度,也可以设置其他来源镜像)
1 | yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
(5) 更新yum软件包索引
1 | # centos7 |
(6) 验证yum是否安装成功
1 | yum --version |
注:如果已经安装了yum,但使用yum安装其他软件时(如docker-ce)出现错误:
1
2
3
4已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"出现这个问题是因为使用的 CentOS 7 仓库已经被归档,当前的镜像地址无法找到所需的文件(CentOS 7 的官方支持已经结束,官方仓库在 2024 年 6 月 30 日之后已经停止维护,部分仓库已被移至归档库,这导致了你的 yum 命令无法找到所需的元数据文件,因此使用 CentOS 7 的官方仓库可能会遇到问题)。
我们需要设置为国内的镜像源(如阿里云),命令如下:
1
2
3
4
5
6
7
8
9# centos7
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# centos8
# 备份原来的CentOS-Linux-BaseOS.repo 文件
mv /etc/yum.repos.d/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/CentOS-Linux-BaseOS.repo.backup
# 我的centos8的/etc/yum.repos.d目录中有一个 CentOS-Linux-AppStream.repo文件,将这个文件也备份
mv /etc/yum.repos.d/CentOS-Linux-AppStream.repo /etc/yum.repos.d/CentOS-Linux-AppStream.repo.backup
# 从阿里云下载新的配置文件
curl -o /etc/yum.repos.d/CentOS-Linux-BaseOS.repo https://mirrors.aliyun.com/repo/Centos-8.repo然后执行命令查看阿里云镜像源是否被添加:
1
cat /etc/yum.repos.d/CentOS-Base.repo
执行命令让阿里云镜像源生效:
1
2sudo yum clean all
sudo yum makecache再执行(3)~(5)步,建立正确的元数据缓存
2. 安装gcc、gcc-c++
- 注:这里用yum方式安装,要先安装yum
1 | yum -y install gcc |
3. 安装jdk
(1)将jdk文件上传(或下载)到linux服务器
1 | # 上传 |
(2)将文件解压到合适目录
1 | tar -zxvf /usr/local/lib/jdk/jdk-8u421-linux-x64.tar.gz |
(3)修改环境变量
1 | vi /etc/profile |
(4)使配置的环境变量生效
1 | source /etc/profile |
(5)验证安装完成
1 | java -version |
- 注意:安装jdk的方式不止一种,也可以使用yum命令安装(需要先安装yum)
1 | sudo yum install -y java-1.8.0-openjdk |
4. 安装maven
(1)将文件上传或下载到服务器
1 | # 上传 |
(2)将文件解压到合适目录
1 | tar -zxvf /usr/local/lib/maven/apache-maven-3.9.7-bin.tar.gz |
(3)修改环境变量
1 | vi /etc/profile |
(4)使配置的环境变量生效
1 | source /etc/profile |
(5)验证安装成功
1 | mvn -v |
(6)maven的常用命令
1 | 1、mvn compile |
- 注:安装maven的方式同样不止一种,也可以用yum方式安装,这里不再赘述
5. 安装docker
(1) 安装DOCKER CE(注意:Docker分为CE版和EE版,一般我们用CE版就够用了;这里用yum命令安装,需要先安装yum)
1 | yum -y install docker-ce |
(2) 验证是否安装成功
1 | docker --version |
(3) 启动docker
1 | systemctl start docker |
(4)设置阿里云镜像(提高docker安装软件时的下载速度,也可以设置其他镜像)
登录阿里云容器镜像服务页面获取镜像地址(我的地址:https://rfe996n7.mirror.aliyuncs.com)
(5)编辑或创建 Docker 的配置文件,并添加镜像
1 | sudo mkdir -p /etc/docker |
在配置文件daemon.json中添加镜像
1 | { |
(6)加载配置文件并重启Docker让配置生效
1 | sudo systemctl daemon-reload |
(7)查看配置的镜像是否生效
1 | docker info |
(8)docker操作
- 进入docker容器
1 | docker exec -it [容器名称或ID] /bin/bash |
6. 安装docker-compose
(1)下载docker-compose
1 | sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
(2)授予文件夹可执行权限
1 | sudo chmod +x /usr/local/bin/docker-compose |
(3)创建软链
1 | sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose |
(4)验证是否安装成功
1 | docker-compose --version |
注:’/usr/bin’ 是一个标准的系统目录,存放着大多数系统命令;通过创建软链,可以在终端中直接使用’docker-compose‘命令,而不必每次输入全路径’**
/usr/local/bin/docker-compose
**‘,从而使命令调用更加方便1
2
3
4# 没有创建软链
/usr/local/bin/docker-compose up -d
# 创建软链后
docker-compose up -d
7. 安装systemd
- 注:systemd是服务管理软件,如果不采用docker方式部署而是采用传统方式部署,则systemd非常有用
(1)yum方式安装(需要先安装yum)
1 | yum install systemd |
(2)创建并编辑配置文件(以frps.service
为例)
1 | vi /etc/systemd/system/frps.service |
写入内容
1 | [Unit] |
(3)常用systemd命令
1 | # 启动frp |
8. 安装npm
(1)下载npm安装包
1 | wget https://npm.taobao.org/mirrors/node/v10.14.1/node-v10.14.1-linux-x64.tar.gz |
- 注:如果无法在云服务器下载,就在主机下载再上传
(2) 解压(到适当目录)
1 | tar -xvf node-v10.14.1-linux-x64.tar.gz |
(3)添加环境变量(我的安装目录在:’/usr/local/lib/node-v10.14.1-linux-x64‘)
1 | vi /etc/profile |
1 | export NODE_HOME=/usr/local/lib/node-v10.14.1-linux-x64 |
1 | source /etc/profile |
(4)可以设置镜像
1 | npm config set registry https://registry.npmmirror.com |
(5)检测是否成功
1 | npm -v |
8.1 安装并使用pm2
PM2 是一个流行的 Node.js 进程管理器,旨在简化 Node.js 应用程序的管理和监控;安装 PM2 之前需要先安装 Node.js,而 Node.js 包含了 npm;所以安装PM2之前要先安装npm;
1 | npm install pm2 -g |
- 启动应用
1 | # 在启动前记得用“npm i”安装依赖 |
- 查看进程状态
1 | pm2 status |
- 重启应用
1 | pm2 restart app.js |
- 停止应用
1 | pm2 stop app.js |
- 删除应用
1 | pm2 delete app.js |
- 查看日志
1 | pm2 logs |
9. 安装git
- 注:这里使用下载安装包的安装方式,需要自己编译、安装,所以需要先安装一些依赖(包括gcc、gcc-c++);这里使用了yum命令,所以是需要先安装yum的
1 | sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y |
(1)下载安装包
1 | wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.37.2.tar.gz |
(2)解压
1 | tar -zxvf git-2.37.2.tar.gz |
(3)编译
1 | cd git-2.37.2 |
(4)安装
1 | # 安装到自己选择的目录(即prefix后跟随的目录) |
(5)修改环境变量
1 | vi /etc/profile |
1 | # 让环境变量生效 |
(6)验证是否安装成功
1 | git -v |
9.1 git的使用方法
(1)提交代码
1 | # 查看当前分支代码状态 |
(2)新建分支/切换分支
1 | # 查看现有的分支 |
(3)代码贮藏/弹出(得到一个‘clean work tree’,可以方便的切换到其他分支)
1 | # 将还没有提交的代码贮藏 |
(4)使用远程仓库(默认的远程仓库引用为‘origin’)
1 | # 查看远程仓库 |
10. 安装nginx
使用docker-compose的安装方式
安装的docker-compose.yml文件为:
1 | services: |
使用命令
1 | # 测试 Nginx 配置 |
功能实现及配置文件讲解
nginx的功能很多(部署前端项目、静态资源分离、反向代理、解决跨域问题、根据子域名访问不同的端口号),这里没有办法一下子写完,只能用到之后再添加;nginx最重要的就是它的配置文件,我根据我的使用经验说明一下
- 根据子域名(三级域名)访问不同的端口号
我们配置好子域名以后,会发现主域名和子域名访问的都是云服务器的80端口,但是我现在希望子域名能访问云服务器的不同端口;这一功能,我们可以借助nginx实现
在nginx的default.conf配置文件中,添加如下内容:
1 | server { |
- 注:
- “listen 80” 指定监听的端口
- “server_name”是nginx中的一个核心指令,负责匹配请求的域名(当客户端发送请求时,Nginx 会检查请求的
Host
头部,看看它匹配哪个server_name
配置的域名。一旦找到匹配的服务器块,Nginx 就会使用这个块中的配置来处理请求。) - “location” 匹配请求路径,“/”表示匹配所有请求路径;proxy_pass为请求转发的url ,需要注意的是如果nginx部署在docker中,这里的转发路径不能用“localhost”或者“127.0.0.1”,因为docker容器的默认网络(桥接模式)有独立性,所以这样配置请求会指向docker容器内部;正确的做法是配置宿主机的ip,这里我配置的云服务器的内网ip
解决跨域问题
我将前后端项目部署在同一台虚拟机上,但是前端项目却无法请求同在一台服务器上的后端项目,这就是跨域问题造成的
TODO 等公安备案完毕再进行进一步配置