美文网首页
联网机给离线机安装Python/MySQL及其它

联网机给离线机安装Python/MySQL及其它

作者: 赤色要塞满了 | 来源:发表于2020-04-19 20:13 被阅读0次

工作需要,需要给1台服务器(CentOS,离线机)安装软件,包括Python3、pip库、iptables、RabbitMQ、MySQL、MongoDB、Redis、Supervisor、Nginx等。整体思路是先准备1台联网机,下载好各种需要的软件包,然后局域网内连到离线机,拷贝软件包,进行安装。

安装Python3

先修改联网机yum配置,这样yum的安装包就会在安装完毕后保留:

vim /etc/yum.conf
# 以下为修改处
[main]
# cachedir=/var/cache/yum/$basearch/$releasever
cachedir=~/tmp/yum/
keepcache=1

安装一些依赖:

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel  epel-release gcc gcc-c++ xz-devel readline-devel gdbm-devel sqlite-devel tk-devel db4-devel libpcap-devel libffi-devel # 安装Python必需
yum install iptables-services # 防火墙用的,读者可自行研究
yum install socat # 安装RabbitMQ必需
yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel # 安装Nginx必需

安装包都会存在~/tmp/yum/目录。

接下来到Python官网选择下载版本,比如3.7.6,点击进去,选择tgz文件,

image.png
复制链接,回到联网机进行下载:
cd ~/tmp
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz

然后将tgz和之前的yum依赖都传到离线机上,可以使用scp命令,或者别的scp工具。

scp Python-3.7.6.tgz root@lixianji:/usr/local
scp -r ~/tmp/yum root@lixianji:~/tmp/yum

分别进入如下base epel updates目录的package目录,

