个人知识管理站

分享个人生活、工作、学习过程中各种所学、所见、所闻,有趣的、好玩的、技术积累等各方面的内容。

您尚未登录。

公告

不积跬步无以至千里,不积小流无以成江海,网址:www.itecfun.com

#1 2019-12-29 20:54:15

xuyg
管理员
注册时间: 2015-01-21
帖子: 663

基于CentOS7+Geoserver2.16.0+Tomcat8.5搭建地图服务器环境

基于CentOS7+Geoserver2.16.0+Tomcat8.5搭建地图服务器环境
目 录
1.简介
2.搭建环境

(1)、安装jdk-8u231环境

(2)、安装 Tomcat

(3)、安装geoserver

(4) centos7 中 Tomcat 开机自动启动

(5)、安装PostgreSQL

3.安装过程中的相关问题

(1)、关闭默认防火墙

(2)、查看磁盘空间大小

(3)、扩展虚拟机vmware中centos7磁盘空间

(4)、VMware中centos7无法共享文件夹的问题

(5)、cannot change directory to /home/geoweb_cache: Permission denied

(6) phpPgAdmin登陆时提示Login disallowed for security reasons

1.简介
地图服务器软件环境,分为四部分: Tomcat 作为geoserver发布的容器, geoserver作为地图服务器, PostgresSQL数据库 PostGIS数据库插件,浏览器等, 可以说是开源WebGIS绝配,比较适合中小项目的地图环境搭建。 如果单单是做简单的地图服务器研究,一个Geoserver就够了。

jdk -8u231:Tomcat和Geoserver的运行都需要java环境的支持,需要安装对应的版本的jdk jdk 官网下载地址

Tomcat: Tomcat是Geoserver的容器,安装Tomcat之前一定要确定jdk已经安装成功 Tomcat官网下载地址

Geoserver: Geoserver是运行在浏览器端的地图服务器,用来发布地图服务,支持WMS、WFS、WPS等OGC标准服务。 Geoserver官网下载地址

PostgreSQL: PostgreSQL是开源数据库,用来承载我们用于构成地图的地理数据。虽然Geoserver支持直接将Shp数据发布成地图服务,但是在项目应用中,应尽量采用数据库形式来管理和存储地理数据。 PostgresSQL官方下载地址

PostGIS: PostGIS是一个PostgreSQL数据库插件,安装了PostGIS插件的pg数据库,将支持存储地理数据,支持各种空间运行操作。 PostGIS官方下载地址

浏览器: 发布地图服务,当然离不开浏览器。使用Geoserver作为地图服务器时,推荐使用谷歌浏览器。

2.搭建环境
搭建环境前,首先要了解自己的服务器系统配置,然后去各软件官网找到系统对于的版本下载。

本次搭建环境的软件信息如下:

centos 7
jdk-8u231
apache-tomcat-8.5.50
geoserver-2.16.0(war)
postgresql10
postgis30_10
(0)、CentOS 7
本GeoServer服务器采用CentOS 7 进行部署,系统通过vmware 虚拟机进行安装,由于CentOS7系统和Geoserver服务已经安装好了,只需将整个虚拟机相关文件拷贝到新的目录下,通过安装Vmare-workstation-12.1.1版本,添加现有虚拟机即可。 添加虚拟机之后,对于虚拟机的网路需要重新配置下,如下图所示:

先删除现有的vmnet8(NAT共享网络)



然后重新添加vmnet8 NAT共享网络



进行如下设置即可



配置完成网络之后,通过命令 systemctl restart network 重启网络服务即可

如果启动失败,可能是网络配置文件中的网卡mac地址与虚拟机新配置的网卡mac不一致,需要将配置文件中的mac地址改过来

查看: vi /etc/sysconfig/network-script/ifcfg-eno16777736 配置文件中的HWADD地址



再通过命令 ifconfig -a 查看网卡信息,找到eno16777736对应的mac地址,



将配置文件中的地址改为eno1677736对应的mac地址,通过命令 systemctl start network启动网络服务即可。

(1)、安装jdk-8u231环境
设置Java环境变量,注意:geoserver对Java版本有要求,安装Java前先看Geoserver官方文档中,你的Geoserver版本要求的Java版本。

