按照网上教程各种尝试……最后我终于启动 Weblate 容器!但是系统资源也被占满了!无奈直接全删了!等以后服务器升级了再试吧。


一、搭建步骤

(〇)安装Docker环境

我一直使用宝塔面板,所以可以通过宝塔面板的软件商店安装Docker容器。

安装完后可以在“宝塔SS终端”里使用命令docker -v查看Docker版本,显示:

Docker version 20.10.22, build 3a2c30b

回到软件商店对Docker容器进行镜像获取设置

回到“宝塔SS终端”使用命令重启docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

(一)安装 Docker-compose

curl -L https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

(二)检测 Docker-compose 安装情况

docker-compose version

显示:Docker Compose version v2.15.1

(三)安装Git

yum install -y git

(四)克隆 weblate-docker 仓库

git clone https://github.com/WeblateOrg/docker-compose.git weblate-docker
cd weblate-docker

(五)使用命令vi docker-compose.override.yml创建一个yml文件,复制粘贴以下内容,按自己实际情况进行配置:

version: '3'
services:
  weblate:
    ports:
      - 80:8080
    environment:
      WEBLATE_EMAIL_HOST: smtp.example.com
      WEBLATE_EMAIL_HOST_USER: user
      WEBLATE_EMAIL_HOST_PASSWORD: pass
      WEBLATE_SERVER_EMAIL: weblate@example.com
      WEBLATE_DEFAULT_FROM_EMAIL: weblate@example.com
      WEBLATE_SITE_DOMAIN: weblate.example.com
      WEBLATE_ADMIN_PASSWORD: password for the admin user
      WEBLATE_ADMIN_EMAIL: weblate.admin@example.com

对应关系:

WEBLATE_EMAIL_HOST: SMTP发信服务器
WEBLATE_EMAIL_HOST_USER: SMTP发信邮箱账号
WEBLATE_EMAIL_HOST_PASSWORD: SMTP发信邮箱密码
WEBLATE_SERVER_EMAIL:服务器SMTP发信邮箱账号
WEBLATE_DEFAULT_FROM_EMAIL: 默认SMTP发信邮箱账号
WEBLATE_SITE_DOMAIN: 网站域名
WEBLATE_ADMIN_PASSWORD: 网站管理员密码
WEBLATE_ADMIN_EMAIL: 网站管理员邮箱

(六)使用命令docker-compose up启动Weblate 容器


二、部署过程中遇到的问题

问题一

问题描述:使用命令yum install -y git,报错:

-bash: /usr/bin/yum: /usr/lib/python2.7: bad interpreter: No such file or directory

有人说报错原因是:python的版本不匹配

1、使用命令whereis python查找python,显示

python: /usr/local/python3/bin/python3.9
/usr/local/python3/bin/python3.9-config

2、使用命令whereis yum查找yum,显示

yum: /usr/bin/yum /etc/yum.conf /etc/yum /usr/share/man/man8/yum.8

3、使用命令vi /usr/bin/yum修改,按I进入编辑模式,将首行的#!/usr/bin/python,更改成:#!/usr/bin/python3。按ESC后输入:wq保存退出!


问题二

问题描述:使用命令yum install -y git,报新错:

File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax

有人说原因是:Centos误删自带python2.7,导致yum、pip等命令不能用。需要先恢复python2.7之后,然后重新下载和安装更高级别的python环境。

1、删除干净python环境

rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps
whereis python|xargs rm -frv

2、使用命令cat /etc/redhat-release查看系统版本,显示:

CentOS Linux release 7.9.2009 (Core)

使用命令getconf LONG_BIT查看系统位数,显示:64

3、使用wget分别下载python以及yum的rpm包

因为我用的阿里云,所以我使用的是阿里云的centos镜像。

随意找个文件夹放安装包

mkdir /usr/local/src/python
cd /usr/local/src/python

从阿里云镜像网站下载。一定要下载和你系统版本对应的文件,你可以把7.9.2009替换成你对应的版本号。

wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/yum-plugin-protectbase-1.1.31-54.el7_8.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/yum-plugin-aliases-1.1.31-54.el7_8.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/yum-utils-1.1.31-54.el7_8.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/rpm-python-4.11.3-45.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/python-chardet-2.2.1-3.el7.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/python-kitchen-1.1.1-5.el7.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/python-setuptools-0.9.8-7.el7.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/python-urlgrabber-3.10-10.el7.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/python-pycurl-7.19.0-19.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/python-2.7.5-89.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/python-backports-1.0-8.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/python-ipaddress-1.0.16-2.el7.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/python-libs-2.7.5-89.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/libxml2-python-2.9.1-6.el7.5.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/lvm2-python-libs-2.02.187-6.el7.x86_64.rpm

4、安装

rpm -Uvh --replacepkgs lvm2-python-libs*.rpm --nodeps --force
rpm -Uvh --replacepkgs libxml2-python*.rpm --nodeps --force
rpm -Uvh --replacepkgs python*.rpm --nodeps --force
rpm -Uvh --replacepkgs rpm-python*.rpm yum*.rpm --nodeps --force

5、使用python -Vyum测试是否可用,显示:

Python 2.7.5

Loaded plugins: aliases, fastestmirror, protectbase You need to give
some command Usage: yum [options] COMMAND

修复成功!


问题三

问题描述:cd weblate-docker创建完docker-compose.override.yml文件后,使用命令docker-compose up启动weblate容器,报错显示:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

原因:没有安装Docker环境……所以我在本文前面加了0.安装Docker环境


问题四

问题描述:使用命令docker-compose up启动weblate容器,后面有2条告警1个错误:

WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.


百度的解决方案:vim /etc/sysctl.conf,添加配置:net.core.somaxconn = 1024

使用命令sysctl -p查看配置是否成功

WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.


百度的解决方案:echo 1 > /proc/sys/vm/overcommit_memory

Error response from daemon: driver failed programming external connectivity on endpoint weblate-docker-weblate-1 (省略N字): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use

使用指令netstat -tanlp查看端口占用情况,很明显我的80端口是被个DarkSheep的人小站占用了。
需要把docker-compose.override.yml文件里的80端口改了。

问题五

问题描述:1核1G的阿里云轻量应用服务器还是别装weblate了,亲测:磁盘高速读取,CPU负荷过50%,内存负荷过70%,DarkSheep个人小站都访问不了!

解决办法:重启服务器,第一时间通过远程链接,输入指令killall weblate关闭所有weblate进程。然后同步登录宝塔面板进入Docker管理器把所有容器、镜像全删了。weblate官网文档要求的最低配置是:

  • 2 GB 的内存
  • 2 个 CPU 核心
  • 1 GB 的存储空间