python服务器环境搭建_python服务器环境搭建(2)——安装相关软件

在上一篇我们在本地的虚拟服务器上安装好CentOS7后,我们的python web服务、自定义的python service或python脚本需要在服务器上运行,还需要在服务器安装各种相关的软件才行,一般来说,想要实现自动化部署需求,还需要安装nginx、svn、uwsgi、python3.0(系统自带python2.7.5)、supervisor、postgresql、redis(nosql缓存根据自己代码的需要而定)。

PS:本人不是专业的运维,只能根据自己的研究弄弄单机版的python web服务器,而对于多服务器自动化同步的部署、服务器的监控、Linux服务器的安全、服务器的调优(很多服务安装不是重点,能将各种参数运用配置到洽到好处才是难点),大家最好找专业的运维工程师来处理。再一次感谢小戴同学的尽心帮助,让我学会了很多服务器运维方面的知识,才有这篇文章。(在这里帮小戴做做广告:人品好、技术牛、外包费用低,我们公司服务器维护外包给了他,配置各种服务器非常快,想学python与自动化运维的可以上他的博客http://www.linuxyw.com/)

一、安装常用工具包

输入下面命令,安装各种常用工具包,可以逐项直接输入下面命令进行安装(如果出现y/n/d选择时,输入y加回车就可以了)

yum install -y pcre-devel

yum install-y openssl openssl-devel

yum install gcc gcc-c++ ncurses-devel perl -y

yum-y install zlib zlib-devel

yum install wget lrzsz libxml2-y

yum install kernel-devel libxslt-devel libpqxx-devel libffi-devel python-devel libpq-dev -y

在使用yum安装各种工具包时,由于使用的源默认是国外的,所以有时有一些源由于网络或什么原因会安装不上,所以可以通过更改yum安装源来提升安装效率,下面是使用网易源(阿里源在虚拟机上好像使用不了,如果使用阿里云的话可以替换为阿里源)

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

cd/etc/yum.repos.d/wget-O CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo## wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum makecache

yum-y update

PS:如果Python已升级到3,更改yum源需要将python的软链接指回2的版本(即输入命令python -V可看到的是2.7版本),不然运行yum -y update后可能会出错,导至yum无法使用。另外,使用yum升级,好像会将内核一些程序也升级了。

二、安装nginx服务

首先在网上找到下面安装包(如果下面组件版本对不上,可能会造成nginx安装失败)

nginx-1.10.3.tar.gz

openssl-1.0.2n.tar.gz

pcre-8.39.tar.gz

zlib-1.2.11.tar.gz

将它们上传到服务器:/usr/local/src 目录下面,openssl、pcre和zlib这些组件不安装问题也不大,不过这些常用的组件安装好了,以后需要时就不必重新安装了

1、安装pcre

cd /usr/local/src

mkdir/usr/local/pcre

tar zxvf pcre-8.39.tar.gz

cd pcre-8.39./configure --prefix=/usr/local/pcre

make

make install

2、安装openssl

cd /usr/local/src

mkdir/usr/local/openssl

tar zxvf openssl-1.0.2n.tar.gz

cd openssl-1.0.2n

./config --prefix=/usr/local/openssl

make

make install

vi/etc/profile

在vi编辑器的最后面添加下面代码(vi编辑器的使用请自己百度)

export PATH=$PATH:/usr/local/openssl/bin

按esc键,输入:wq! 保存退出

输入下面代码让刚添加的代码生效

source/etc/profile

3、安装zlib

cd /usr/local/src

mkdir/usr/local/zlib

tar zxvf zlib-1.2.11.tar.gz

cd zlib-1.2.11./configure --prefix=/usr/local/zlib

make

make install

4、安装Nginx

groupadd www

useradd-g www www -s /bin/false

cd/usr/local/src

tar zxvf nginx-1.10.3.tar.gz

cd nginx-1.10.3./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.2n --with-zlib=/usr/local/src/zlib-1.2.11 --with-pcre=/usr/local/src/pcre-8.39make

make install

完成nginx安装后,我们可以检查一下nginx能否正常启动

输入nginx初次启动命令:/usr/local/nginx/sbin/nginx

检查nginx是否在进程中:ps -ef | grep nginx (可以看到nginx已在服务器上正常 运行了)

检查nginx启动后点用的端口:netstat -antup | grep nginx

129385-20170316145549995-694177978.png

这时如果想要用浏览器访问的话,需要先关闭防火墙才行

输入命令:systemctl stop firewalld

然后打开浏览器,输入地址:http://192.168.0.128/ 就可以看到下面的页面了(这个ip怎么来的,请看上一篇《python服务器环境搭建(1)——本地服务器准备》,也可以输入ifconfig命令来查询)

129385-20170321144403580-283588217.png

三、安装supervisor(Python进程管理器)

因为supervisor目前只支持python2,所以得在升级到3之前进行安装,不然会比较麻烦(文后附有升级到python3后,怎么调用python2安装的说明)

安装之前需要先安装python的pip(程序自动安装程序)

输入命令:curl https://bootstrap.pypa.io/get-pip.py | python (回车后就会自动下载pip并自动安装)

完成后查看pip版本:pip -V

安装supervisor:pip install supervisor

四、安装postgresql

输入命令安装postgresql数据库

yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

yum -y install postgresql11

yum -y install postgresql11-server

yum -y install postgresql11-libs

yum -y install postgresql11-contrib

yum -y install epel-release

yum -y install postgresql11-llvmjit

yum -y install postgresql11-devel

mkdir -p /data/pg/data

mkdir -p /data/logs/pg

chown postgres:postgres /data/pg

chown postgres:postgres /data/pg/data

chown postgres:postgres /data/logs/pg

初始化数据库

su postgres

initdb -D /data/pg/data

/usr/pgsql-11/bin/initdb -D /data/pg/data

systemctl enable postgresql-11

systemctl start postgresql-11

修改服务器系统环境变量

vi /etc/profile

添加下面配置

export PGHOME=/usr/pgsql-11

export PGDATA=/data/pg/data

export PGLIB=/usr/pgsql-11/lib

export PATH=$PGHOME/bin:$PATH

保存退出后,运行命令,让配置马上生效

source /etc/profile

配置postgresql.conf

cd /data/pg/data

vi postgresql.conf

修改数据库访问地址(localhost为本地访问,可以设置可访问地址为对应的局域网IP或外网IP,也可以改为*,即允许所有地址访问)

listen_addresses = '192.168.xxx.xxx'

配置pg_hba.conf

vi pg_hba.conf

找到# IPv4 local connections: 在它的下面添加一行,设置数据库需要密码访问

host all all 0.0.0.0/0 md5

启动pg服务

su postgres -c "/usr/pgsql-11/bin/pg_ctl -D /data/pg/data -l /data/logs/pg/logfile.log start"

修改postgres用户登录密码

su postgres

psql -U postgres

Alter user postgres with password '123456';

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

五、安装redis

登录http://download.redis.io/releases/ 选择需要安装的版本

进入tmp文件夹:cd /tmp/

然后再次输入:wget http://download.redis.io/releases/redis-3.2.8.tar.gz

创建redis安装文件夹:mkdir /usr/local/redis

解压缩安装包:tar -zxvf redis-3.2.8.tar.gz

进入安装包文件夹:cd redis-3.2.8

执行安装命令:make PREFIX=/usr/local/redis/ install

上面安装命令执行完成,/usr/local/redis/目录下就有个bin目录,里面放的是redis服务相关的可执行命令

复制redis配置文件到指定目录:cp redis.conf /usr/local/redis

六、安装python3.5.4版本(python2.7.5还可以继续使用)

PS:由于升级到python3以后,在yum安装一些软件时(只是部分),可能这些软件的安装还是使用python2来写的,会导致无法使用yum安装,所以最好将相关内容先安装好以后再进行升级

安装python依赖包:

yum groupinstall "Development tools"yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

下载Python3.5.4安装包并进行安装

cd /usr/local/src

wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz

tar-zxvf Python-3.5.4.tgz

cd Python-3.5.4./configure --prefix=/usr/local --enable-shared && make && make install

在运行Python之前需要配置库:

echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf

ldconfig

备份python2.7版本bin

mv /usr/bin/python /usr/bin/python2.7.5ln-s /usr/local/bin/python3 /usr/bin/python

完成安装,输入下面命令就可以查看到当前安装python的版本信息Python 3.5.4了

python --version

升级pip3安装包

pip3 install --upgrade pip

修改python2.7版本运行的脚本链接,将以下文件全部用vi编辑器打开,将第一行的 #!/usr/bin/python 改为 #!/usr/bin/python2

vi /usr/bin/yum

vi /usr/bin/yum-config-manager

vi /usr/sbin/tuned

vi /usr/libexec/urlgrabber-ext-down

vi /usr/bin/supervisord

vi /usr/bin/supervisorctl

批量安装python3各种常用包

输入命令:vi requirements.txt 粘贴下面内容

ContractedBlock.gif

ExpandedBlockStart.gif

amqp

anyjson

argh

asn1crypto

Beaker

beakeredis

beautifulsoup4

bleach

bottle

bs4

cffi

click

cryptography

cycler

decorator

dynaconf

enum-compat

eventlet

flasgger

Flask

gevent

greenlet

html5lib

idna

itsdangerous

Jinja2

jpush

jsonschema

kombu

lxml

MarkupSafe

matplotlib

mistune

mock

Naked

nameko

networkx

numpy

olefile

packaging

panda

pandas

paramiko

pathtools

path.py

pbr

Pillowprintpsycopg2

psycopg2-binary

pyasn1

pycparser

pycrypto

pycryptodome

pyparsing

python-dateutil

python-alipay-sdk

python-box

python-dateutil

python-dotenv

pytz

PyWavelets

PyYAML

qrcode

redis

reload

requests

scikit-image

scipy

shellescape

six

typing

tushare

watchdog

webencodings

Werkzeug

wrapt

XlsxWriter

yagmail

View Code

保存后,输入命令:pip3 install -r requirements.txt

安装程序会将里面常用的依赖包全部安装,方便快捷

PS:使用源码包编译安装python3以后,还会保留原python2的相关命令,所以直接使用pip安装的是python2的包,要安装python3的包,必须使用pip3

七、安装uwsgi

安装pepl源(不安装有时安装相关模块时会找不到源)

yum -y install epel-release

安装uwsgi依赖包

yum -y installuwsgi-devel

使用python的pip再安装一次uwsgi(这样可以避免后续安装后,uwsgi运行时执行的是python2.7版本的问题)

pip3 install uwsgi

下载uwsgi安装包

cd /usr/local/src/wget https://projects.unbit.it/downloads/uwsgi-2.0.18.tar.gz

tar zxvf uwsgi-2.0.18.tar.gz

cd uwsgi-2.0.18make-j 8python3 uwsgiconfig.py--build

cp uwsgi/usr/bin/

修改配置文件:vi buildconf/core.ini (在 buildconf/core.ini 文件中添加下面内容)

plugin_dir = /etc/uwsgi

bin_name= /usr/bin/uwsgi

创建uwsgi配置存放文件夹

mkdir /etc/uwsgi

编译 python3.5 版本的uwsgi plugins(如果你修改了python35为其他名称,记录同步修改下面复制的文件名)

python3 uwsgiconfig.py --plugin plugins/python core python35

把生成好的*python35*.so复制到项目目录下面

cp /etc/uwsgi/python35_plugin.so /usr/local/src/uwsgi-2.0.18# 将uwsgi/python35_plugin.so复制到你的python项目源码目录下面cp /etc/uwsgi/python35_plugin.s /data/www/xxx

python35_plugin.so不在正确的目录下面时,使用uwsgi启动python服务会经常出现 No such file or directory 错误,如下所示:

[uWSGI] parsing config file /etc/uwsgi/manager.xml

open("./python35_plugin.so"): No such file or directory [core/utils.c line 3724]

!!! UNABLE to load uWSGI plugin: ./python35_plugin.so: cannot open shared object file: No such file or directory !!!

这是因为在uwsgi的配置中,指定了运行插件python35_plugin.so,但在工作目录中没有找到这个插件引起的错误,只需要将它复制到项目所在的根目录下面就可以了

输入命令:uwsgi --version就可以查询到安装的版本了

八、安装svn服务

由于已升级到python3了,直接使用yum安装会出现错误,所以我们需要操作一下,改回python2版本(PS:这是一个安装了Python3后,需要使用Python2进行安装软件的例子)

删除之前创建的python3链接:rm -rf /usr/bin/python

将之前备份的python2.7.5复制为python:cp /usr/bin/python2.7.5 /usr/bin/python

输入安装命令:yum install subversion

查看svn安装的版本:svnserve --version

PS:一定要将python链接指向python2,不然执行的还是python3版本的命令

将python链接重新指向python3.5.2

删除刚刚复制的python链接:rm -rf /usr/bin/python

创建新的链接指向新安装的python3.5.4:ln -s /usr/local/bin/python3 /usr/bin/python

python服务器需要的相关软件基本上就安装完成了(当然redis与postgresql并不是python服务器运行的必要软件,这是我自己框架所需要的),具体测试与配置,下一篇再写

版权声明:

本文由AllEmpty原创并发布于博客园,版权与博客园共同所有,欢迎转载,未经本人同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如有问题,可以通过[email protected] 联系我,非常感谢。

发表本编内容,主要是为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:669058475(本群已满)、733466321(可以加2群),大家一起探讨。

你可能感兴趣的:(python服务器环境搭建)