CentOS 8.x 基本操作
申请购买云服务器
CentOS 8.x
root
下载安装XShell等终端
XShellrootLinux
CentOS 8.x 常用操作
升级、更新系统(可选步骤)
yum update
# 或
yum update -y
【Q&A】Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist
问题描述:
CentOS 8.xyum update
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
解决办法:
进入配置路径:
cd /etc/yum.repos.d/
更新配置,执行命令:
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
刷新缓存
yum makecache
验证
yum update -y
yum -y install vim
结论:
问题解决!
安装解压缩命令
yum install -y zip gzip bzip2
安装rz、sz上传下载命令
yum install -y lrzsz
xshellrzsz filename
vim
vim /etc/vimrc
vim
InsertvimInsert
set ts=4
set expandtab
set nu
set paste
Esc:wq
常用压缩命令(参考)
# zip与unzip操作
zip hellogo.zip hello.go # 把hello.go文件打包成hellogo.zip
zip hello.zip hello.go hello # 把hello.go和hello两个文件打包成hello.zip
# -r表示递归查找文件,下面命令把当前目录所有文件打包压缩成myfile.zip
zip -r myfile.zip ./*
zip -r test2.zip test2/*
zip -m myfile.zip ./rpm_info.txt
# 向压缩文件中myfile.zip中添加rpm_info.txt文件
zip -d myfile.zip smart.txt
# 删除压缩文件中smart.txt文件
unzip myfile.zip # 解压缩到当前目录
# 解压缩到指定目录
unzip -o -d /home/sunny myfile.zip
# 把myfile.zip文件解压到 /home/sunny/,如果目录不存在则自动创建
# -o:不提示的情况下覆盖文件;
# -d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下。
# 把当前目录下所有文件打包
tar -cvzf code.tar.gz ./*
tar -cvzf jpg.tar.gz *.jpg
# 将目录里所有jpg文件打包成jpg.tar后,将其用gzip压缩,生成一个gzip压缩包,命名为jpg.tar.gz
tar -xzvf file.tar.gz # 解压tar.gz
# 常用tar解压命令
# tar –xvf file.tar
# tar -xzvf file.tar.gz
# tar -xjvf file.tar.bz2
# tar –xZvf file.tar.Z
查看端口占用(参考)
yum install -y nmap-ncat
# 如查看80端口占用情况使用如下命令:
lsof -i tcp:80
# 检查端口被哪个进程占用
netstat -lnp|grep 3308
# 列出所有端口
netstat -ntlp
进程管理(参考)
ps aux # 查看系统有哪些进程正在运行
kill -9 PID # 根据进程号PID暴力杀死进程
kill -9 2899 # 暴力杀死2899号进程
kill -15 2899 # 优雅结束这个进程
pkill -9 pts/0 # 踢出某个终端
pkill -9 pd-server # 杀死进程
# 根据名称查找进程及相关进程,如:tidb
ps -ef|grep tidb|grep -v grep
# tidb及相关的tikv、pd进程均被列出,前提是tikv、pd、tidb均被安装在同一目录tidb下
卸载软件的一般操作(参考)
# 查找相关安装包
rpm -qa | grep softname
softname-version-...
softname-version-...
# 逐个卸载
rpm -e --nodeps softname-version-...
rpm -e --nodeps softname-version-...
# 删除软链接
rm -f /soft_bin/softname
# 删除相关目录
rm -rf /soft_bin/soft-dir
rm -rf /data/soft-data
# 删除相关环境变量设置
vim /etc/profile
# 刷新环境变量
source /etc/profile
# 确认卸载
softname --version
修改主机名(可选、参考)
# 修改主机名
hostnamectl set-hostname newhostname
# 重启生效
reboot
# 立刻关机
shutdown now
配置python2/3环境(可选、参考)
# 安装依赖项
yum install -y openssl-devel curl nss libcurl
# 安装pip需要先安装epel-release包
yum install -y epel-release
yum install -y python # 一般系统默认已经集成
# 安装python3
yum install -y python3
# 安装openssl-devel
yum install -y libffi-devel python-devel openssl-devel
# 安装pip
yum install -y python-pip
yum install -y python3-pip
# 升级pip
pip install --upgrade pip
pip3 install --upgrade pip
CentOS 8.x下安装并设置Go语言环境
下载、安装与设置
以go 1.19.2为例,先下载并安装:
# 下载,下载地址可以在go语言中文网复制
wget https://studygolang.com/dl/golang/go1.19.2.linux-amd64.tar.gz
# 解压缩到/usr/local/go
sudo tar -C /usr/local -xzvf go1.19.2.linux-amd64.tar.gz
也可以分步骤操作,先解压缩,再移动到目标位置
# 先解压缩
tar -xzvf go1.19.2.linux-amd64.tar.gz
# 然后移动到/usr/local下
mv go /usr/local/
然后设置环境变量:
sudo vim /etc/profile
Go
InsertvimInsert
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Esc:wq
执行命令刷新环境变量:
source /etc/profile
验证安装:
go version
echo $GOROOT
echo $GOPATH
设置模块代理
https://goproxy.cn
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
Go
CentOS 8.x下安装node.js
下载node.js安装包
# 下载node.js安装包,官方下载
wget https://nodejs.org/dist/v16.18.0/node-v16.18.0-linux-x64.tar.xz
解压缩并安装
# 准备安装目标路径
mkdir /opt/node
# 解压缩
tar -xvf node-v16.18.0-linux-x64.tar.xz
# 移动node文件到目标位置
mv ./node-v16.18.0-linux-x64/* /opt/node
# 删除当前路径下的空文件夹
rm -rf ./node-v16.18.0-linux-x64
配置node 环境变量
vim /etc/profile
追加环境变量
InsertvimInsert
export NODE_HOME=/opt/node
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$PATH:$NODE_HOME/lib/node_modules
Esc:wq
刷新环境变量,使配置生效
source /etc/profile
验证node安装
node -v
npm -v
npm镜像配置
提示: 如果是香港区服务器,不要设置内地镜像站,否则会很慢
npm config set registry https://registry.npm.taobao.org
安装yarn等组件
cd /opt/node
# 该命令实测需要root操作
npm install -g yarn
yarn --version
# 安装vue-cli
npm install -g @vue/cli
安装淘宝node镜像及cnpm
提示: 如果是香港区服务器,不要设置内地镜像站,否则会很慢
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install
node.js
CentOS 8.x下安装docker
安装依赖项
yum install -y yum-utils device-mapper-persistent-data lvm2
# 配置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker依赖项containerd.io
yum install -y containerd.io
安装docker-ce
yum install -y docker-ce docker-ce-cli
配置docker镜像站
docker
mkdir /etc/docker
vim /etc/docker/daemon.json
输入以下内容:
InsertvimInsert
{"registry-mirrors":["https://3wzyb32e.mirror.aliyuncs.com"]}
Esc:wq
docker
设置开机自启动
systemctl enable docker
# 启动docker
systemctl start docker
验证安装
docker version
# 查看配置
docker info
docker ps
修改docker存储路径(可选)
docker
docker/data/docker
Docker/var/lib/docker
# 准备数据目录
mkdir -p /data/docker
# 修改docker.service文件
vim /lib/systemd/system/docker.service
ExecStart ExecStart
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
--graph=/data/docker --storage-driver=overlay2--graphdocker
把上面的默认配置改成以下内容:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph=/data/docker --storage-driver=overlay2
--graph=/data/dockerdocker
刷新配置,重启docker
systemctl daemon-reload
systemctl restart docker
查看docker信息
docker info
看到如下信息即为生效:
Docker Root Dir: /data/docker
docker
CentOS 8.x下安装docker-compose
正常安装
yum install -y docker-compose
# 验证安装
docker-compose version
curl安装
curl
# 自适应平台参数下载
curl -L https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 赋予docker-compose可执行权限
chmod +x /usr/local/bin/docker-compose
提示:需要服务器能够访问github,推荐的安装方式
也可直接指定平台参数下载:
# linux-x86_64
sudo curl -L https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64 > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# linux-armv7
sudo curl -L https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-armv7 > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
pip安装
pythonpythonpip
提示:实测该方式容易出错,不推荐
# 安装pip
yum -y install epel-release
yum -y install python3-pip
pip3 install --upgrade pip3
# 安装docker-compose
pip3 install docker-compose
验证安装
docker-compose version
docker-compose
docker部署redis
dockerredis
docker run --name redis --publish 6379:6379 --restart always -d redis:latest
docker部署mysql
警告:在生产环境的服务器上暴露数据库端口是危险操作,应在服务器端完成数据库创建和维护,并严格把数据库的访问权限限制在服务器集群内网。
mysql 5.7
docker run --name mysql -p 3306:3306 --privileged=true --restart=always -e MYSQL_ROOT_PASSWORD=restar@503 -d mysql:5.7
8.0.30
docker run --name mysql -p 3306:3306 --privileged=true --restart=always -e MYSQL_ROOT_PASSWORD=restar@503 -d mysql:8.0.30
MYSQL_ROOT_PASSWORDmysqlroot
docker-compose编排(参考)
vim docker-compose.yml
InsertvimInsert
version: '2'
services:
mysql:
container_name: mysql
image: mysql:latest
privileged: true
restart: always
environment:
MYSQL_ROOT_PASSWORD: restar@503
ports:
- 3306:3306
# network_mode: "host"
# hostname: mysql
redis:
container_name: redis
image: redis:latest
restart: always
ports:
- 6379:6379
command: redis-server --port 6379 --requirepass "restar@501"
# network_mode: "host"
# hostname: redis
Esc:wq
--requirepassredis
docker-compose容器控制
docker-compose.yml
# 构建所有镜像
docker-compose build
# 启动所有容器
docker-compose up -d
# 停止所有容器
docker-compose stop
# 停止并删除所有容器
docker-compose down
docker-compose
CentOS 8.xGo
dockerfile编制(参考)
该操作可用于生产部署,为补充内容
gogolangqrdemovim Dockerfile
InsertvimInsert
FROM alpine:latest
MAINTAINER from HIST by restar
# 设置alpine镜像源,设置时区等
RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/latest-stable/main\nhttps://mirror.tuna.tsinghua.edu.cn/alpine/latest-stable/community" > /etc/apk/repositories && \
#apk update && apk upgrade && \
apk add --no-cache tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" >> /etc/timezone && \
# Alpine Linux doesn't use pam, which means that there is no /etc/nsswitch.conf,
# but Golang relies on /etc/nsswitch.conf to check the order of DNS resolving
# (see https://github.com/golang/go/commit/9dee7771f561cf6aee081c0af6658cc81fac3918)
# To fix this we just create /etc/nsswitch.conf and add the following line:
echo "hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4" >> /etc/nsswitch.conf && \
mkdir -p /restar/config && mkdir -p /restar/logs
# 复制配置文件
COPY ./config /restar/config/
# 复制主程序
COPY ./qrdemo /restar/
# 设置工作路径
WORKDIR /restar
# 发布宿主机映射路径
VOLUME /restar/logs
# 开放端口8080
EXPOSE 8080
# 延迟启动,等待mysql就绪
CMD sleep 60;/restar/qrdemo --release=true --port=8080 --logdir="/restar/logs"
Esc:wq
docker-compose集成编排(参考)
docker-compose.yml
version: '2'
services:
mysql:
container_name: mysql
image: mysql:latest
privileged: true
restart: always
environment:
MYSQL_ROOT_PASSWORD: restar@503
ports:
- 3306:3306
# network_mode: "host"
# hostname: mysql
redis:
container_name: redis
image: redis:latest
restart: always
ports:
- 6379:6379
command: redis-server --port 6379 --requirepass "restar@501"
# network_mode: "host"
# hostname: redis
qrdemo:
build:
context: ./
container_name: qrdemo
image: qrdemo:latest
privileged: true
restart: always
depends_on:
- mysql
ports:
- 8080:8080
volumes:
- /data/restar/logs:/restar/logs
# network_mode: "host"
# hostname: qrdemo
dockerhost
# 配置host发现
echo -e "127.0.0.1 mysql\n127.0.0.1 redis\n127.0.0.1 qrdemo" >> /etc/hosts
前端构建、部署与编排相关内容暂时搁置。
更进一步的内容,及若干细节,请具体问题具体分析。