python服务器环境搭建(2)——安装相关软件
【摘要】 在上一篇我们在本地的虚拟服务器上安装好CentOS7后,我们的python web服务、自定义的python service或python脚本需要在服务器上运行,还需要在服务器安装各种相关的软件才行,一般来说,想要实现自动化部署需求,还需要安装nginx、svn、uwsgi、python3.0(系统自带python2.7.5)、supervisor、postgresql、redis(no...
在上一篇我们在本地的虚拟服务器上安装好CentOS7后,我们的python web服务、自定义的python service或python脚本需要在服务器上运行,还需要在服务器安装各种相关的软件才行,一般来说,想要实现自动化部署需求,还需要安装nginx、svn、uwsgi、python3.0(系统自带python2.7.5)、supervisor、postgresql、redis(nosql缓存根据自己代码的需要而定)。
一、安装常用工具包
输入下面命令,安装各种常用工具包,可以逐项直接输入下面命令进行安装(如果出现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无法使用。
二、安装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.39
make
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
登录官网获取安装版本安装地址 https://www.postgresql.org/download/linux/redhat/
输入命令安装pg
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install postgresql11
yum install postgresql11-server
yum install postgresql11-libs
yum install postgresql11-contrib
yum install postgresql11-devel
mkdir /data
mkdir /data/pg
mkdir /data/pg/data
mkdir /data/logs/pg
chown postgres:postgres /data/pg
chown postgres:postgres /data/pg/data
chown postgres:postgres /data/logs/pg
初始化数据库
su postgres
/usr/pgsql-11/bin/postgresql-11-setup initdb -D /data/pg/data
修改服务器系统环境变量
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
修改数据库访问地址
listen_addresses = '192.168.0.128'
localhost为本地访问,可以设置可访问地址为对应的局域网IP或外网IP,也可以改为*,即允许所有地址访问
如果想修改访问端口,可找到#port = 5432,将前面的#删掉,这里可以指定访问数据库的端口
配置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/),然后使用pgAdmin连接上服务器的数据库,用图形界面来管理数据库了
五、安装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
修改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,查看里面的存储数据
六、安装python3.7.5版本(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.7.5安装包并进行安装
cd /usr/local/src
wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
tar -zxvf Python-3.7.5.tgz
cd Python-3.7.5
./configure --prefix=/usr/local --enable-shared && make && make install
在运行Python之前需要配置库:
echo /usr/local/lib >> /etc/ld.so.conf.d/local.conf
ldconfig
创建python3命令链接
ln -s /usr/local/bin/python3 /usr/bin/python
完成安装,输入下面命令就可以查看到当前安装python的版本信息Python 3.7.5了
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
PS:使用源码包编译安装python3以后,还会保留原python2的相关命令,所以直接使用pip安装的是python2的包,要安装python3的包,必须使用pip3
七、安装uwsgi
安装pepl源(不安装有时安装相关模块时会找不到源)
yum -y install epel-release
安装uwsgi依赖包
yum -y install uwsgi-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.18
make -j 8
python3 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.7 版本的uwsgi plugins(如果你修改了python37为其他名称,记录同步修改下面复制的文件名)
python3 uwsgiconfig.py --plugin plugins/python core python37
把生成好的*python37*.so复制到/usr/lib64/uwsgi/下面
cp /etc/uwsgi/python37_plugin.so /usr/lib64/uwsgi/
cp /etc/uwsgi/python37_plugin.so /usr/local/src/uwsgi-2.0.18
查找一下你的Python3安装路径,并将python35_plugin.so复制到python3安装根目录下
可以通过执行python3命令,进入python命令模式,然后导入sys文件(import sys),跟着打印系统路径查看(print(sys.path)),然后用cp命令将文件复制到python3安装目录下面就可以了
输入命令:uwsgi --version 就可以查询到安装的版本了
八、安装svn服务
由于已升级到python3了,直接使用yum安装会出现错误,所以我们需要操作一下,改回python2版本(PS:这是一个安装了Python3后,需要使用Python2进行安装软件的例子)
删除之前创建的python3链接:rm -rf /usr/bin/python
还原python版本为2.7:cp /usr/bin/python2 /usr/bin/python
输入安装命令:yum install subversion
查看svn安装的版本:svnserve --version
PS:一定要将python链接指向python2,不然执行的还是python3版本的命令
将python链接重新指向python3.7.5
删除刚刚复制的python链接:rm -rf /usr/bin/python
创建新的链接指向新安装的python3.7.5:ln -s /usr/local/bin/python3 /usr/bin/python
python服务器需要的相关软件基本上就安装完成了(当然redis与postgresql并不是python服务器运行的必要软件,这是我自己框架所需要的)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)