在上一篇我们在本地的虚拟服务器上安装好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
这时如果想要用浏览器访问的话,需要先关闭防火墙才行
输入命令:systemctl stop firewalld
然后打开浏览器,输入地址:http://192.168.0.128/ 就可以看到下面的页面了(这个ip怎么来的,请看上一篇《python服务器环境搭建(1)——本地服务器准备》,也可以输入ifconfig命令来查询)
三、安装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 粘贴下面内容
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群),大家一起探讨。