服务器配置
解决ssh连接不了的问题(修改本地电脑的 .ssh/known_hosts )
CentOS 8中 更新或下载时报错:为仓库 ‘appstream‘ 下载元数据失败 : Cannot prepare internal 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 clean all && yum makecache
yum update -y
阿里云服务器 Docker 的安装 centos8.2
# 安装docker会报containerd.io版本过低的问题,下载最新版本
# 浏览器打开地址:https://download.docker.com/linux/centos/ ,找到想要的版本地址并复制,我的是这个:
wget https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.4.3-3.1.el8.x86_64.rpm
yum install -y containerd.io-1.4.3-3.1.el8.x86_64.rpm
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 下面这个失败就重试几次
yum install -y docker-ce docker-ce-cli containerd.io
# yum install git
# 启动和测试
sudo systemctl start docker # 启动docker
# docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
# 解决方式
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker run hello-world #测试
# 查看docker状态
sudo docker info
# 安装docker -compose
sudo yum install epel-release
sudo yum install -y python-pip
pip3 install docker-compose
sudo yum upgrade python*
多容器间使用名称通信(避免IP变化导致连接问题)
# 查看虚拟网卡,docker 安装好之后默认会创建三个虚拟网卡
docker network ls
# 由于默认的网卡需要设置端口映射并且 IP 地址会随着容器的启动停止而变动,所以我们这里选择使用自定义网络来实现容器之间互相访问。
# 创建一个自定义的网络,网络驱动使用 bridge,在自定义网卡上,容器可以通过名称或者别名相互解析。
docker network create my-net
# 查看网卡详细信息
docker network inspect my-net
# 容器去掉网卡
docker network disconnect my-net 容器名
### 仅自定义网络也不行,需要用到网络别名,容器启动时如下:
--network my-net --network-alias hhydjango
# 通过在容器里访问A容器的网络别名来访问A容器
Django主工程
工程源码放到服务器,启动docker
# 测试
docker pull python:3.8
# 构建镜像
docker build -f Dockerfile -t hhy-django:v1.0 .
# 测试运行
docker run --rm -it --privileged=true --name hhydjango \
-p 9002:9002 \
--network my-net --network-alias hhydjango \
-v $(pwd):/var/www/html/djangoProject \
hhy-django:v1.0
# 正式运行
docker run -itd --privileged=true --restart always --name hhydjango \
-p 9002:9002 \
--network my-net --network-alias hhydjango \
-v $(pwd):/var/www/html/djangoProject \
hhy-django:v1.0
# docker run参数案例
# --rm 和 --restart always 不能同时使用
# --network my-net
# --net=host 和宿主即共享网络
nginx容器 nginx:1.26
配置修改后nginx不用重启,nginx -s reload即可更新节点
创建镜像
docker build -f Dockerfile -t hhy-nginx:v1.0 .
执行镜像
# 测试运行
docker run -it --privileged=true --rm --name hhy-nginx -p 80:80 -p 443:443 \
--network my-net --network-alias hhy-nginx \
-v $PWD/config/conf.d:/etc/nginx/conf.d \
-v $PWD/config/cert:/usr/local/nginx/cert \
-v $PWD/log:/var/log/nginx hhy-nginx:v1.0
# 正式运行
docker run -itd --privileged=true --restart always --name hhy-nginx -p 80:80 -p 443:443 \
--network my-net --network-alias hhy-nginx \
-v $PWD/config/conf.d:/etc/nginx/conf.d \
-v $PWD/config/cert:/usr/local/nginx/cert \
-v $PWD/log:/var/log/nginx hhy-nginx:v1.0
-------------------------------------------------备注----------------------------------------------------------------------------------------------
python
python:3.8
venv的安装
安装venv
sudo apt install python3-venv
或
yum install python3-venv
创建虚拟环境
python3 -m venv venv
启用虚拟环境
source ./venv/bin/activate
退出虚拟环境
deactivate
安装依赖
把requirements.txt文件放到工程根目录
./venv/bin/pip install --default-timeout=10000 install -i https://pypi.doubanio.com/simple/ -r requirements.txt
uwsgi的配置
正式环境使用这个:
socket=0.0.0.0:8000
测试时使用这个:
http=0.0.0.0:8003