CentOS7 yum PostgreSQL(11) 并启用 python...3编写存储过程(Python3

系统 1583 0

CentOS7 yum PostgreSQL(11) 并启用 python3编写存储过程(Python3.6)

一、安装python3.6

  1. 下载Python3.6.6.tgz 至 /tmp 下
            
              
                [
              
              root@localhost tmp
              
                ]
              
              
                # wget -c https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
              
            
          
  1. 解压 Python3.6.6.tgz
            
              
                [
              
              root@localhost tmp
              
                ]
              
              
                # tar -zvxf Python-3.6.6.tgz 
              
            
          
  1. 安装需要的依赖包(dependence)
            
              
                [
              
              root@localhost tmp
              
                ]
              
              
                # yum install gcc openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel -y
              
            
          
  1. 编译安装
            
              
                [
              
              root@localhost tmp
              
                ]
              
              
                # cd Python-3.6.6/
              
              
                [
              
              root@localhost Python-3.6.6
              
                ]
              
              
                # ./configure --prefix=/usr/local/Python36 --enable-shared
              
              
                [
              
              root@localhost Python-3.6.6
              
                ]
              
              
                # make && make install
              
              
………………………………省略………………………………
Looking 
              
                in
              
               links: /tmp/tmpjbfza4ut
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-10.0.1 setuptools-39.0.1

            
          
  1. 将python3.6 与pip3 软链接到/usr/local/bin目录下
            
              
                [
              
              root@localhost bin
              
                ]
              
              
                # ln -s /usr/local/Python36/bin/python3.6 /usr/local/bin/python3
              
              
                [
              
              root@localhost bin
              
                ]
              
              
                # ln -s /usr/local/Python36/bin/pip3 /usr/local/bin/pip3
              
            
          
  1. 添加动态库配置文件
            
              
                [
              
              root@localhost ~
              
                ]
              
              
                # python3
              
              
python3: error 
              
                while
              
               loading shared libraries: libpython3.6m.so.1.0: cannot 
              
                open
              
               shared object file: No such 
              
                file
              
               or directory  
              
                <=
              
              
                ==
              
               执行python3 报错

              
                [
              
              root@localhost ~
              
                ]
              
              
                # ldd /usr/local/bin/python3 
              
              
	linux-vdso.so.1 
              
                =
              
              
                >
              
              
                (
              
              0x00007ffd451fc000
              
                )
              
              
	libpython3.6m.so.1.0 
              
                =
              
              
                >
              
               not found  
              
                <=
              
              
                ==
              
               此动态文件未找到
	libpthread.so.0 
              
                =
              
              
                >
              
               /lib64/libpthread.so.0 
              
                (
              
              0x00007f725d3d5000
              
                )
              
              
	libdl.so.2 
              
                =
              
              
                >
              
               /lib64/libdl.so.2 
              
                (
              
              0x00007f725d1d1000
              
                )
              
              
	libutil.so.1 
              
                =
              
              
                >
              
               /lib64/libutil.so.1 
              
                (
              
              0x00007f725cfce000
              
                )
              
              
	libm.so.6 
              
                =
              
              
                >
              
               /lib64/libm.so.6 
              
                (
              
              0x00007f725cccc000
              
                )
              
              
	libc.so.6 
              
                =
              
              
                >
              
               /lib64/libc.so.6 
              
                (
              
              0x00007f725c8ff000
              
                )
              
              
	/lib64/ld-linux-x86-64.so.2 
              
                (
              
              0x00007f725d5f1000
              
                )
              
              
                [
              
              root@localhost ~
              
                ]
              
              
                # echo /usr/local/Python36/lib/ >> /etc/ld.so.conf.d/python3.6.conf
              
              
                [
              
              root@localhost ~
              
                ]
              
              
                # ldconfig
              
              
                [
              
              root@localhost ~
              
                ]
              
              
                # python3
              
              
Python 3.6.6 
              
                (
              
              default, May 17 2019, 14:04:59
              
                )
              
              
                [
              
              GCC 4.8.5 20150623 
              
                (
              
              Red Hat 4.8.5-36
              
                )
              
              
                ]
              
               on linux
Type 
              
                "help"
              
              , 
              
                "copyright"
              
              , 
              
                "credits"
              
               or 
              
                "license"
              
              
                for
              
              
                more
              
               information.

              
                >>
              
              
                >
              
               exit
              
                (
              
              
                )
              
            
          

二、安装PG11

  1. PostgreSQL官网
    下载PG的repo包
            
              
                [
              
              root@localhost tmp
              
                ]
              
              
                # wget -c https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
              
              
--2019-05-17 13:43:55--  https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Resolving download.postgresql.org 
              
                (
              
              download.postgresql.org
              
                )
              
              
                ..
              
              . 72.32.157.246, 87.238.57.227, 204.145.124.244, 
              
                ..
              
              .
Connecting to download.postgresql.org 
              
                (
              
              download.postgresql.org
              
                )
              
              
                |
              
              72.32.157.246
              
                |
              
              :443
              
                ..
              
              . connected.
HTTP request sent, awaiting response
              
                ..
              
              . 200 OK
Length: 5720 
              
                (
              
              5.6K
              
                )
              
              
                [
              
              application/x-redhat-package-manager
              
                ]
              
              
Saving to: ‘pgdg-redhat-repo-latest.noarch.rpm’

100%
              
                [
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                ==
              
              
                =
              
              
                >
              
              
                ]
              
               5,720       5.66KB/s   
              
                in
              
               1.0s   

2019-05-17 13:43:57 
              
                (
              
              5.66 KB/s
              
                )
              
               - ‘pgdg-redhat-repo-latest.noarch.rpm’ saved 
              
                [
              
              5720/5720
              
                ]
              
            
          
  1. 安装PostgreSQL源
            
              
                [
              
              root@localhost tmp
              
                ]
              
              
                # yum install pgdg-redhat-repo-latest.noarch.rpm -y
              
            
          
  1. 安装PostgresSQL11 客户端与服务端
            
              
                [
              
              root@localhost ~
              
                ]
              
              
                # yum install postgresql11 postgresql11-server -y
              
            
          

PostgreSQL版本与其对应支持的python3版本

PostgreSQL Version Python Version
9.X 3.3
10.X 3.4
11.X 3.6
  1. 将python3.6对应的plpython3.so 文件添加到/usr/pgsql-11/lib/中
            
              
                [
              
              root@localhost ~
              
                ]
              
              
                # wget -c https://gitee.com/CodeForLive/PGEnablePlpython3/raw/master/py36/plpython3.so -C /usr/pgsql-11/lib
              
              
plpython3.so                                                             100%  143KB   9.9MB/s   00:00    

              
                [
              
              root@localhost ~
              
                ]
              
              
                # chmod 755 /usr/pgsql-11/lib/plpython3.so
              
            
          
  1. 初始化数据库
            
              
                [
              
              root@localhost ~
              
                ]
              
              
                # /usr/pgsql-11/bin/postgresql-11-setup initdb
              
            
          

数据库文件一般在/var/lib/pgsql/11/目录下
6. 启动PostgreSQL服务

            
              
                [
              
              root@localhost ~
              
                ]
              
              
                # systemctl start postgresql-11 && systemctl status postgresql-11
              
              
● postgresql-11.service - PostgreSQL 11 database server
   Loaded: loaded 
              
                (
              
              /usr/lib/systemd/system/postgresql-11.service
              
                ;
              
               disabled
              
                ;
              
               vendor preset: disabled
              
                )
              
              
   Active: active 
              
                (
              
              running
              
                )
              
               since Fri 2019-05-17 14:27:53 CST
              
                ;
              
               14ms ago
     Docs: https://www.postgresql.org/docs/11/static/
  Process: 14099 ExecStartPre
              
                =
              
              /usr/pgsql-11/bin/postgresql-11-check-db-dir 
              
                ${PGDATA}
              
              
                (
              
              code
              
                =
              
              exited, status
              
                =
              
              0/SUCCESS
              
                )
              
              
 Main PID: 14106 
              
                (
              
              postmaster
              
                )
              
              
    Tasks: 8
   CGroup: /system.slice/postgresql-11.service
           ├─14106 /usr/pgsql-11/bin/postmaster -D /var/lib/pgsql/11/data/
           ├─14107 postgres: logger   
           ├─14109 postgres: checkpointer   
           ├─14110 postgres: background writer   
           ├─14111 postgres: walwriter   
           ├─14112 postgres: autovacuum launcher   
           ├─14113 postgres: stats collector   
           └─14114 postgres: logical replication launcher   

May 17 14:27:53 localhost.localdomain systemd
              
                [
              
              1
              
                ]
              
              : Starting PostgreSQL 11 database server
              
                ..
              
              .
May 17 14:27:53 localhost.localdomain postmaster
              
                [
              
              14106
              
                ]
              
              : 2019-05-17 14:27:53.839 CST 
              
                [
              
              14106
              
                ]
              
               LOG:  listening on IPv6 addr
              
                ..
              
              . 5432
May 17 14:27:53 localhost.localdomain postmaster
              
                [
              
              14106
              
                ]
              
              : 2019-05-17 14:27:53.839 CST 
              
                [
              
              14106
              
                ]
              
               LOG:  listening on IPv4 addr
              
                ..
              
              . 5432
May 17 14:27:53 localhost.localdomain postmaster
              
                [
              
              14106
              
                ]
              
              : 2019-05-17 14:27:53.841 CST 
              
                [
              
              14106
              
                ]
              
               LOG:  listening on Unix sock
              
                ..
              
              .5432
              
                "
May 17 14:27:53 localhost.localdomain postmaster[14106]: 2019-05-17 14:27:53.843 CST [14106] LOG:  listening on Unix sock...5432"
              
              
May 17 14:27:53 localhost.localdomain postmaster
              
                [
              
              14106
              
                ]
              
              : 2019-05-17 14:27:53.860 CST 
              
                [
              
              14106
              
                ]
              
               LOG:  redirecting log output
              
                ..
              
              .ocess
May 17 14:27:53 localhost.localdomain postmaster
              
                [
              
              14106
              
                ]
              
              : 2019-05-17 14:27:53.860 CST 
              
                [
              
              14106
              
                ]
              
               HINT:  Future log output wil
              
                ..
              
              .log".
May 17 14:27:53 localhost.localdomain systemd
              
                [
              
              1
              
                ]
              
              : Started PostgreSQL 11 database server.
Hint: Some lines were ellipsized, use -l to show 
              
                in
              
               full.

            
          
  1. 设置为开机启动
            
              
                [
              
              root@localhost ~
              
                ]
              
              
                # systemctl enable postgresql-11
              
              
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-11.service to /usr/lib/systemd/system/postgresql-11.service.

            
          
  1. 登陆postgreSQl 并修改密码
            
              
                [
              
              root@localhost ~
              
                ]
              
              
                # su - postgres
              
              
-bash-4.2$ psql
psql 
              
                (
              
              11.3
              
                )
              
              
Type 
              
                "help"
              
              
                for
              
               help.

postgres
              
                =
              
              
                # \password
              
              
Enter new password: 
Enter it again: 

            
          
  1. 查看plpython3 是否可以使用
            
              postgres=# create language plpython3u;
CREATE LANGUAGE
postgres=# CREATE FUNCTION pymax (a integer, b integer)
postgres-#    RETURNS integer
postgres-# AS $$
postgres$#   if a > b:
postgres$#     return a
postgres$#   return b
postgres$# $$ LANGUAGE plpython3u;
CREATE FUNCTION
postgres=# select pymax(20,12);
 pymax 
-------
    20
(1 row)

postgres=# select pymax(10,12);
 pymax 
-------
    12
(1 row)


            
          
  1. 设置远程连接
    1. 修改postgresql.conf 文件
                    
                      
                        [
                      
                      root@localhost ~
                      
                        ]
                      
                      
                        # vim /var/lib/pgsql/11/data/postgresql.conf
                      
                      
    59 listen_addresses 
                      
                        =
                      
                      
                        '*'
                      
                      
                        # what IP address(es) to listen on;
                      
                      
    60                                         
                      
                        # comma-separated list of addresses;
                      
                      
    61                                         
                      
                        # defaults to 'localhost'; use '*' for all
                      
                      
    62                                         
                      
                        # (change requires restart)
                      
                      
    63 
                      
                        #port = 5432                            # (change requires restart)
                      
                      
    64 max_connections 
                      
                        =
                      
                       100                   
                      
                        # (change requires restart)
                      
                      
    65 
                      
                        #superuser_reserved_connections = 3     # (change requires restart)
                      
                    
                  
    1. 修改pg_hba.conf文件 最后一行添加
                    
                      
                        [
                      
                      root@localhost ~
                      
                        ]
                      
                      
                        # vim /var/lib/pgsql/11/data/pg_hba.conf
                      
                      
    host    all             all             0.0.0.0/0              md5
    
                    
                  
    1. 打开防火墙5432端口并重启postgresql服务
                    
                      
                        [
                      
                      root@localhost ~
                      
                        ]
                      
                      
                        # vim /var/lib/pgsql/11/data/postgresql.conf 
                      
                      
                        [
                      
                      root@localhost ~
                      
                        ]
                      
                      
                        # vim /var/lib/pgsql/11/data/pg_hba.conf 
                      
                      
                        [
                      
                      root@localhost ~
                      
                        ]
                      
                      
                        # firewall-cmd --zone=public --add-port=5432/tcp --permanent
                      
                      
    success
    
                      
                        [
                      
                      root@localhost ~
                      
                        ]
                      
                      
                        # firewall-cmd --reload
                      
                      
    success
    
                    
                  
    1. 重启postgresql-11 服务并测试
                    
                      
                        [
                      
                      root@localhost ~
                      
                        ]
                      
                      
                        # systemctl restart postgresql-11
                      
                    
                  

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论