1.python部署

1.0.删除miniconda及其所有虚拟环境

一开始使用了miniconde,但感觉不如直接使用venv方便,所以删除minicode,删除别的应用一样的方法。

conda -V                 #查看安装版本
find ~ -name 'miniconda*'             #找到安装地址
rm -rf  /home/robot/miniconda3           #根据安装地址删除
conda -V                 #确认删除成功

1.1.查看系统版本和内核

因为外网的环境要导入内网,所以首先要确定内外网的系统环境一致。我使用的是arm的麒麟v10。

cat /etc/issue
cat os-release
uname -a

1.2.安装全量python环境

麒麟系统自带了python2和3版本的但都是轻量,没有pip等一系列包,所以需要安装一个全量的python环境,然后以这个环境创建venv虚拟环境,我这里使用python3.11.9版本,因为一开始使用的3.12.2版本不兼容哪个库来着,然后和别的公司技术交流,感觉使用3.11的比较多。

1.2.1.查看系统自带python环境

ls -l /usr/bin/python3*      #查看你有多少python环境
python3 -V
which python3          #如果在/usr/bin/python3,大概率就是环境自带的轻量级python
python3 -c "import numpy,pandas"       #出错,大概率轻量级

1.2.2.安装系统必要依赖

这里需要安装系统依赖包,然后导入到内网的时候也要有这些包进行安装,不然会出现_ssl等底层链接错误

sudo apt update
sudo apt-get update
sudo apt-get install -y libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev tk-dev build-essential

1.2.3.安装全量python环境

wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz   #1.下载python源码
tar -xvzf Python-3.11.9.tgz   #2.解压
cd Python-3.11.9
./configure --prefix=/usr/local/python3.11 --enable-optimizations --with-ensurepip=install# 3. 配置
make -j$(nproc) #4.编译
sudo make altinstall# 5. 安装(避免覆盖系统自带 python)
/usr/local/python3.11/bin/python3.11 -m pip -V #4.查看安装好的全量python版本

更换镜像源,这样pip安装的时候使用国内源会快一些

sudo vi /etc/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
pip config list  #验证是否生效

1.2.4.创建虚拟环境

创建虚拟环境,安装python包

/usr/local/python3.11/bin/python3.11 -m venv  ~/py311
source  ~/py311/bin/activate
python -V
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cpu
pip install -r requirements.txt --ignore-installed     #刪掉錯誤的
pip install --upgrade --force-reinstall transformers tokenizers sentence-transformers
pip install "transformers==4.44.2"

如果没有pip

wget https://bootstrap.pypa.io/get-pip.py  
python get-pip.py

然后在这个虚拟环境里面运行自己的代码,进行测试。

1.2.4.git模型需注意

git模型文件的时候,下载很快,但模型根本没下下来,那么就需要下面操作

sudo apt-get install git-lfs
git lfs install
git lfs pull #在模型文件的目录下,这样才会把bin这种大文件下载完整

1.3.打包环境

1.3.1.打包系统必要依赖

mkdir offline_pkgs_ssl
sudo apt-get install --download-only  libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev tk-dev build-essential
cp /var/cache/apt/archives/*.deb offline_pkgs_ssl/
tar czvf offline_pkgs_ssl.tar.gz offline_pkgs_ssl/

1.3.2.打包python环境依赖

pip freeze > requirements.txt
pip download -r requirements.txt -d ./offline_pkgs_python

如果有不兼容那么可以手动修改requirements.txt。

1.4.内网部署环境

1.4.1.安装系统必要依赖

tar xzvf offline_pkgs_ssl.tar.gz
cd offline_pkgs_ssl
sudo dpkg -i *.deb
sudo apt-get install -f   # 用本地包补齐依赖

1.4.2.安装python环境依赖

首先和外网一样,拿到下载的python安装包,进行全量python环境的安装,然后创建虚拟环境,然后安装python环境依赖包。

/usr/local/python3.11/bin/python3.11 -m venv  ~/py311
pip install --no-index --find-links=./offline_pkgs_python -r requirements.txt

要是没有pip

python ~/offline_pkgs/get-pip.py --no-index --find-links=offline_pkgs_python
pip download pip setuptools wheel -d ./offline_pip
python3 -m ensurepip --upgrade   # 如果支持
python3 ./offline_pip/pip-*.whl/pip install . --no-index

2.docker部署

2.1. 安装 Docker

sudo apt-get update
sudo apt-get install -y docker.io     #1.用 apt 安装docker
docker --version                 #2.检查是否成功
sudo systemctl start docker        #3.启动
sudo systemctl enable docker

2.2.构建镜像

2.2.1.更换国内源

sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json
{
	"registry-mirrors":[
		"https://docker.m.daocloud.io",
		"https://registry.docker-cn.com",
		"https://hub-mirror.c.163.com"	,
		"https://dockerproxy.com",
		"https://pee6w651.mirror.aliyuncs.com"
	]
}
sudo systemctl daemon-reexec
sudo systemctl restart docker 

2.2.2.创建Dockerfile

在项目的同级目录下创建Dockerfile

FROM python:3.11.9        #自己项目的python环境版本
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt -i https://pypi.tsinghua.edu.cn/simple    #安装python依赖包
COPY . .
CMD ["python","forth_main.py"]     #运行项目启动文件

2.2.3.构建镜像

docker build -t myapp:1.0 . #构建镜像,名叫myapp:1.0 
docker images   #查看镜像

2.3.运行测试

使用myapp:1.0镜像运行容器,端口映射物理机5000映射容器5000,目录volumn挂载物理机/home/kylin/zoe映射容器/app。这样容器里的 /app 就是宿主机的/home/kylin/zoe/docker_dir/AI0904代码目录,修改宿主机目录下代码,容器里立即生效

docker run -it --rm -p 5000:5000 -v /home/kylin/zoe/docker_dir/AI0904:/app myapp:1.0

然后使用wget发送post请求进行本地物理机测试

wget --header="Content-Type: application/json" --post-data='{"query":"飞行任务","deep":false}'  -O - http://127.0.0.1:5000/ai/map

2.4.导出docker和镜像

apt-get download docker.io     #下载 docker.io_xxx.deb
docker save -o myapp.tar myapp:1.0 #  下载镜像成tar包

把这两个文件导出

2.5.内网部署

sudo dpkg -i docker.io_xxx.deb    #安装docker
sudo apt-get -f install   # 用本地依赖包补齐
docker load -i myapp.tar   #导入镜像
docker run -it --rm -p 5000:5000 -v /home/kylin/zoe/docker_dir/AI0904:/app myapp:1.0#运行服务

这个时候修改挂载在/home/kylin/zoe/docker_dir/AI0904目录下的代码进行调试即可。

2.6.docker常用操作

2.6.1.镜像

docker images  # 查看本地镜像
docker rmi <镜像ID或名字>   # 删除指定镜像
docker image prune -f  # 删除未被使用的镜像
docker system prune -a -f # 删除所有无用镜像、容器、网络、缓存

2.6.2.容器

docker ps  # 查看正在运行的容器
docker ps -a   # 查看所有容器(包括已停止的)
docker run -d --name mycontainer -p 5000:5000 myapp:1.0  # 启动一个新的容器(后台运行)
docker start <容器ID或名字> # 启动一个已停止的容器
docker stop <容器ID或名字># 停止指定容器
docker stop $(docker ps -q)# 停止所有运行中的容器
docker rm <容器ID或名字># 删除指定容器
docker container prune -f  # 删除所有已停止的容器
docker exec -it <容器ID或名字> /bin/bash    # 进入容器交互终端
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