参考:CentOS7下安装JDK1.8详细过程

(2)、安装 Tomcat
下载地址:https://tomcat.apache.org/download-80.cgi



下载之后解压缩到 CentOS7 系统的"/opt/tomcat9/"目录下,

配置server.xml文件中web访问的端口为8000,因为默认的8080端口已被占用。

进入/opt/tomcat9/bin/目录下,运行命令:

# ./startup.sh
运行结果如下图所示:



表示tomcat已经启动成功,访问下地址:http://localhost:8000



表示tomcat8.5 已经安装成功。

(3)、安装geoserver
首先,在geoserver官网:http://geoserver.org/ 选择适当的软件版本,目前最新的是2.16.1,但一般不建议选择最新版本。 geoserver可以以jar包形式部署在toacat下,非常方便,我选择的是2.16.0版本,如下图所示:



进行下载页面,geoserver官网一般提供了三种软件包:



我选择Web Archive,下载文件是geoserer.war

将geoserver.war直接拷贝到tomcat/webapps/目录系安即可

重新启动tomcat,可以看到tomcat/webapps/目录下多了geoserver文件了

Alt text

这样,geoserver就可以作为一个Web应用程序,当启动Tomcat时,Geoserver服务将随之启动。 安装完geoserver后,如果你Java设置也没问题,启动geoserver服务,在浏览器中输入: http://localhost:8000/geoserver/web 就可以来到地图服务器首页了。使用默认用户名和密码登录后,即可发布在线地图服务。

Alt text

Geoserver集成的gwc切片处理
   

(4)、centos7 中 Tomcat 开机自动启动
1、安装tomcat

# cd /opt
# tar -zxvf apache-tomcat-8.5.50.tar.gz
安装包会被解压到/opt/apache-tomcat-8.5.50.tar.gz,将目录重命名为tomcat9

# mv /opt/apache-tomcat-8.5.50.tar.gz /opt/tomcat9
配置tomcat9启动环境

# vi /etc/profile.d/tomcat9.sh
export CATALINA_HOME=/usr/local/tomcat9
export PATH=$TOMCAT_HOME/bin:$PATH
# source /etc/profile.d/tomcat9.sh
使用systemd管理tomcat9服务

# cat /usr/lib/systemd/system/tomcat9.service
[Unit]
Description=Apache Tomcat 9
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/opt/tomcat9/tomcat9.pid
ExecStart=/opt/tomcat9/bin/catalina.sh start -DEFOREGRAND
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
2、配置tomcat9开机启动

在/usr/lib/systemd/system目录下增加tomcat9.service文件,内容如下:

[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=oneshot
ExecStart=/opt/tomcat9/bin/startup.sh
ExecStop=/opt/tomcat9/bin/shutdown.sh
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
退出并保存,执行systemctl enable tomcat使tomcat9随开机启动

#systemctl enable tomcat9.service
另外命令

systemctl start tomcat9.service    启动tomcat

systemctl stop tomcat9.service    关闭tomcat

systemctl restart tomcat9.service    重启tomcat
当然启动和结束tomcat也可以到tomcat的安装目录的bin目录下执行shutdown.sh startup.sh来完成

3、验证安装是否成功

输入 http://localhost:8000/

如果能出现熟悉的tomcat主页,就表示安装成功了,请确保服务器8000端口已经放开

(5)、安装PostgreSQL
参考文档

查看postgresql源

yum list | grep postgresql



选择对应的安装版本,运行如下命令:

yum install postgresql10.x86_64

安装phpPgAdmin:
yum install phpPgAdmin httpd

注意phpPgAdmin区分大小写,要准确使用上面所示的大小写!

若要远程访问需要继续:

编辑文件 /etc/httpd/conf.d/phpPgAdmin.conf

vi /etc/httpd/conf.d/phpPgAdmin.conf
修改如下加粗的部分:

Alias /phpPgAdmin /usr/share/phpPgAdmin

<Location /phpPgAdmin>
  <IfModule mod_authz_core.c>
    # Apache 2.4
    Require all granted   #改成这个
    #Require host example.com
</IfModule>
  <IfModule !mod_authz_core.c>
        # Apache 2.2
        Order deny,allow   #改成这个
        Allow from all     #改成这个
        # Allow from .example.com
    </IfModule>
</Location>
重启httpd服务

systemctl enable httpd

systemctl start httpd

默认使用http://localhost/phpPgAdmin 访问phpPgAdmin

Configuration error: Copy conf/config.inc.php-dist to conf/config.inc.php and edit appropriately.
[root@localhost ~]# find / -name config.inc.php-dist
/etc/phpPgAdmin/config.inc.php-dist
/usr/share/phpPgAdmin/conf/config.inc.php-dist
[root@localhost ~]#
[root@localhost ~]# cp /etc/phpPgAdmin/config.inc.php-dist
(6)、安装PostGIS。
安装配置官网资料

查看postgresql源

yum list | grep postgis



选择已安装的postsql版本 对应的postgis版本进行安装

yum install postgis30_10.x86_64

安装完成后,需要在对应的数据库中执行脚本

-- Enable PostGIS (as of 3.0 contains just geometry/geography)
CREATE EXTENSION postgis;
-- enable raster support (for 3+)
CREATE EXTENSION postgis_raster;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- Enable PostGIS Advanced 3D
-- and other geoprocessing algorithms
-- sfcgal not available with all distributions
CREATE EXTENSION postgis_sfcgal;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- rule based standardizer
CREATE EXTENSION address_standardizer;
-- example rule data set
CREATE EXTENSION address_standardizer_data_us;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
PostGIS安装后,自带了将Shp数据导入Postgres数据库的工具,可以用来向数据库导入你的GIS数据。在导入之前,先要创建一个数据库。我这里建的postgis数据库,使用pgAdmin4网页版,通过Tools>Query Tool 打开Query Editor

将上面脚本拷贝到编辑器中执行 结果如下图所示:



3.安装过程中的相关问题
(1)、关闭默认防火墙
查看防火墙状态

firewall-cmd --state

停止firewall

systemctl stop firewalld.service

禁止firewall开机启动

systemctl disable firewalld.service

关闭selinux

进入到 /etc/selinux/config 文件

vi /etc/selinux/config
将 SELINUX=enforcing改为 SELINUX=disabled

(2) 查看磁盘空间大小
命令:

# df -hl
显示:

文件系统 容量 已用 可用 已用% 挂载点

Filesystem Size Used Avail Use% Mounted on

/dev/hda2 45G 19G 24G 44% / /dev/hda1 494

其他磁盘相关命令:

df -hl 查看磁盘剩余空间     
df -h 查看每个根路径的分区大小     
du -sh [目录名] 返回该目录的大小     
du -sm [文件夹] 返回该文件夹总M数     
du -h [目录名] 查看指定文件夹下的所有文件大小(包含子文件夹)

查看硬盘的分区 #sudo fdisk -l     
查看IDE硬盘信息 #sudo hdparm -i /dev/hda     
查看STAT硬盘信息 #sudo hdparm -I /dev/sda 或 #sudo apt-get install blktool #sudo blktool /dev/sda id     
查看硬盘剩余空间 #df -h #df -H     
查看目录占用空间 #du -hs 目录名
(3)、扩展虚拟机vmware中centos7磁盘空间
0、思路

创建一个新的逻辑分区,将新的逻辑分区格式化ext3(或其他类型)的文件系统,mount到磁盘空间不够的文件系统,就跟原来的分区/文件系统一样的使用

1、准备

1.1 注意使用VMware自带的Expand功能不能有Snapshot存在,所以在expand之前先把所有的Snapshot删掉了

1.2 为了以防万一,把VMware虚拟机copy了一份备用。

2、查看挂载点

[root@geoserver py_user]# df -hl
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.4G     0  1.4G    0% /dev
tmpfs                    1.4G  8.0K  1.4G    1% /dev/shm
tmpfs                    1.4G   11M  1.4G    1% /run
tmpfs                    1.4G     0  1.4G    0% /sys/fs/cgroup
/dev/mapper/centos-root   18G   18G   32K  100% /
/dev/sda1                497M  296M  202M   60% /boot
shm                       64M     0   64M    0% /var/lib/docker/containers/fe4541c83afb7864f65bef244ec2bc309674e90e22f1a665575c83fdb7d2c085/mounts/shm
tmpfs                    283M     0  283M    0% /run/user/0
tmpfs                    283M  4.0K  283M    1% /run/user/42
tmpfs                    283M   20K  283M    1% /run/user/1000
[root@geoserver py_user]#
3、扩展磁盘空间

扩展VMWare硬盘空间

3.1 关闭Vmware 的 Linux系统

3.2 在VMWare菜单中设置:

VM -> Settings… -> Hardware -> Hard Disk -> Utilities -> Expand

输入你想要扩展到多少G,假设新增加了 40G



4、对新增加的硬盘进行分区

执行步骤:

执行“fdisk /dev/sda”,进入到fdisk
输入p指令,查看已分区数量(有两个 /dev/sda1 /dev/sda2)
输入 n {new partition}指令,新增加一个分区
输入p {primary partition},分区类型选择为主分区
输入分区号 3 {partition number} ,分区号选3(上面显示我已经有2个分区了)
回车 默认(起始扇区)
回车 默认(结束扇区)
输入t {change partition id}指令,修改分区类型
按提示输入刚才的分区号3
输入分区类型 8e {Linux LVM partition}
输入w指令,将以上改动写入分区表
最后完成,退出fdisk命令
[root@vnode1 ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    83886079    41430016   8e  Linux LVM
命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (83886080-167772159,默认为 83886080):
将使用默认值 83886080
Last 扇区, +扇区 or +size{K,M,G} (83886080-167772159,默认为 167772159):
将使用默认值 167772159
分区 3 已设置为 Linux 类型,大小设为 40 GiB
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
重启系统:

[root@vnode1 ~]# reboot
5、对新增加的硬盘格式化

[root@vnode1 ~]# mkfs.ext3 /dev/sda3
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2621440 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=4294967296
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624

Allocating group tables: 完成                           
正在写入inode表: 完成                           
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
6、添加新LVM到已有的LVM组,实现扩容

lvm                                      进入lvm管理 
lvm> pvcreate /dev/sda3                          这是初始化刚才的分区,必须的 
lvm>vgextend centos /dev/sda3                    将初始化过的分区加入到虚拟卷组vg_dc01
lvm>lvextend -L +39.9G /dev/mapper/centos-root  扩展已有卷的容量
lvm>pvdisplay                           查看卷容量,这时你会看到一个很大的卷了
lvm>quit                              退出
[root@vnode1 ~]# lvm
lvm> pvcreate /dev/sda3
WARNING: ext3 signature detected on /dev/sda3 at offset 1080. Wipe it? [y/n]: y
  Wiping ext3 signature on /dev/sda3.
  Physical volume "/dev/sda3" successfully created
lvm> vgextend centos /dev/sda3
  Volume group "centos" successfully extended
lvm> lvextend -L +39.9G /dev/mapper/centos-root
  Rounding size to boundary between physical extents: 39.90 GiB
  Size of logical volume centos/root changed from 35.47 GiB (9080 extents) to 75.37 GiB (19295 extents).
  Logical volume root successfully resized.
lvm> pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               39.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              10114
  Free PE               0
  Allocated PE          10114
  PV UUID               vtNvX3-b1yw-ePoh-YGHQ-tDhL-x0ru-mfts3k

  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               centos
  PV Size               40.00 GiB / not usable 4.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              10239
  Free PE               34
  Allocated PE          10205
  PV UUID               jWqvcF-R53u-ZeAy-zO2L-PbtI-51VP-yHNZ1g

lvm> quit
  Exiting.
[root@vnode1 ~]#
7.以上只是卷扩容了,下面是文件系统的真正扩容,输入以下命令:

[root@vnode1 ~]# resize2fs /dev/mapper/centos-root
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block 当尝试打开 /dev/mapper/centos-root 时
找不到有效的文件系统超级块.
报错:当尝试打开 /dev/mapper/centos-root 时 找不到有效的文件系统超级块

因为我的centos7的某些分区用的是xfs的文件系统(使用df -T查看即可知道)

[root@vnode1 ~]# df -T
文件系统                类型        1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root xfs      37173520 5574340 31599180   15% /
devtmpfs                devtmpfs  3987400       0  3987400    0% /dev
tmpfs                   tmpfs     3997856       0  3997856    0% /dev/shm
tmpfs                   tmpfs     3997856    8628  3989228    1% /run
tmpfs                   tmpfs     3997856       0  3997856    0% /sys/fs/cgroup
/dev/sda1               xfs        508588  127152   381436   26% /boot
tmpfs                   tmpfs      799572       0   799572    0% /run/user/0
[root@vnode1 ~]#
将resize2fs替换为xfs_growfs,重新执行一遍即可,如下:

[root@vnode1 ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=2324480 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=9297920, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=4540, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 9297920 to 19758080
最后再运行下:df -h

即可看到扩容后的磁盘空间

[root@vnode1 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   76G  5.4G   71G    8% /
devtmpfs                 3.9G     0  3.9G    0% /dev
tmpfs                    3.9G     0  3.9G    0% /dev/shm
tmpfs                    3.9G  8.5M  3.9G    1% /run
tmpfs                    3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sda1                497M  125M  373M   26% /boot
tmpfs                    781M     0  781M    0% /run/user/0
(4)、VMware中centos7无法共享文件夹的问题
在安装虚拟机VMware之后安装系统想要把windows的目录共享在centos下面,但是我们按照centos6的挂在方法发现不管用.在网上找了半天才知道centos7的VMware tools和centos6的不一样,需要重新再安装一次,用yum安装,而不是在VMware软件里面安装!!

1.先安装VMware软件里VMwareTools



没安装过的,点击安装,我的已经安装过了

然后挂载镜像

[root@centos7 ~]# mkdir /dvd
[root@centos7 ~]# mount /dev/cdrom /dvd
mount: /dev/sr0 is write-protected, mounting read-only
[root@centos7 ~]# cd /dvd/
[root@centos7 dvd]# ls
manifest.txt  run_upgrader.sh  VMwareTools-10.2.5-8068393.tar.gz  vmware-tools-upgrader-32  vmware-tools-upgrader-64
[root@centos7 dvd]# cp  VMwareTools-10.2.5-8068393.tar.gz /root/
[root@centos7 dvd]# cd /root/
[root@centos7 ~]# tar xf VMwareTools-10.2.5-8068393.tar.gz
[root@centos7 ~]# cd vmware-tools-distrib/
[root@centos7 vmware-tools-distrib]# ./vmware-install.pl
然后一直回车就行

2.系统下安装vmtools:

安装相关软件包

yum install open-vm-tools *headers perl gcc make kernel-devel -y
安装完成就关闭系统,配置共享文件夹

3.配置VMware

右击虚拟机,点击配置,点击选项,如图所示:



点击浏览,选择你要共享的文件夹,然后下一步就完成了



4.配置完成了,启动系统就可以看到共享的文件夹/mnt/hgfs

记住:/mnt/hgfs这个文件夹不是手动创建的,是安装完成vmtools后产生的! 我们进入这个文件夹,但是并没有我们想要的共享文件夹,hgfs是空的,这是应为我们没有挂载.这里不像是centos6,给我们自动挂载的! 这可能是mnt缺少共享支持,打开terminal输入mount -t vmhgfs .host:/py_script /mnt/hgfs挂载该共享文件夹 我们可以用命令查看共享的文件夹

vmware-hgfsclient
5.然后挂载就可以使用了

mount -t vmhgfs .host:/share /mnt/hgfs
如果出现:Error: cannot mount filesystem: No such device这样的报错

则再运行

vmhgfs-fuse .host:/share /mnt/hgfs
往往就成功了(前提是VMware Tools安装已成功)

到此为止,可以正常使用共享文件夹了,但每次都要重新mount挂载一次,所以设置为启动后自动挂载:

进入/mnt/hgfs下面就有文件了

6.fuse: mountpoint is not empty

一定要加allow_other选项,不然之后的hgfs文件普通用户不能访问

如果之前没有加-o allow_other,已经使得文件hgfs在普通用户环境下不可访问,也就是提示了

fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option
可将nonempty选项加到里面去

sudo vmhgfs-fuse .host:/share /mnt/hgfs -o nonempty -o allow_other
重新执行命令即可.

7.开机自动挂载共享

为确保开机自动挂载共享文件夹,将命令写入/etc/rc.d/rc.local 并赋权限:

echo "mount -t vmhgfs .host:/share /mnt/hgfs" >> /etc/rc.d/rc.local
echo "vmhgfs-fuse .host:/share /mnt/hgfs" >> /etc/rc.d/rc.local
echo "vmhgfs-fuse .host:/py_script /mnt/hgfs" >> /etc/rc.d/rc.local

chmod 750 /etc/rc.d/rc.local
(5)、cannot change directory to /home/oracle: Permission denied
su: /bin/bash: Permission denied 带来的疑惑
在root用户下,su到一个普通用户oracle,得到如下错误:

[root@localhost ~]# su -root
su: warning: cannot change directory to /home/geoweb_cache: Permission denied
su: /bin/bash: Permission denied
而root用户也无法通过直接登录,出现同样错误。

这是一个非常奇怪的问题,到底是什么导致的呢?思路如下:

1,程序执行权限问题
2,程序依赖的共享库权限问题
3,目录权限问题
4,根空间问题。
检查/bin/bash,权限正确,检查/home/root权限正确,检查/lib/ld-***.so,权限也正确。

继续调试,检查/etc/passwd,将root的home设置为/tmp,把/tmp设置为777,这个权限应该是最宽松的。 而su出现同样的错误。

也就是root用户无法访问777权限的/tmp。

问题到底出现在哪里呢?

最后通过star命令,看到了问题根本,

[root@localhost ~]#stat /
输出如下:因为你ls是看不到的。
File: “/”>
Size: 1024            Blocks: 2          IO Block: 1024   目录
Device: 803h/2051d      Inode: 2           Links: 22
Access: (0666/drw-rw-rw-) Uid: (    0/    root)   Gid: (    0/    root)
Access: 2007-12-01 22:28:48.000000000 +0800
Modify: 2007-12-01 22:28:34.000000000 +0800
Change: 2007-12-01 23:17:35.000000000 +0800
问题出来了,这里的权限是错误的,X权限的丢失造成的。

[root@localhost ~]#chmod 755 /
修改后,问题消失。

产生上述问题的方法: 第一种,chmod 666 /,可以导致。 或者, 第二种,chmod 700 /lib/ld-xxxx.so,也可以导致su失败。 有兴趣可以自己试一下。

/ 权限的丢失对于各种运行在自己用户身份上的daemon也存在同样的影响。

2.修改默认数据目录

Postgresql默认的数据目录是/var/lib/pgsql/版本号/data目录,这要求你在/var下有足够的存储空间,我们这里将其换掉,假设/home的空间很大。

首先在/home下创建一个Postgresql的数据目录,指定所有者postgres同时分配权限

mkdir /home/psql_data
chown postgres:postgres /home/psql_data
chmod 750 /home/psql_data

- 注意:修改数据目录之后,如果需要允许远程访问,需要重新设置
- /home/postgresql_data/pg_hba.conf
- /home/postgresql_data/postgresql.conf
两个文件的相关参数

设置环境变量

export PATH=/usr/pgsql-10/bin:$PATH
export LD_LIBRARY_PATH=/usr/pgsql-10/lib
export PGDATA=/home/postgresql_data
切换到postgres用户,使用initdb初始化数据库,这样在/home/postgresql_data下会增加很多东西,

(6) phpPgAdmin登陆时提示Login disallowed for security reasons
find / -name config.inc.php
vi /etc/phpPgAdmin/config.inc.php
修改

$conf['extra_login_security'] = true;

$conf['extra_login_security'] = false;
重启postgresql服务

systemctl restart postgresql-10.service

重新访问即可。

离线

页脚

©2019 YG Wong 备案号: 赣ICP备19010196号