4、一粒云二次封装与迁移 – 多系统安装测试
写好安装程序后,就可以进行多系统的安装测试了。准备了OpenEuler,AnolisOS,Debian10这3个发行版进行测试。
将package.tar.gz包与安装程序放在同一个路径下。
root@yliyun:/opt/yliyun# ls index node_modules package-lock.json ''$'\260\262''װ'$'\312''ֲ'$'\341''.html' index.js package package.tar.gz ''$'\260\262''װ'$'\312''ֲ'$'\341''.md' install.log package.json script
执行
node index.js
1、OpenEuler
_ ___ __ ___ _ _ _ _ _| (_) \ / / _ _ __ |_ _|_ __ ___| |_ __ _| | | | | | | | |\ V / | | | '_ \ | || '_ \/ __| __/ _` | | | | |_| | | | | || |_| | | | | | || | | \__ \ || (_| | | | \__, |_|_| |_| \__,_|_| |_| |___|_| |_|___/\__\__,_|_|_| |___/ Server IP: 192.168.0.22 Server core number: 2 Installation path: /opt/yliyun Data packet: /opt/yliyun/package.tar.gz Packet verification: dd8035ffaa09834becc6c1b1b5c92e24 ✔ Data verification completed!!! gcc [OK] g++ [NO]
首次安装提示缺失g++
yum install g++ make cmake autoconf tcl libaio tar -y
使用yum安装缺失的包。
_ ___ __ ___ _ _ _ _ _| (_) \ / / _ _ __ |_ _|_ __ ___| |_ __ _| | | | | | | | |\ V / | | | '_ \ | || '_ \/ __| __/ _` | | | | |_| | | | | || |_| | | | | | || | | \__ \ || (_| | | | \__, |_|_| |_| \__,_|_| |_| |___|_| |_|___/\__\__,_|_|_| |___/ Server IP: 192.168.0.22 Server core number: 2 Installation path: /home/yliyun Data packet: /home/yliyun/package.tar.gz Packet verification: dd8035ffaa09834becc6c1b1b5c92e24 ✔ Data verification completed!!! gcc [OK] g++ [OK] make [OK] cmake [OK] autoconf [OK] libaio.so.1 [OK] libnuma.so.1 [OK] libncurses.so.5 [NO]
libncurses.so.5没有通过。
在OpenEuler中没有找到libncurses.so.5只有libncurses.so.6
你可以从CentOS上拷贝一个libncurses.so.5,libtinfo.so.5到此系统的/usr/lib64目录下,或者将libncurses.so.6,libtinfo.so.6软连接为libncurses.so.5,libtinfo.so.5
注意: 这就是一个非常典型的动态链接库版本过低的问题,mysql5.6需要依赖ncurses5,这在CentOS7上是正常的,但到了基于CentOS8分支的系统,则不会在yum中携带这个ncurses5的包,而是换成了最新的ncurses6.3
ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5 ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
进行链接。
✔ Data verification completed!!! gcc [OK] g++ [OK] make [OK] cmake [OK] autoconf [OK] libaio.so.1 [OK] libnuma.so.1 [OK] libncurses.so.5 [OK] libtinfo.so.5 [OK] tar [OK] tcl [OK]
顺利通过。
..... Installation completed yliyun {start|stop} [root@openeuler yliyun]# yliyun start
出现yliyun {start|stop}则为安装完毕,使用yliyun start命令启动yliyun服务,yliyun stop来关闭yliyun服务。
2、AnolisOS
[root@localhost home]# ./yliyun _ ___ __ ___ _ _ _ _ _| (_) \ / / _ _ __ |_ _|_ __ ___| |_ __ _| | | | | | | | |\ V / | | | '_ \ | || '_ \/ __| __/ _` | | | | |_| | | | | || |_| | | | | | || | | \__ \ || (_| | | | \__, |_|_| |_| \__,_|_| |_| |___|_| |_|___/\__\__,_|_|_| |___/ Server IP: 192.168.0.21192.168.122.1 Server core number: 2 Installation path: /home Data packet: /home/package.tar.gz Packet verification: 9c1bb239b369c9075dd24b6459006972 ✔ Data verification completed!!! gcc [NO]
首次进行依赖检测,发现连gcc也没有安装完成
yum install gcc gcc-g++ make cmake autoconf libaio tar tcl -y
✔ Data verification completed!!! gcc [OK] g++ [OK] make [OK] cmake [OK] autoconf [OK] libaio.so.1 [OK] libnuma.so.1 [OK] libncurses.so.5 [OK] libtinfo.so.5 [OK] tar [OK] tcl [OK]
AnolisOS与OpenEuler区别不大,都是基于CentOS开发。也许一个是基于CentOS7一个是基于CentOS8所以没有遇到OpenEuler中libncurses.so.5的问题。
3、Debian10
_ ___ __ ___ _ _ _ _ _| (_) \ / / _ _ __ |_ _|_ __ ___| |_ __ _| | | | | | | | |\ V / | | | '_ \ | || '_ \/ __| __/ _` | | | | |_| | | | | || |_| | | | | | || | | \__ \ || (_| | | | \__, |_|_| |_| \__,_|_| |_| |___|_| |_|___/\__\__,_|_|_| |___/ Server IP: 192.168.0.23 Server core number: 2 Installation path: /home/yliyun Data packet: /home/yliyun/package.tar.gz Packet verification: 65f07f9eee608d87da2a2b4ce12cb811 ✔ Data verification completed!!! gcc [NO]
安装依赖
apt install gcc g++ autoconf cmake make tcl libaio1 libnuma1 libncurses5 -y
root@debian:/home/yliyun# ./index _ ___ __ ___ _ _ _ _ _| (_) \ / / _ _ __ |_ _|_ __ ___| |_ __ _| | | | | | | | |\ V / | | | '_ \ | || '_ \/ __| __/ _` | | | | |_| | | | | || |_| | | | | | || | | \__ \ || (_| | | | \__, |_|_| |_| \__,_|_| |_| |___|_| |_|___/\__\__,_|_|_| |___/ Server IP: 192.168.0.23 Server core number: 2 Installation path: /home/yliyun Data packet: /home/yliyun/package.tar.gz Packet verification: 65f07f9eee608d87da2a2b4ce12cb811 ✔ Data verification completed!!! gcc [OK] g++ [OK] make [OK] cmake [OK] autoconf [OK] libaio.so.1 [OK] libnuma.so.1 [OK] libncurses.so.5 [OK] libtinfo.so.5 [OK] tar [OK] tcl [OK] ✔ Decompressing package... ✔ Create a yliyun directory structure ✔ Installing work ✔ Installing zlib ✔ Installing libfastcommon ✔ Installing fastdfs ✔ Create FastDFS configuration ✔ Installing redis ✔ Installing Openresty ✔ Create openresty configuration ✔ Installing Nodejs ✔ Installing pm2 ✔ Installing common ✔ Installing plugins ✔ Installing mysql ✔ Mysql initialize ✔ Create startup file Installation completed yliyun {start|stop}
执行后直接一把过。
特别需要注意的就是,Debian10使用远程xterm连接时,环境变量可能会有问题。 请在./yliyun安装前,输入export PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin来临时设置变量
4、启动测试
root@debian:/home/yliyun# yliyun start Starting MySQL [ .k vm.overcommit_memory = 1 Starting Redis server... ngx_http_fastdfs_set pid=27898 [PM2] Applying action restartProcessId on app [app](ids: 0,3) [PM2] Applying action restartProcessId on app [socket](ids: 1) [PM2] [app](3) ✓ [PM2] [app](0) ✓ [PM2] Applying action restartProcessId on app [conv](ids: 2) [PM2] [socket](1) ✓ [PM2] Applying action restartProcessId on app [update](ids: 4) [PM2] [conv](2) ✓ [PM2] [update](4) ✓ ┌──────────┬────┬─────────┬───────┬────────┬─────────┬────────┬───────┬───────────┬──────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │ ├──────────┼────┼─────────┼───────┼────────┼─────────┼────────┼───────┼───────────┼──────┼──────────┤ │ app │ 0 │ cluster │ 27930 │ online │ 0 │ 0s │ 39.4% │ 35.7 MB │ root │ disabled │ │ app │ 3 │ cluster │ 27931 │ online │ 0 │ 0s │ 36.4% │ 35.5 MB │ root │ disabled │ │ conv │ 2 │ cluster │ 27948 │ online │ 0 │ 0s │ 0% │ 30.1 MB │ root │ disabled │ │ socket │ 1 │ cluster │ 27932 │ online │ 0 │ 0s │ 42.4% │ 35.3 MB │ root │ disabled │ │ update │ 4 │ cluster │ 27954 │ online │ 0 │ 0s │ 0% │ 28.9 MB │ root │ disabled │ └──────────┴────┴─────────┴───────┴────────┴─────────┴────────┴───────┴───────────┴──────┴──────────┘ Use `pm2 show <id|name>` to get more details about an app
启动成功后,找官方要新的授权,并覆盖原先的授权文件。
访问首页成功,说明nodejs和nginx都运行正常
后台查看服务状态,并测试上传下载和其它功能,没有问题就说明已安装成功。