个人云服务器常用工具

October 12, 2024

前言

在本篇文章中,记录我的云服务器上安装的一些我用到的一些软件。

我使用的Linux版本是Ubuntu 22.04-server 64bit

先使用以下命令更新一下apt: apt-get update --fix-missing

目前用到的软件如下:

  • Git
  • Nginx & Cerbot
  • Nvm & Nodejs & Npm
  • Docker
  • Docker-Mysql
  • Docker-Redis
  • Docker-ElasticSearch
  • ServerStatus
  • Sqlite3
  • musl

Git

用于拉取远程仓库中的代码。

apt install git-all

git --version

Nginx

安装

用于反向代理。安装步骤如下:Install Nginx on Linux-Ubuntu

使用apt install nginx安装前需要先安装先决条件和验证官方的软件包

sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
    
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

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

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

# 安装
apt install nginx

# nginx配置文件:
cd /etc/nginx

解决80端口被apache2占用

# 如果服务器上有Apache2占用80端口,可以关闭它
service apache2 stop

# 开启nginx
service nginx start

配置文件修改后生效

# nginx重新生效
service nginx reload

Cerbot

用于安装Https的证书,可以详细的安装使用在我的博文-Nginx多域名解析、https证书

NVM & Nodejs & Npm

用于启动NPM相关的项目。例如react+next.js等。

使用官方文档中推荐的「NVM」来安装 NodejsNpm

安装NVM

首先安装NVM

git clone https://github.com/nvm-sh/nvm.git

# 启动安装脚本
bash nvm/install.sh

# 刷新bash文件
source ~/.bashrc

# 验证是否安装成功(显示nvm则表示安装成功)
command -v nvm

安装Nodejs&Npm

nvm install stable

node --version

npm --version

配置太低导致的 npm install ends with "Killed" 的处理

如果服务器的配置过低,比如我的一台服务器就是1c1g的,执行npm install时就会卡死崩溃。

 /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
 /sbin/mkswap /var/swap.1
 /sbin/swapon /var/swap.1

这些命令会在 /var 目录下创建一个名为 swap.1 的 1GB 交换文件,将其格式化为交换文件,然后启用供系统使用。这样就增加了可用的虚拟内存量,使系统可以处理更多进程和数据,而不是仅靠物理内存。

更多的关于该问题的讨论: npm install ends with "Killed"

Docker

虚拟容器技术。

安装

官方文档

按照官方的教程通过apt的方式安装就可以了。

安装 docker-compose

顺便把docker-compose也安装上:

apt install docker-compose

更换镜像源

如果使用国内的服务器,默认的官方镜像源是用不了的,需要更换成其他可用的镜像源。

# 如果之前没有添加数据源,该文件需新建,更换镜像源
vim /etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://docker.xxx.xxx"
    ]
}

# 重启 docker
service docker restart

Docker-Mysql

安装

如果想快速启动一个mysql,那么用docker应该是最快的。

# 拉取镜像
docker pull mysql:latest

# 运行容器
docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

#进入容器
docker exec -it <mysql-container-id或name> bash

# 登录用户
mysql -u root -p

记得开放相应的端口号。

迁移docker中的mysql数据

在源机器上获取所有数据对应的sql文件(如果数据库内容较多,不建议这样做):

# 进入容器
docker exec -it <mysql-container-id或name> bash

# 使用 mysqldump 进行备份
mysqldump -u root -p --all-databases > all_databases.sql

# 退出bash
exit

# 宿主机中创建存储目录
mkdir -p /docker/mysql/sql

# 将容器中的文件拷贝到机器上
docker cp mysql:all_databases.sql /docker/mysql/sql

# 查看文件
vim /docker/mysql/sql/all_databases.sql 

然后将文件上传到目标机器上(已安装docker-mysql)的某个位置并执行下面的内容:

# 进入容器同时将数据文件导入到数据库中
docker exec -i mysql mysql -u root -p"your_password" < /docker/mysql/sql/all_databases.sql && echo "SQL 导入成功!" || (echo "SQL 导入失败!"; exit 1)

Docker-Redis

同样为了快捷方便,在docker中运行redis是一个不错的选择。

# 拉取镜像
docker pull redis:latest

# 运行容器
docker run -itd --name redis -p 6379:6379 redis --requirepass "your_password"

# 进入容器
docker exec -it redis /bin/bash

如果要远程访问记得开启端口号。

Docker-ElasticSearch

请参照Elastic官网教程。docker中部署ElasticSearch比mysql、redis稍微麻烦一点,但目前看的教程中,属官网的最为简单高效。

但如果服务器的内存比较少,不要直接用 -m来指定JVM的大小。而是使用下面的命令来启动,如果要运行单节点要加上“discovery.type=single-node”。

docker run --name es01 --net elastic -p 9200:9200 -it -e ES_JAVA_OPTS="-Xmx256m -Xms256m" -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:8.14.2

ServerStatus

一款开源的系统监控软件,github地址,采用CS架构,客户端作为被监控端向服务端发送系统信息,服务端来展示这些信息。

服务端安装

我在服务端使用docker compose的方式(注意:国内服务器访问官方镜像源可能会报错,需要更换docker的数据源)。

git clone https://github.com/cppla/ServerStatus.git

cd ServerStatus

# 根据自己需要修改compose文件
vim docker-compose.yml

# 修改相关配置
vim config.json

# 执行
docker-compose up -d

如果要改一些服务配置需要对server/config.json配置文件或者docker-compose.yml内容做一些修改。例如:增加密码,修改映射端口等。记得开放相应的端口号。

若遇到在dockerfile执行过程中apt-update失败的话,可以更换数据源,在 Dockerfile文件中Run apt-get update...前的位置增加以下内容:

RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt-get update -y && apt-get -y install gcc g++ make libcurl4-openssl-dev

客户端安装

客户端的话,同样先用git下载下来所需的客户端执行文件,使用python3 client-linux.py 去执行。

git clone https://github.com/cppla/ServerStatus.git

cd ServerStatus

# 修改SERVER地址,username帐号, password密码
vim clients/client-linux.py

# 后台执行
nohup python3 clients/client-linux.py &

usernamepassword是在服务端的config.json中设置的。

效果:

image-20241010094749737

Sqlite3

有的服务器自带这个功能,没有的话就安装一下,需要用到sqlite的数据库。

apt install sqlite3

musl

apt-get -y install musl

用于执行一些GO打包成的可执行程序,不安装这个的话会报错找不到可执行文件。

pandoc

用于将markdown文件转换为html文件,生成RSS所需的xml文件。

# 安装
apt-get install pandoc
# 使用
pandoc -f markdown -t html -o README.html README.md
Comments