image.png
运行rpm -Uvh ./*.rpm --nodeps --force进行安装即可,如图:
image.png
接下来安装Python:
cd /usr/local
tar -zxvf Python-3.7.6.tgz
cd Python-3.7.6
./configure
make && make install

安装完成后,验证一下:


image.png

当然了,联网机上肯定也要装完Python。

安装pip库

先在联网机上下载常用的pip库:

pip3 download pip -d ~/tmp/pip3_lib/ # pip升级
pip3 download cython -d ~/tmp/pip3_lib/ # 安装thriftpy必需,这是Flask必需的
pip3 download virtualenv -d ~/tmp/pip3_lib/
pip3 download virtualenvwrapper -d ~/tmp/pip3_lib/
pip3 download supervisor -d ~/tmp/pip3_lib/

假设项目提供了requirements.txt文件,检查一下版本:

Pillow==7.1.1
numpy==1.18.2
identicon==1.0
pandas==1.0.3
MarkupSafe==1.1.1 # 老版markupsafe含feature,而最新setuptools不支持

接下来下载库:

pip3 download -r requirements.txt -d ~/tmp/pip3_lib/

下载完后,检查一下保存目录,某些库可能得需要单独下载:

pip3 download thriftpy=0.3.9 -d ~/tmp/pip3_lib/ # 如果没有ply-3.11-py2.py3-none-any.whl
pip3 download kombu==4.5.0 -d ~/tmp/pip3_lib/ # 如果没有amqp-2.5.2-py2.py3-none-any.whl,vine-1.3.0-py2.py3-none-any.whl

好了,全部传到离线机:

scp -r ~/tmp/pip3_lib root@lixianji:~/tmp

先安装这几个比较独立的。

pip3 install ~/tmp/pip3_lib/pip-20.0.2-py2.py3-none-any.whl
pip3 install ~/tmp/pip3_lib/Cython-0.29.16-cp37-cp37m-manylinux1_x86_64.whl
pip3 install ~/tmp/pip3_lib/virtualenv-20.0.18-py2.py3-none-any.whl
pip3 install ~/tmp/pip3_lib/virtualenvwrapper-4.8.4.tar.gz
pip3 install ~/tmp/pip3_lib/supervisor-4.1.0-py2.py3-none-any.whl

然后配置下virtualenv,因为待会儿requirements.txt的库都要装到特定的虚拟环境。关于virtualenv可以参考以前这篇Python使用virtualenv极简例子
选定环境后,批量安装库。

pip3 install --no-index --find-links=~/tmp/pip3_lib  -r requirements.txt

应该没什么问题。

安装RabbitMQ

先在联网机上下载:

cd ~/tmp
wget www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
scp erlang-19.0.4-1.el7.centos.x86_64.rpm root@lixianji:~/tmp/
# 去离线机安装
rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm

输入erl命令验证下,能运行就OK。继续安装:

# 离线机
rpm -Uvh socat-1.7.3.2-2.el7.x86_64.rpm --nodeps --force # 应该在~/tmp/yum/base/packages目录,可能已经批量安装好了
# 联网机
cd ~/tmp
wget https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
scp rabbitmq-release-signing-key.asc root@lixianji:~/tmp/
# 离线机
rpm --import ~/tmp/rabbitmq-release-signing-key.asc
# 联网机
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
scp rabbitmq-server-3.6.6-1.el7.noarch.rpm root@lixianji:~/tmp
# 离线机
rpm -Uvh rabbitmq-server-3.6.6-1.el7.noarch.rpm --nodeps --force

这样RabbitMQ就安装好了,怎么配置请参考Python使用RabbitMQ(AMQP)极简例子

安装MySQL

先去联网机:

cd ~/tmp
wget http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm
rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
yum install mysql-community-server # 这一步可能很慢

然后去缓存目录下,会发现这么几个文件夹和文件:

~/tmp/mysql57-community/packages # 该目录下有5个rpm
mysql-community-client-5.7.29-1.el7.x86_64.rpm # 依赖文件
mysql-community-common-5.7.29-1.el7.x86_64.rpm # 依赖文件
mysql-community-libs-5.7.29-1.el7.x86_64.rpm # 安装文件
mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm # 安装文件
mysql-community-server-5.7.29-1.el7.x86_64.rpm # 安装文件
~/tmp/mysql-connectors-community # 该目录没用处
~/tmp/mysql-tools-community # 该目录没用处
~/tmp/base/packages/libaio-0.3.109-13.el7.x86_64.rpm # 依赖文件

发现MySQL官网有离线安装包,去官网MySQL5.7下载页,选择如下:

image.png
image.png
点击下载,复制下载链接,去联网机下载:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
scp mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar root@lixianji:~/tmp/mysql

然后去离线机,卸载自带的mariadb:

[root@tx-vm3 tmp]# rpm -qa|grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@tx-vm3 tmp]# rpm -e --nodeps mariadb-libs
[root@tx-vm3 tmp]# rpm -qa|grep mariadb
[root@tx-vm3 tmp]#

解压安装:

tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
rm -f mysql-community-embedded-* # 删掉嵌入式的
rpm -Uvh *.rpm --nodeps --force

按道理这就安装成功了,可以运行查看下:

systemctl start mysqld
systemctl status mysqld

如果发现是failed,运行journalctl -xe

...
mysqld_pre_systemd[16053]: /usr/sbin/mysqld: error while loading shared libraries: libnuma.so.1
...

这是需要去联网机下载这两个:

yum -d install numactl.x86_64
yum -d install numactl-libs-2.0.12-3.el7_7.1.x86_64.rpm
scp ~/tmp/yum/updates/packages/numactl-2.0.12-3.el7_7.1.x86_64.rpm root@lixianji:~/tmp/mysql
scp ~/tmp/yum/updates/packages/numactl-libs-2.0.12-3.el7_7.1.x86_64.rpm root@lixianji:~/tmp/mysql

再去离线机安装:

rpm -Uvh numactl-2.0.12-3.el7_7.1.x86_64.rpm --nodeps --force
rpm -Uvh numactl-libs-2.0.12-3.el7_7.1.x86_64.rpm --nodeps --force

systemctl start mysqld运行,发现还报错的话,如果看systemctl status mysqld是下面这个错:

[ERROR] --initialize specified but the data directory has files in it. Aborting.

说什么文件夹已经有文件了,那就:

mv mysql mysql.bak
systemctl start mysqld

终于ok了!

安装MongoDB

先去联网机下载:

wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-server-4.2.0-1.el7.x86_64.rpm
scp mongodb-org-server-4.2.0-1.el7.x86_64.rpm root@lixianji:~/tmp/mongo

然后安装启动:

rpm -Uvh mongodb-org-server-4.2.0-1.el7.x86_64.rpm --nodeps --force
systemctl status mongod
systemctl start mongod
systemctl enable mongod

继续下载安装shell:

wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-shell-4.2.5-1.el7.x86_64.rpm
rpm -Uvh mongodb-org-shell-4.2.5-1.el7.x86_64.rpm --nodeps --force

配置参考这篇阿里云Linux CentOS安装MongoDB

安装Redis

这个比较简单,在联网机下载,传到离线机即可。

wget http://download.redis.io/releases/redis-5.0.5.tar.gz
scp redis-5.0.5.tar.gz root@lixianji:~/tmp

配置参考阿里云Linux CentOS安装Redis

安装Nginx

先在联网机下载:

wget http://nginx.org/download/nginx-1.16.1.tar.gz
scp nginx-1.16.1.tar.gz root@lixianji:/usr/local

然后去离线机安装:

cd /usr/local
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure
make && make install
# 安装完成,查看版本
cd ..
./nginx/sbin/nginx -v
nginx version: nginx/1.16.1

参考

centos离线安装python3/pip3和项目所需模块

相关文章

网友评论

      本文标题:联网机给离线机安装Python/MySQL及其它

      本文链接:https://www.haomeiwen.com/subject/jvrjvhtx.html