工作需要,需要给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文件,
复制链接,回到联网机进行下载:
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
目录,
运行
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
点击下载,复制下载链接,去联网机下载:
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
安装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
网友评论