- python: python3.9 (Centos9默认已安装python3.9版本)
- Git
- mysql、mariadb (django支持的数据库)
- ceph 集群 :版本17.2.3 (自行配置)
- python3-rados (与ceph的通信使用官方librados的python包)
- mariadb-connector-c-devel # mysqlclient依赖
创建并切换进入目录/home/uwsgi/,在此路径下拉取代码:
git clone https://gitee.com/gosc-cnic/iharbor.git
-
如果不用python虚拟环境请跳过下面1.3和1.4小节python虚拟环境的搭建内容,直接安装iharbor服务需要的python依赖库:
pip install -r requirements.txt
-
环境依赖包
dnf install gcc python3-devel -y
使用pip命令安装pipenv。
pip install pipenv
在代码工程根目录下,即文件Pipfile同目录下运行命令:
pipenv install
- 请自行安装 mysql 数据库,如果使用其他django支持的数据库,请根据官方文档自行配置。
- 安装数据库依赖(mysql)
dnf install mariadb-connector-c-devel
- 查看1.7小节的内容。根据自己的情况修改 security_settings.py 中有关数据库的配置。
与ceph的通信使用官方librados的python包python3-rados。
- 安装 python3-rados
dnf install python3-rados.x86_64
- python包会自动安装到系统python3第三方扩展包路径下(/usr/lib64/python3.9/site-packages/)。
注意:在使用虚拟环境时需要将以下文件复制到虚拟环境下对应的目录中。
rados.cpython-39-x86_64-linux-gnu.so
rados-2.0.0-py3.9.egg-info
- ceph的配置, 支持多个ceph集群:
- 在项目在第一次启动后需要登录到后端配置ceph,否则无法使用存储服务。
- 对应的ceph配置文件存储在工程文件 data 目录中。
后端ceph配置中必须有一个 别名 为
default
。
- 创建配置文件 security_settings.py 或 复制项目下 webserver/security_settings_demo.py 文件为 webserver/security_settings.py。
- security_settings.py 中定义了一些安全敏感信息,请根据自己情况自行修改完成配置,此文件信息在 settings.py 文件最后被导入。
例如:- mysql配置:
# Mysql DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'xxx', # 数据的库名,事先要创建之 'HOST': 'localhost', # 主机 'PORT': '3306', # 数据库使用的端口 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"} }, 'metadata': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'metadata', # 数据的库名,事先要创建之 'USER': 'xxx', # 数据库用户名 'PASSWORD': 'xxx', # 密码 'HOST': '127.0.0.1', # 主机 'PORT': '3306', # 数据库使用的端口 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"} }, }
-
不开启TLF加密情况下:
需要修改ftpserver/harbor_handler.py
文件开头部分代码work_mode_in_tls = False
。 -
ftp默认开启TLS加密,需要域名证书文件
/etc/nginx/conf.d/ftp-keycert.pem
。
- 连接池的配置
路径:webserver/settings.py
配置参数:
RADOS_POOL_MAX_CONNECT_NUM = 1
- iharbro_uwsgi.ini
如果使用uwsgi http 启动方式 需修改配置(默认socket)
- 非python虚拟环境忽略此步骤。
pipenv shell
在项目根目录下运行如下命令完成数据库迁移。
python manage.py migrate
python manage.py create_multipart_upload_table
注:第一次启动服务后请先在后台配置ceph的集群配置,之后重启服务。
- 启动WEB服务
在代码工程根目录下运行命令:
python manage.py runserver 0.0.0.0:8000
如果一切正常,打开浏览器输入url(主机IP:8000, 如:127.0.0.1:8000)即可查看站点;
如果出现js文件无法加载,修改DEBUG = True
。 - 启动FTP服务
python ftpserver/harbor_ftp.py
-
收集静态文件
python manage.py collectstatic
-
systemctl管理配置,开机自启服务 在项目根目录下执行脚本:
./config_systemctl.sh
脚本会复制iharbor.service、iharbor_ftp.service两个文件到 /usr/lib/systemd/system/ 目录下,并开启服务开机自启动。 然后可以使用systemctl命令管理ihabor的web和ftp服务了:
systemctl start/reload/stop iharbor.service
systemctl start/reload/stop iharbor_ftp.service
socket配置
server {
listen 80;
server_name localhost; #改为自己的域名,没域名修改为127.0.0.1:80
charset utf-8;
client_max_body_size 1024M;
location / {
include uwsgi_params;
uwsgi_pass unix:///home/uwsgi/iharbor/iharbor.sock; #端口要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT webserve.wsgi; #wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /home/uwsgi/iharbor/; #项目路径
}
location /static/ {
alias /home/uwsgi/iharbor/static/; #静态资源路径
}
}