本开发框架为专为opengauss开发,能完成编写代码、接口文档、单元测试、部署,可以只用纯sql语句完成全套系统从开发到部署,完全开源。
ngxdb for opengaus八大优势https://www.toutiao.com/article/7274971705632784907/
0.1版本为学习版,让使用者学会安装使用
1.0版本可以使用,该版本提供了多系统使用及维护的功能,能设置子系统、每个子系统设置功能权限、小程序登录、设置机构等
文件目录
|--django python django服务器代码
--extension opengauss扩展
--html 前端代码
|--bootstrap 基于bootstrap
--opengauss nginx插件
--python_test python的测试代码
--QT 基于QT的前端代码
readme.md
本安装在openeuler22下测试通过,其它操作系统也许会报错。 下载源码后,后述安装代码都在install.sh里,可以直接运行install.sh完成安装
git clone -b 1.0 --single-branch https://gitee.com/opengauss/ngxdb-for-opengauss.git
详见官网,因为需要增加--with-python选项,所以要源码编译
#判断是否下载了openGauss 5.1.0
echo "clone opengauss"
if [ -d openGauss-server ]; then
echo "opengauss exist"
else
git clone --branch 5.1.0 https://gitee.com/opengauss/openGauss-server.git
fi
#判断cpu架构
arch=$(grep -oP 'Architecture:\s+\K.+' <<<`lscpu` | head -n1)
if [ -z "$arch" ]; then
arch=$(grep -oP '架构:\s+\K.+' <<<`lscpu` | head -n1)
fi
echo "$arch"
#判断是否下载了第三方软件,根据cpu架构下载相应软件
if [ -d "binarylibs" ]; then
echo "binarylibs exist"
else
case $arch in
"x86_64")
echo "x86":
wget http://opengauss.obs.cn-south-1.myhuaweicloud.com/5.1.0/binarylibs/gcc10.3/openGauss-third_party_binarylibs_openEuler_2203_x86_64.tar.gz
tar -xvf openGauss-third_party_binarylibs_openEuler_2203_x86_64.tar.gz
mv openGauss-third_party_binarylibs_openEuler_2203_x86_64 binarylibs
;;
"*")
echo "arm"
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.1.0/binarylibs/gcc10.3/openGauss-third_party_binarylibs_openEuler_2203_arm.tar.gz
tar -xvf openGauss-third_party_binarylibs_openEuler_2203_arm.tar.gz
mv openGauss-third_party_binarylibs_openEuler_2203_arm binarylibs
;;
esac
fi
#下载python3.9,目前只支持python3.9
python=`python3 --version`
echo $python
if [ ${python:1:4} = "bash" ]; then
yum -y install python3.9
else
if [ ${python:7:3} = "3.9" ]; then
echo "python exist"
else
yum remove python${python:7:3} -y
yum install python3.9 -y
fi
fi
#下载python依赖
pip install -i https://mirrors.huaweicloud.com/repository/pypi/simple psycopg2-binary django
rm /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python
#下载编译依赖
yum -y install readline readline-devel python3-devel libaio-devel
#判断是否安装opengauss,否则编译安装
if [ -d "/opt/software/openGauss" ]; then
echo "openGauss exist"
else
cd openGauss-server
./configure --prefix=/opt/software/openGauss --enable-thread-safety --gcc-version=10.3.1 CC=g++ CFLAGS='-O2 -g3' --with-3rdpartydir=/root/ngxdb-for-opengauss/binarylibs --with-libxml --enable-cassert --with-readline --with-python
make && make install
useradd opengauss
echo "gao@12345!" | passwd --stdin opengauss
cp ../extension/*.* /opt/software/openGauss/share/postgresql/extension/
chown opengauss /opt/software/openGauss -R
cd ..
fi
#修改环境变量,启动数据库并安装扩展
lines=$(grep -c "export GAUSSHOME=/opt/software/openGauss" /etc/profile)
if [ $lines = 0 ]; then
echo 'export GAUSSHOME=/opt/software/openGauss'>>/home/opengauss/.bashrc
echo 'export GAUSSDATA=$GAUSSHOME/data'>>/home/opengauss/.bashrc
echo 'export PGDATA=$GAUSSDATA'>>/home/opengauss/.bashrc
echo 'export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH'>>/home/opengauss/.bashrc
echo 'export PATH=$GAUSSHOME/bin:$PATH'>>/home/opengauss/.bashrc
echo 'export GAUSSHOME=/opt/software/openGauss'>>/etc/profile
echo 'export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH'>>/etc/profile
echo 'export PATH=$GAUSSHOME/bin:$PATH'>>/etc/profile
fi
su - opengauss << EOF
gs_initdb --nodename=gao
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /opt/software/openGauss/data/postgresql.conf
sed -i 's/#password_encryption_type=2/password_encryption_type=1/' /opt/software/openGauss/data/postgresql.conf
sed -i '/# IPv6/i\host all all 127.0.0.1/32 md5' /opt/software/openGauss/data/pg_hba.conf
gs_ctl start
gsql -d postgres
alter role "opengauss" password 'gao@12345!';
create extension plpython3u;
create extension opengauss_ngx;
\q
exit
EOF
下载nginx源码,以nginx24.0为例,下载编译完成后,在nginx.conf里增加 location /func { opengaussconn "host=127.0.0.1 dbname=postgres user=conn password=Gao12345 port=5432"; rewrite ^/func/(.*)$ /$1 break; }
location /help {
opengausshelp "host=127.0.0.1 dbname=postgres user=conn password=Gao12345 port=5432";
break;
}
location / {
root html;
index index.html index.htm;
}
opengaussconn "opengauss连接字符":用于访问扩展
opengausshelp "opengauss连接字符":用于访问帮助
#下载并编译安装nginx,修改nginx配置文件
nginx="nginx-1.24.0"
if [ -d "/usr/local/nginx" ]; then
echo "nginx exist"
else
wget http://nginx.org/download/${nginx}.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd $nginx
./configure --add-module=../opengauss --prefix=/usr/local/nginx
make && make install
cp ../bootstrap /usr/local/nginx/html/ -r
cd ..
sed -i '/ \{6,\}location \/ {/i\ location /func {' /usr/local/nginx/conf/nginx.conf
sed -i '/ \{6,\}location \/ {/i\ opengaussconn "host=127.0.0.1 dbname=postgres user=conn password=gao@12345 port=5432";' /usr/local/nginx/conf/nginx.conf
sed -i '/ \{6,\}location \/ {/i\ rewrite ^/func/(.*)$ /$1 break;' /usr/local/nginx/conf/nginx.conf
sed -i '/ \{6,\}location \/ {/i\ }' /usr/local/nginx/conf/nginx.conf
sed -i '/ \{6,\}location \/ {/i\ ' /usr/local/nginx/conf/nginx.conf
sed -i '/ \{6,\}location \/ {/i\ location /help {' /usr/local/nginx/conf/nginx.conf
sed -i '/ \{6,\}location \/ {/i\ opengausshelp "host=127.0.0.1 dbname=postgres user=conn password=gao@12345 port=5432";' /usr/local/nginx/conf/nginx.conf
sed -i '/ \{6,\}location \/ {/i\ break;' /usr/local/nginx/conf/nginx.conf
sed -i '/ \{6,\}location \/ {/i\ }' /usr/local/nginx/conf/nginx.conf
sed -i '/ \{6,\}location \/ {/i\ ' /usr/local/nginx/conf/nginx.conf
fi
#启动nginx
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --zone=public --add-port=8000/tcp --permanent
systemctl reload firewalld
export GAUSSHOME=/opt/software/openGauss
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
export PATH=$GAUSSHOME/bin:$PATH
/usr/local/nginx/sbin/nginx
python python_test\testfun.py
运行大约耗时10分钟,会测试正常登录、token验证、10分钟内超过5次非法登录将锁定账号10分钟,10次非法登录将锁定3小时。 如果运行完演示 总用例:XX 成功:XX 失败:0 则表示安装成功。
在本机打开浏览器,在地址栏输入http://127.0.0.1/help ,可以看到后端接口的帮助文档
在本机打开浏览器,在地址栏输入http://127.0.0.1/sysinfo/login?loginname=admin&pass=123456 ,可以看到浏览器返回json字符串,详见帮助文档
运行QT 运行QT,打开QT目录下的qt.pro
运行django服务
#运行django
python django/manage.py runserver 0.0.0.0:8000 --noreload --nothreading
在本机打开浏览器,在地址栏输入http://127.0.0.1:8000/help ,可以看到后端接口的帮助文档
在本机打开浏览器,在地址栏输入http://127.0.0.1:8000/sysinfo/login?loginname=admin&pass=123456 ,可以看到浏览器返回json字符串,详见帮助文档
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。