1. 准备一个新的Ubuntu22.04系统,并做好快照用于随时还原使用

已搭建,略。


2. 一个服务有几种安装到系统中的方法,可以以Nginx服务为例进行说明

安装方式

适用场景

包管理器安装(apt/yum)

快速部署、生产环境基础服务

源码编译安装

自定义需求高、特定版本

Docker 容器运行

开发、测试、轻量部署

Kubernetes 部署

微服务、云原生、集群管理

第三方包管理工具(Homebrew/Snap)

macOS/Linux 开发者环境

自动化部署脚本(Ansible)

DevOps、批量部署


3. 对比几种不同的安装方法,各有什么优缺点

安装方式

优点

缺点

适用场景

包管理器安装(apt/yum)

- 安装简单快速- 自带配置文件和启动脚本- 易于维护升级

- 版本可能不是最新- 定制性差

- 快速部署- 生产环境基础服务

源码编译安装

- 可完全自定义模块- 支持任意版本- 更适合高级用户

- 安装复杂、耗时- 维护成本高- 需手动管理服务

- 自定义模块需求- 特定版本使用

Docker 容器运行

- 环境隔离、跨平台兼容- 快速部署- 支持挂载配置文件

- 抽象层开销- 学习曲线稍高

- 开发测试- 微服务部署

Kubernetes 部署

- 支持自动扩缩容- 滚动更新、负载均衡集成- 服务发现机制完善

- 学习成本高- 基础设施复杂

- 微服务架构<br>- 集群化部署

第三方工具安装(Homebrew/Snap)

- 安装快捷- 适用于桌面开发环境

- 控制权有限- 版本受限

- macOS/Linux 开发者环境

自动化部署脚本(Ansible)

- 多台服务器批量部署- 提升运维效率

- 初期搭建成本较高- 需要学习配置语言

- DevOps 流程- 批量部署


4. 从源码构建服务时,常用的几条命令是什么

步骤

命令

说明

下载源码

wget http://.../nginx-x.x.x.tar.gz

获取源码压缩包

解压源码

tar -zxvf nginx-x.x.x.tar.gz

解压并进入目录

安装依赖

apt install build-essential ...

安装编译所需依赖

配置编译

./configure [options]

设置安装路径、模块等

编译代码

make

执行编译

安装程序

make install

安装到目标路径

启动服务

/path/to/bin/service

/usr/local/nginx/sbin/nginx


5. 到Nginx官网下载Nginx最新版源码,并执行构建,启动,访问其页面

下载源码

wget http://nginx.org/download/nginx-1.26.2.tar.gz

解压源码包:

tar -zxvf nginx-1.26.2.tar.gz
cd nginx-1.26.2

安装编译依赖:

sudo apt install build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev

配置编译参数:

./configure --prefix=/usr/local/nginx \
            --with-http_ssl_module \
            --with-http_realip_module \
            --with-http_gzip_static_module

编译并启动:

make
sudo make install
/usr/local/nginx/sbin/nginx

输入IP然后查看是否跳转到nginx的默认网页


6. 使用源码构建Python最新版本,启动服务并进入Python命令行,print任意内容

下载源码包:

wget https://www.python.org/ftp/python/3.13.0/Python-3.13.0.tgz

解压源码包

tar -zxvf Python-3.13.0.tgz
cd Python-3.13.0

安装依赖:

sudo apt install -y build-essential libssl-dev zlib1g-dev \
    libncurses5-dev libncursesw5-dev libreadline-dev libsqlite3-dev \
    libgdbm-dev libdb5.3-dev libbz2-dev libexpat1-dev liblzma-dev \
    tk-dev libffi-dev

配置编译选项:

./configure --enable-optimizations

编译源码:

make -j$(nproc)

安装到系统路径:

sudo make install

printf输出:


7. 使用源码构建Redis最新版本,启动服务并进入Redis命令行,set任意内容并get

下载源码包:

wget https://github.com/redis/redis/archive/refs/tags/8.0.2.tar.gz -O redis-8.0.2.tar.gz

解压源码包:

tar -zxvf redis-8.0.2.tar.gz 
cd redis-8.0.2

安装编译依赖:

sudo apt install -y build-essential tcl

编译:

make

安装到系统路径:

sudo make install

复制默认配置并启动

cp redis.conf /etc/redis.conf
redis-server /etc/redis.conf

实验:


8. 到Mysql官方网站下载其源码并构建,启动服务,连接到mysql

1.准备编译环境

# 更新系统包
sudo apt update

# 安装必要的依赖
sudo apt install -y git cmake build-essential libssl-dev libncurses5-dev libaio-dev libwrap0-dev libldap2-dev libtirpc-dev libsasl2-dev libnuma-dev libprotobuf-dev protobuf-compiler

2.下载mysql源码

# 克隆MySQL官方仓库
git clone https://github.com/mysql/mysql-server.git
cd mysql-server

# 切换到稳定版本分支(可选)
git checkout 8.0

3.构建Mysql

# 创建构建目录
mkdir build
cd build

# 使用cmake配置构建
cmake .. -DCMAKE_BUILD_TYPE=Release -DWITH_SSL=system -DWITH_BOOST=/path/to/boost

# 如果提示需要boost,可以这样处理:
# 下载boost
sudo apt install libboost-all-dev

# 或让cmake自动下载boost
cmake .. -DCMAKE_BUILD_TYPE=Release -DWITH_SSL=system -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost

# 编译(这会花费较长时间)
make -j$(nproc)

4.安装mysql

# 安装到系统
sudo make install

# 创建mysql用户和组
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

# 创建数据目录
sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql

5.初始化数据库

# 初始化MySQL数据目录
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data

# 记录临时密码(在初始化输出中)
# 或者使用--initialize-insecure跳过密码设置

6.启动服务

# 方法1:直接启动(前台)
sudo /usr/local/mysql/bin/mysqld --user=mysql --datadir=/usr/local/mysql/data

# 方法2:使用systemd(推荐)
# 创建systemd服务文件
sudo tee /etc/systemd/system/mysql.service > /dev/null <<EOF
[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=notify
User=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

# 重新加载systemd并启动服务
sudo systemctl daemon-reload
sudo systemctl start mysql
sudo systemctl enable mysql

7.连接到mysql

# 使用root用户连接
/usr/local/mysql/bin/mysql -u root -p

# 如果使用--initialize-insecure初始化,则初始无密码:
/usr/local/mysql/bin/mysql -u root

# 连接后建议修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';


9. 在使用源码构建完上面几个服务后,总结一下源码构建的关键步骤是哪些

步骤

说明

工具/命令

1. 下载源码

获取官方源码包

wget, git

2. 解压

解压源码文件

tar, unzip

3. 安装依赖

安装编译所需开发库

apt, yum, dnf

4. 配置

设置安装路径和模块

./configure, cmake, qmake

5. 编译

执行编译

make, make -j

6. 安装

将程序安装到系统路径

make install

7. 启动服务

验证是否安装成功

二进制执行文件

8. 环境变量

可选,方便命令调用

export PATH=...

以他人的幸福为幸福,以他人的享乐为享乐。