文章目录
1 项目简介
目标:把原centos7后端迁移到openeuler。
后端简介:利用geodjango开发的工程管理平台后端,可以实现空间位置和工程信息的一体化管理。
主要模块:python3.6.8、django3.2.12、postgresql14.0、postgis、nginx。
2 搭建开发环境
2.1 安装python3.6.8
openeuler自带了python3.9,但不适合项目部署,需要安装3.6.8版本。由于欧拉系统yum安装的为3.9版本,因此只能通过源码安装python3.6.8。源码通过官网下载,下载解压后进入到解压目录,执行以下命令。
./configure
make && make install
configure后会提示可用python高性能模式,千万不要试,否则会进入make死循环。如果安装过程中提示缺少依赖包,yum安装即可。
2.2 安装django
(1)django是python的一个模块,安装django之前要确定系统上安装了python。linux系列系统都自带python,只需检查python版本即可。
查看python版本:
# python3
Python 3.6.8
(2)安装django,安装正式版本django即可,通过pip安装。
pip3 install django==3.2.12 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
查看安装的django版本:
>>>import django
>>>print(django.get_version())
3.2.12
我安装的是3.2.12版本。
(3)安装sqlite3.9以上版本,系统自带的3.7版本太低,会报错。通过官网下载源码安装最新版。
wget https://www.sqlite.org/2022/sqlite-autoconf-3390400.tar.gz
tar xzf sqlite-autoconf-3390400.tar.gz
cd sqlite-autoconf-3390400
到这一步之后不要急着configure,需要手动增加编译项。此处不增加编译项并不会影响sqlite的安装和django项目的创建,但是会导致后续空间数据迁移时出错。
vim sqlite3.c
#define SQLITE_CORE 1
#define SQLITE_AMALGAMATION 1
#ifndef SQLITE_PRIVATE
# define SQLITE_PRIVATE static
#endif
//新增编译项
#define SQLITE_ENABLE_COLUMN_METADATA 1
完成对sqlite3.c文件的修改后即可进行安装操作。
./configure
make
make install
make clean
完成sqlite安装后,需添加环境变量,否则python无法找到新安装的sqlite。将/usr/local/lib添加至LD_LIBRARY_PATH:
vim /etc/profile
export LD_LIBRARY_PATH=/usr/local/lib
(4)创建django项目和app:
cd /usr
python3 -m django startproject mysite
cd mysite
python3 manage.py startapp gisapp
(5)完成此步骤后,django相关内容暂告一段落,settings.py文件配置后续再做介绍。
2.3 安装postgresql
(1)postgresql推荐源码安装,centos7平台利用yum安装的postgresql-14实际上是postgresql9.2,与项目需要的其它库存在不兼容情况,在应用中会各种报错。本项目安装的是14.0版本,源码在官网下载。
下载14.0源码(我的所有软件安装在了/usr/local文件夹):
cd /usr/local
wget https://ftp.postgresql.org/pub/source/v14.0/postgresql-14.0.tar.gz
(2)解压并cd至解压好的文件夹:
tar xzf postgresql-14.0.tar.gz
cd postgresql-14.0
(3)编译安装源码(make clean并非必须的,作用是清除编译安装过程文件):
./configure
make
su
make install
make clean
(4)若安装过程失败提示缺少readline和zlib,安装readline-devel和zlib-devel即可。
yum install readline-devel
yum install zlib-devel
(5)创建系统用户postgres,postgresql不能在root用户下操作,习惯性创建用户postgres,也可创建其它名字的用户。postgresql会自动创建一个同名数据库管理员账户和数据库。
adduser postgres
(6)创建data文件夹,并赋权限给postgres用户: