基于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
重新访问即可。
离线