python服务器环境搭建-3>>>参数配置

和黑猫之家聊聊?

        

python服务器环境搭建-3>>>参数配置 python教程 第1张


        前面我们已安装好了python服务器运行所需要的相关软件,而最重要最繁琐的就是参数配置,写这篇就踩了好多坑,花了好多时间,遇到了各种各样的问题。好了费话少说,直接进入本篇话题。

  PS:本人不是专业的运维,很多linux服务器的问题都是一知半解,只能根据自己的研究弄弄单机版的python web服务器,而对于多服务器自动化同步的部署、服务器的监控、Linux服务器的安全、服务器的调优(很多服务安装不是重点,能将各种参数运用配置到洽到好处才是难点),大家最好找专业的运维工程师小戴同学问问,问我的话我也不一定能回答的出来。再一次感谢小戴同学的用心指导,让我学会了很多服务器运维方面的知识,才有这篇文章。(想学python与自动化运维的可以上他的博客http://www.linuxyw.com/)

 


 

  目录:

  一、让你的python代码跑起来

  二、使用supervisord来管理python进程
  三、将nginx与supervisord关联起来(使用代理方式,非uwsgi)
  四、使用nginx+supervisord+uwsgi来管理python web服务
  五、使用svn来管理python的自动化发布
  六、postgresql配置 
  七、pgbouncer配置
  八、Redis配置
  九、设置各服务开机启动功能


 

  一、让你的python代码跑起来

  既然我们要配置的是python服务器,那首先我们要做的第一步是,放上我们的python代码,看看能否运行并访问

  先上代码,将下面代码粘贴到记事本上并存储为main.py(这个文名可以随便起,我存储的格式为ANSI格式,即记事本默认的格式)

python服务器环境搭建-3>>>参数配置 python教程 第2张

#!/usr/bin/evn python# coding=utf-8from bottle import default_app, get, runfrom beaker.middleware import SessionMiddleware

@get('/index/')def callback():    return 'Hello World!'if __name__ == '__main__':
    app_argv = SessionMiddleware(default_app())
    run(app=app_argv, host='0.0.0.0', port=8088, debug=True, reloader=True)else:
    application = SessionMiddleware(default_app())

python服务器环境搭建-3>>>参数配置 python教程 第3张

  我们为了方便以后对服务器的管理,需要创建一个指定的文件夹(如果有挂载新硬盘的,可以将这个文件夹绑定到该目录),将日志、数据库、web站、后台服务、svn等内容统一放到指定文件夹下面

  首先在根目录下创建一个data文件夹(后面的各种日志、web站点等全都放在这里统一管理,以后我们要查找时就很方便了)

  输入命令:mkdir /data

  创建python web存储目录:mkdir /data/www

  创建测试目录:mkdir /data/www/test

  然后使用SSH的上传工具

python服务器环境搭建-3>>>参数配置 python教程 第4张

,上传刚刚创建好的main.py文件到www目录下的test文件夹

  

python服务器环境搭建-3>>>参数配置 python教程 第5张


  后面的上传用这个上传工具处理(也可以直接使用vi进行编辑)不再截图

  然后我们运行:python /data/www/test/main.py  (或进入test目录运行:python main.py

  运行后会显示ImportError: No module named bottle错误,这是因为我们的程序调用了bottle包,而我们未安装这个依赖包,需要安装后程序才能正常运行,以后在使用python中碰到这种情况,直接输入pip install xxx即可

  安装bottle包:pip install bottle

  安装beaker包:pip install beaker

  

python服务器环境搭建-3>>>参数配置 python教程 第6张


  然后再次输入:python main.py

  就会发现python web服务运行起来了

  

python服务器环境搭建-3>>>参数配置 python教程 第7张

   然后关闭防火墙:systemctl stop firewalld  (如果浏览器访问不了,可以运行这个命令来关闭防火墙)

   打开浏览器输入:http://192.168.0.128:8088/index/  就可以看到Hello World!了

   

python服务器环境搭建-3>>>参数配置 python教程 第8张

  为了方便后面的测试,我们按Ctrl+C,关闭刚才python启动的main.py服务

 

  二、使用supervisord来管理python进程

  supervisord默认配置文件存放路径是/etc/目录下面,安装完成后配置文件是不存在的,需要使用命令生成或我们自己放一个进去,我们先配置一个简单的不使用uwsgi的配置文件

  文件名称:supervisord.conf (我存储的格式为ANSI格式,即记事本默认的格式)

python服务器环境搭建-3>>>参数配置 python教程 第9张

[unix_http_server]file=/tmp/supervisor.sock   ; (the path to the socket file)

[supervisord]
logfile=/data/logs/supervisord/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=10MB        ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=2           ; (num of main logfile rotation backups;default 10)
loglevel=info                ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false               ; (start in foreground if true;default false)
minfds=1024                  ; (min. avail startup file descriptors;default 1024)
minprocs=200                 ; (min. avail process descriptors;default 200)

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket[program:test]
command=python /data/www/test/main.py    ; supervisord将要执行的运行python服务的命令
directory=/data/www/test
stdout_logfile=/data/logs/supervisord/test_supervisord.log    ; supervisord当前这个test服务运行产生的日志存储路径,方便我们查看运行情况
socket-timeout=3autostart=trueautorestart=trueredirect_stderr=truestopsignal=QUIT

python服务器环境搭建-3>>>参数配置 python教程 第10张

  使用上传工具上传到/etc/supervisord.conf

  

python服务器环境搭建-3>>>参数配置 python教程 第11张


  为了规范日志管理,我们在data文件夹下继续创建对应的日志文件夹,以后查找supervisord日志就可以在下面创建的文件夹中查看了

  输入命令:mkdir /data/logs

  输入命令:mkdir /data/logs/supervisord

  由于supervisord目前只支持python2,所以运行时需要用python2来启动

  启动supervisord服务:/usr/bin/python2.7 /usr/bin/supervisord

  

python服务器环境搭建-3>>>参数配置 python教程 第12张


  我们继续在浏览器中输入http://192.168.0.128:8088/index/ 可以发现还是可以正常访问,看到Hello World!(前面执行python /data/www/test/main.py后,按Ctrl+C就直接退出了,用浏览器是无法正常访问的,现在的访问是supervisord启动的)

  使用supervisord启动的python进程可以发现,我们用kill xxx命令来直接关闭python进程,关闭后supervisord会重新启动新的进程,也就是说不kill掉supervisord进程,是无法杀死supervisord启动的python进程的

  

python服务器环境搭建-3>>>参数配置 python教程 第13张


 

  PS:由于python2.7.5与python3.5.2并存,在对supervisord配置进行修改以后,使用命令:/usr/bin/supervisord -v执行时,会出现 ImportError: No module named 'supervisor' 这个错误,虽然我们前面用的是python2.7.5来启动supervisord服务的,但生成执行命令时,默认还是用python这个链接,所以我们需要对/usr/bin/supervisord/usr/bin/supervisorctl进行修改

  执行命令:vi /usr/bin/supervisord

  将第一行的#!/usr/bin/python 改为 #!/usr/bin/python2.7.5

  执行命令:vi /usr/bin/supervisorctl

  将第一行的#!/usr/bin/python 改为 #!/usr/bin/python2.7.5

  我们再执行:/usr/bin/supervisord -v时就正常了

 

  三、将nginx与supervisord关联起来(使用代理方式,非uwsgi)

  首先我们要为nginx创建对应的访问账号

  输入命令:/usr/sbin/groupadd -f www
  输入命令:/usr/sbin/useradd -g www www

 

  为nginx创建对应的日志管理文件夹

  输入命令:mkdir /data/logs/nginx

  因为nginx的配置默认全部是在nginx.conf里设置的,网站多时管理不方便,所以我们需要创建一个文件夹,将每个独立的网站配置放在里面

  创建nginx配置统一管理文件夹:mkdir /usr/local/nginx/conf/vhost

  修改/usr/local/nginx/conf/nginx.conf配置文件内容,替换成下面参数

python服务器环境搭建-3>>>参数配置 python教程 第14张

user www www;
worker_processes  1;
worker_rlimit_nofile 10240;
error_log /data/logs/nginx/error.log error;

events {
    use epoll;
    worker_connections  10240;
}

http {
    log_format  main  '[$time_local] $remote_addr  $upstream_addr  $status  $body_bytes_sent  [$request_time] '
                      '"$request" "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay on;
    server_tokens off;
    
    include vhost/*.conf;
}

python服务器环境搭建-3>>>参数配置 python教程 第15张

  将test.conf上传到刚创建的/usr/local/nginx/conf/vhost/目录下,具体内容如下(使用80端口访问,将代理地址指定前面配置的8088端口):

python服务器环境搭建-3>>>参数配置 python教程 第16张

server {
    listen      80;
    charset     utf-8;
    root        /data/www/test;
    server_name 192.168.0.128;
    
    location / {
        proxy_pass  http://127.0.0.1:8088;    }

    access_log  /data/logs/nginx/test_access.log  main;
}

python服务器环境搭建-3>>>参数配置 python教程 第17张

  PS:在使用之前,我们需要重新一次服务器,不然可能会出现端口被占用访问出现404的问题,重启后就正常

  启动nginx服务: /usr/local/nginx/sbin/nginx 

  启动supervisord服务:/usr/bin/python2.7 /usr/bin/supervisord

  如果修改了nginx配置内容,需要重新启动nginx才能生效,重启命令: /usr/local/nginx/sbin/nginx 

  如果启动后没有出现错误信息,就表示启动成功了,可以使用命令来查询启动情况:ps -ef | grep nginx

  我们在浏览器中输入http://192.168.0.128/index/可以发现Hello World!访问正常(PS:可以发现,我们直接访问80端口完全没有问题)

  

python服务器环境搭建-3>>>参数配置 python教程 第18张


  四、使用nginx+supervisord+uwsgi来管理python web服务

  首先,我们让uwsgi运行起来

  根据官网(https://uwsgi-docs.readthedocs.io/en/latest/)说明,我们还需要安装python-dev插件

  输入命令:yum install python-dev

 

  第一个Hello World!例子:

  输入命令:vi /tmp/foobar.py

  然后点击键盘 i  进入编辑模式,将下面的代码粘贴进vi编辑器,然后按Esc键,按Shift+:,输入wq+回车键,保存foobar.py文件

 

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])    return [b"Hello World"]

 

  将这个例子运行起来:uwsgi --http :9090 --wsgi-file /tmp/foobar.py

 

  我们在浏览器中输入网址:http://192.168.0.128:9090/ 就可以看到Hello World了

 

  我们按Ctrl+C,关闭刚才用uwsgi启动的main.py服务

  为了方便uwsgi配置的管理,我们需要在etc目录下创建uwsgi文件夹,用来存储配置文件

  输入命令:mkdir /etc/uwsgi

  创建uwsgi日志文件夹:mkdir /data/logs/uwsgi

  创建配置文件,并将它上传到/etc/uwsgi目录下,配置文件名:test.ini,内容如下:

python服务器环境搭建-3>>>参数配置 python教程 第19张

[uwsgi]
socket = 127.0.0.1:8088chdir = /data/www/test/wsgi-file = /data/www/test/main.py 
limit-as = 512reload-on-as = 256reload-on-rss = 192processes = 2max-requests = 1000pythonpath = /data/www/test/daemonize = /data/logs/uwsgi/test_uwsgi.log
log-maxsize = 10000000disable-logging = truemaster = truevacuum = trueno-orphans = true

python服务器环境搭建-3>>>参数配置 python教程 第20张

  修改/etc/supervisord.conf配置文件内容,将command=python /data/www/test/main.py修改为command=/usr/local/bin/uwsgi /etc/uwsgi/test.ini

python服务器环境搭建-3>>>参数配置 python教程 第21张

[unix_http_server]file=/tmp/supervisor.sock   ; (the path to the socket file)

[supervisord]
logfile=/data/logs/supervisord/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=10MB        ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=2           ; (num of main logfile rotation backups;default 10)
loglevel=info                ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false               ; (start in foreground if true;default false)
minfds=1024                  ; (min. avail startup file descriptors;default 1024)
minprocs=200                 ; (min. avail process descriptors;default 200)

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket[program:test]
command=/usr/local/bin/uwsgi /etc/uwsgi/test.ini
directory=/data/www/test
stdout_logfile=/data/logs/supervisord/test_supervisord.log
socket-timeout=3autostart=trueautorestart=trueredirect_stderr=truestopsignal=QUIT

python服务器环境搭建-3>>>参数配置 python教程 第22张

  修改nginx的配置文件/usr/local/nginx/conf/vhost/test.conf

python服务器环境搭建-3>>>参数配置 python教程 第23张

server {
    listen      80;
    charset     utf-8;
    root        /data/www/test;
    server_name 192.168.0.128;

    location / {
        include uwsgi_params;
        uwsgi_pass  127.0.0.1:8088;
    }

    access_log  /data/logs/nginx/test_access.log  main;
}

python服务器环境搭建-3>>>参数配置 python教程 第24张

  重启服务命令:/usr/local/nginx/sbin/nginx -s reload(如果nginx服务没有启动,就使用这个命令:/usr/local/nginx/sbin/nginx )

  另外,如果我们修改了supervisord的配置文件,则需要运行下面命令重启服务(如果你又重启了服务器,则需要重新启动supervisord服务:/usr/bin/python2.7 /usr/bin/supervisord,否则不用执行这个命令)

  载入刚刚修改过的配置信息:/usr/bin/supervisorctl reread (运行后才可以载入内存)

  重启全部supervisord服务:/usr/bin/supervisorctl reload (运行这个将会重启全部服务,会比较慢)

  PS:其他supervisord命令说明

  启动或重启配置修改项对应的服务:/usr/bin/supervisorctl update (有时可能会启动失败,需要需要其他方式启动)

  我们更新了python文件,如果没有重启对应的服务修改是不生效的,即访问时还是旧的代码功能,需要重启对应的服务才行,比如现在我们的supervisord服务名称叫做test,那么可以使用下面命令来重启对应的uwsgi服务

  重启test的uwsgi服务:/usr/bin/supervisorctl restart test (启动服务命令:/usr/bin/supervisorctl start test

 

  我们在浏览器中输入网址:http://192.168.0.128/index/ 就可以看到使用nginx+supervisord+uwsgi+python(bottle框架)运行的Hello World了

 

----------------------------------------2017-3-30 16:06修改更新---------------------------------------------------

  ps:之前使用/usr/bin/supervisorctl update重启supervisord,可能浏览器访问时出现502 Bad Gateway,这时我们需要查看supervisord和uwsgi日志,看看日志里有什么错误提示。一般会有下面日志:

 

python服务器环境搭建-3>>>参数配置 python教程 第25张

*** Starting uWSGI 2.0.14 (64bit) on [Thu Mar 30 03:44:31 2017] ***compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-11) on 29 March 2017 23:46:25os: Linux-3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016nodename: localhost.localdomain
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 16current working directory: /data/www/test
detected binary path: /usr/local/bin/uwsgi
uWSGI running as root, you can use --uid/--gid/--chroot options*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** chdir() to /data/www/test/your processes number limit is 62479limiting address space of processes...
your process address space limit is 536870912 bytes (512 MB)
your memory page size is 4096 bytes
detected max file descriptor number: 1024lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
probably another instance of uWSGI is running on the same address (127.0.0.1:8088).
bind(): Address already in use [core/socket.c line 769]

python服务器环境搭建-3>>>参数配置 python教程 第26张

 

  我们可以输入命令:ps -ef | grep uwsgi,查看一下uwsgi有没有运行,如果没有运行的话,可执行:/usr/bin/supervisorctl reload,再使用ps命令检查一下uwsgi启动了没有,启动了就表示正常了

 

  五、使用svn来管理python的自动化发布

  创建svn管理目录:mkdir /data/svn

  进入svn管理目录:cd /data/svn

  创建svn项:svnadmin create test

  修改/data/svn/test/conf文件夹下的配置文件

  

python服务器环境搭建-3>>>参数配置 python教程 第27张


  可以将这三个文件下载下来进行修改,也可以用vi进行编辑

  将authz文件替换成下面内容:

[test:/]

admin = rw
allempty = rw

   test是svn当前仓库项的模块名称,每个svn的这个名称都是唯一的,不然可能无法登录使用

  添加添加了两个账号,admin用于服务器端自动同步svn的代码到对应的web或服务使用,和个人账号区别出来,方便管理和保护账号安全,而allempty是我自己添加用于svn更新最新代码的账号

  将password文件替换成下面内容:

[users]
admin = 123456allempty = 123456

  这里设置账号对应的密码

  将svnserve.conf文件替换成下面内容:

[general]
anon-access = none
auth-access = writepassword-db = passwdauthz-db = authz

  在/data/svn/test/hooks/目录下创建post-commit勾子文件(post-commit文件没有扩展名),用于svn更新成功以后,自动同步到对应的代码目录

#!/bin/shexport LANG=en_US.UTF-8/usr/bin/svn up /data/www/test/usr/bin/supervisorctl restart test

  /usr/bin/svn up /data/www/test 这个命令是运行更新指令,本地代码通过svn更新到服务器以后,勾子会运行它来同步到指定的/data/www/test目录

  /usr/bin/supervisorctl restart test 因为我们用的是supervisord来管理python web服务的,代码更新完成以后并未生效,需要重新服务才行,这个命令是用来重启指定的supervisord进程的,它们帮我们将对应的uwsgi进程进行重启操作

  运行命令,将给予勾子post-commit可执行权限:chmod +x /data/svn/test/hooks/post-commit

 

  启动svn服务:/usr/bin/svnserve -d -r /data/svn

  配置test项目服务器端svn同步设置

  输入命令:svn checkout svn://localhost/test /data/www/test (在服务器端对test项进行svn检出操作)

  PS:出现Password for 'root': 直接回车就可以了,Username:输入前面authz里设置的账户名称,Password for 'admin': 输入对应的密码

  

python服务器环境搭建-3>>>参数配置 python教程 第28张

  操作到这里,svn的自动化发布就完成了,我们只需要在本地检出svn项,然后更新代码后,服务器端就会自动将代码同步到/data/www/test目录下面,并重启对应的supervisord服务了

  本地操作截图:(可以下载TortoiseSVN-1.9.4.27285-x64-svn-1.9.4.msi进行使用)

  

python服务器环境搭建-3>>>参数配置 python教程 第29张

  

python服务器环境搭建-3>>>参数配置 python教程 第30张

  

python服务器环境搭建-3>>>参数配置 python教程 第31张

  

python服务器环境搭建-3>>>参数配置 python教程 第32张

 

  六、postgresql配置 

  在data下创建pg文件夹,用于放置pg相关的所有东西

  输入命令:mkdir /data/pg

  在pg文件夹下我们再创建存放数据库的文件夹

  输入命令:mkdir /data/pg/data

  为新创建的pg文件夹分配数据库服务的操作权限

  输入命令:chown postgres:postgres /data/pg

  

python服务器环境搭建-3>>>参数配置 python教程 第33张


  为存放数据库的文件夹分配权限

  输入命令:chown postgres:postgres /data/pg/data

  设置postgresql相关环境变量

  修改profile文件

  输入命令:vi /etc/profile

  在尾部添加下面代码:

python服务器环境搭建-3>>>参数配置 python教程 第34张

PGDATA=/data/pg/data
PGHOST=127.0.0.1PGDATABASE=postgres
PGUSER=postgres
PGPORT=5432PATH=/usr/pgsql-9.6/bin:$PATH
export PATH
export PGDATA PGHOST PGDATABASE PGUSER PGPORTexport TMOUT=1000

python服务器环境搭建-3>>>参数配置 python教程 第35张

  重启一下虚拟机(reboot)或者输入命令: source /etc/profile重新载入配置,然后输入命令:export就可以看到刚才添加的变量了

  初始化postgresql数据库:

  使用postgres登录:su postgres

  然后执行初始化数据库命令,并指定数据库存储路径:initdb -D /data/pg/data

  

python服务器环境搭建-3>>>参数配置 python教程 第36张


  退出postgres用户,使用原root账号登录,可输入命令:su root,然后输入密码就可以切换回去

  

  我们再次进入/data/pg/data路径,就可以看到多了很多数据库文件夹和配置文件了

  

python服务器环境搭建-3>>>参数配置 python教程 第37张


  打开/data/pg/data/pg_hba.conf配置文件,找到# IPv4 local connections: 在它的下面添加一行host    all             all             0.0.0.0/0         md5

  

python服务器环境搭建-3>>>参数配置 python教程 第38张


  添加以后,我们链接数据库都必须要用输入密码

  打开/data/pg/data/postgresql.conf配置文件

  找到#listen_addresses = 'localhost',将前面的#删掉,参数localhost表示只允许当前服务器能链接数据库,如果想指定地址可以访问,可以输入ip地址,多个地址时用逗号分隔,如果开放所有地址可以访问,由使用*

  找到#port = 5432,将前面的#删掉,这里可以指定访问数据库的端口

  

python服务器环境搭建-3>>>参数配置 python教程 第39张


  启动postgresql数据库:su postgres -c "/usr/pgsql-9.6/bin/pg_ctl start -D /data/pg/data"

  使用postgres用户登录:su postgres

  连接数据库:psql -U postgres

  修改postgres用户密码:Alter user postgres with password '123456';

  退出数据库连接:\q

  我们可以在本地的windows系统里安装postgresql9.6(官方下载地址:https://www.postgresql.org/download/windows/),然后使用pgAdmin4连接上服务器的数据库,用图形界面来管理数据库了

 

  七、pgbouncer配置

  pgbouncer是pg数据库的链接池管理工具,一般用于高并发高可用时使用,并发量不高的系统可以不使用它,可采用直接链接数据库的方式

  创建pgbouncer配置文件与日志存储文件夹:mkdir /data/pg/pgbouncer

  设置文件夹访问用户权限:chown -R postgres:postgres /data/pg/pgbouncer

  设置文件夹读写权限:chmod 600 /data/pg/pgbouncer

  添加/data/pg/pgbouncer/pgbouncer.ini配置文件,内容如下:

python服务器环境搭建-3>>>参数配置 python教程 第40张

[databases]
write_db = host=127.0.0.1 port=5432 dbname=postgres user=postgres password=123456read_db = host=127.0.0.1 port=5432 dbname=postgres user=postgres password=123456[pgbouncer]
listen_port = 5433listen_addr = *auth_type = md5
auth_file = /data/pg/pgbouncer/userlist.txt
logfile = /data/pg/pgbouncer/pgbouncer.log
pidfile = /data/pg/pgbouncer/pgbouncer.pid
admin_users = pg_admin
pool_mode = session
max_client_conn = 1000default_pool_size = 128

python服务器环境搭建-3>>>参数配置 python教程 第41张

  配置中的pg_admin是pgbouncer的登录账号,auth_file是配置各种账号密码的文件路径,在这里可以直接配置读与写用不同的数据库(write_db与read_db)

  添加/data/pg/pgbouncer/userlist.txt配置文件,内容如下:

"pg_admin" "123456"

  设置文件夹访问用户权限:chown -R postgres:postgres /data/pg/pgbouncer/*

  添加pgbouncer相关环境变量

  输入命令:vi /etc/profile

  在尾部添加下面代码:

PATH=/usr/local/pgbouncer/bin:$PATH

  输入命令重启服务器:reboot,让配置生效

  启动postgresql数据库:su postgres -c "/usr/pgsql-9.6/bin/pg_ctl start -D /data/pg/data"

  启动pgbouncer服务: su postgres -c "/usr/local/bin/pgbouncer -d /data/pg/pgbouncer/pgbouncer.ini"

  查看pgbouncer服务启动情况:ps -ef | grep pgbouncer

  PS:pgbouncer服务的启动,不能直接用root用户去执行启动命令,这样会出现 FATAL @src/main.c:875 in function main(): PgBouncer should not run as root 这样的错误提示,为了这个问题,我用这个错误提示做为关键字找了N久,都没有找到解决办法,还好认识postgresql中文社区大牛:阿弟,他就一句话帮我这个外行人解决了,非常感谢阿弟的帮助

  pgbouncer具体的测试与使用,以后相关文章再写

 

  八、Redis配置

  redis之前安装没有指定安装路径,重新做了修改,大家可以查看http://www.cnblogs.com/EmptyFS/p/6558800.html 检查安装

  修改redis配置信息(可以下载/usr/local/redis/redis.conf或直接用vi /usr/local/redis/redis.conf进行编辑)

  主要修改内容有:

  bind 127.0.0.1   redis服务访问限制设置。使用127.0.0.1表示只能本机访问;如果用的是服务器在局域网里的ip:192.168.1.128,即表示局域网内的ip都可以访问;如果使用0.0.0.0由表示所有地址都可以访问。需要绑定多个时,可以添加多个bind xxx.xxx.xxx.xxx

  daemonize no  这个修改为daemonize yes  开启守护进程

  dir ./  这里需要修改为dir /usr/local/redis/data 不然redis数据会存储到root文件夹下面

  随便找个位置增加requirepass xxxxx,可以增加访问redis访问密码,如果你的redis对外网开放,这个密码一样要足够长足够复制,不然以redis的访问速度,比较容易被人破解

  可以增加maxmemory 1024M来限制redis占用内容大小,也可以不限制

  修改完成后,创建redis数据存储文件夹:mkdir /usr/local/redis/data

  修改完成,运行redis启动命令:/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

  redis服务就启动了,可以使用RedisDesktopManager这种第三方可视化工具来访问redis,查看里面的存储数据

 

  九、设置各服务开机启动功能

  以上众多的服务,有的朋友喜欢将它们设置成service方式自动启动,也有喜欢用命令方式来启动它们,为了操作简单,我们将它们都统一设置为命令启动方式。

  输入命令: vi /etc/rc.local ,在内容后面添加下面命令项,然后保存退出

python服务器环境搭建-3>>>参数配置 python教程 第42张

ulimit -SHn 102400/usr/bin/python2.7 /usr/bin/supervisord/usr/local/nginx/sbin/nginx/usr/bin/svnserve -d -r /data/svnsu postgres -c "/usr/pgsql-9.6/bin/pg_ctl start -D /data/pg/data"su postgres -c "/usr/local/bin/pgbouncer -d /data/pg/pgbouncer/pgbouncer.ini"/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

python服务器环境搭建-3>>>参数配置 python教程 第43张

  给予rc.local可执行权限:chmod +x /etc/rc.d/rc.local

  然后重启服务器,我们使用ps -ef就可以查看到各服务正在运行中了

python服务器环境搭建-3>>>参数配置 python教程 第44张

黑猫之家

来黑猫之家看看呗

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright © 2015-2018 黑猫吧(www.heimaoba.cn) 赣ICP备18005425号-1