1.前言
最近在做GIS分析,采集设备的经纬度点判断是否进出围栏以及是否产生道路偏移报警,在之前的文章有介绍过Windows下使用C#来实现,参考文章:利用Postgresql+Postgis进行空间地理信息分析(道路偏移,进出电子围栏等)_postgres 空间分析_大鱼>的博客-CSDN博客最近新做了一个物联网项目,采用的是Springboot+mongoDB+MySQL,所以考虑使用Linux服务器重新实现这个服务。此文只介绍Ubuntu下安装Postgresql与PostGIS环境。
2.安装Postgresql
2.1.查看apt-get库中的软件版本支持
执行命令:
sudo apt-cache search postgresql
我这边使用的是ubuntu 18.04,查看后发现目前支持postgresql-10
2.2.执行安装命令
sudo apt-get install postgresql-10
2.3.postgresql-common not configured yet.错误处理
执行安装命令后发现postgresql-common不能安装成功,查看报错信息为:postgresql-common not configured yet.
我们查看/var/lib/dpkg/status文件,找到Package:postgresql-common
如果其Status: install ok half-configured则将其改为install ok installed
然后再执行安装命令,如果是上述情况,此时应该是可以安装成功了。
3.安装postgis
执行安装脚本:
sudo apt-get install postgis
4.修改数据库默认用户名、密码
PostgreSQL数据库创建一个postgres用户作为数据库的管理员,密码随机,所以这里需要进行密码修改操作。
执行命令登录PostgreSQL:
sudo -u postgres psql
执行命令修改登录PostgreSQL密码:
alter user postgres with password '你的密码';
安装PostgreSQL后,会给创建一个Linux用户,这个用户一定要马上重置密码,否则很容易导致服务器被攻击,我的服务器之前就因为这个密码没有修改被安装了挖矿程序,费了很大劲才彻底清掉挖矿程序。
执行删除原有用户密码的命令:
sudo passwd -d postgres
设置新密码命令:
sudo -u postgres passwd
随后系统会提示输入新密码:
Enter new UNIX password:
确认密码:
Retype new UNIX password:
最后提示passwd: password updated successfully,代表完成了密码的修改。
5.创建数据库并添加postgis
切换Linux:postgres用户
sudo su postgres
创建名一个数据库,根据自己的需要起名字
createdb postgis_24_sample
为数据库添加postgis支持。
脚本默认在/usr/share/postgresql目录下,自己可以找找
如果找不到上述目录文件,说明postgis安装失败或者先安装的postgis后安装的postgresql,所以卸载postgis服务,重新安装即可。
卸载方法:
sudo apt-get purge 'postgis*'
sudo apt-get autoremove 'postgis*
然后执行sql脚本
psql -d postgis_24_sample -f /usr/share/postgresql/10/contrib/postgis-2.4/postgis.sql
psql -d postgis_24_sample -f /usr/share/postgresql/10/contrib/postgis-2.4/spatial_ref_sys.sql
如果过程中提示下面的错误:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
可以重启一下postgres服务,执行重启命令:
sudo service postgres restart
6.使用pgAdmin4连接数据库
我们可以使用pgAdmin4连接到服务器上的postgresql数据库,如果报下面的错误,则确认一下服务是否开启了远程连接。
错误提示:could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "124.223.60.234" and accepting TCP/IP connections on port 5432?
修改配置文件postgresql.conf:
sudo vim /etc/postgresql/10/main/postgresql.conf
如果listen_addresses 被注释掉,则去掉#注释,并将值修改为*
另外修改pg_hba.conf
sudo vim /etc/postgresql/10/main/pg_hba.conf
在文件中添加 host all all 0.0.0.0/0 trust
最后登录成功
考虑到安全,建议上述如果非必要不要对所有外网都开启访问,可以指定对应的IP或者只允许内网访问,否则很容易被黑。导致postgresql总是被重启。