移植搭建阿里云linux服务器
来源:互联网 发布:windows 设备管理中心 编辑:程序博客网 时间:2024/05/22 03:11
流程:linux购买—–>环境配置——>服务器代码移植——>服务器代码调试——>服务器应用安全稳定优化—–>服务器部署—–>连接测试
一、购买
1、必须有个实名认证的账号,区别企业账号还是个人账号。绑定服务器之后,账号类型不可更改。
2、登录阿里云进行配置选择,根据业务需求选型。如开通网路带宽,默认分配公网静态IP和局域网IP。
3、付款之后,相应账号会发送相关电脑信息过来,包括(IP地址,实例号,还有控制平台连接的密码)。
4、进入服务器之后里面就是一个原始的linux系统,基本上所有的应用软件需要自己安装,除去python。
二、环境配置
1、进入之后,创建用户Ryze自己随便起就好,输入 密码和账号后,使用新建的用户进行访问,使用客户端xshell(者别的)进行ssh连接。
2、进行显示配置和python版本下载,如果python使用的版本不支持我们的应用的话,我们要进行另外安装一个版本的python,目前使用python3.3m,调用LBS应用数据会用到。
3、用户命令行显示配置,这个要用到/home/Ryze/目录下,找到隐藏的.bashrc配置文件,打开进行配置快捷方式。
4、文件里面会标有alias快捷键和PS1=’[[\e[32m]#\t#[\e[31m]\u@[\e[36m]\h \w]$[\e[m]’,这个是进行命令行颜色设置的。
5、进行第三方软件库的搭建/数据库/ICE接口/libevent/log4cplus/google/OTL,这些配置中有一部分也是在/home/Ryze/目录下,里面的隐藏 文件叫.bash_profile这个是环境变量的配置详见服务器配置文件。例如:
6、这个.bash_profile运行的前提是/etc/bash_profile文件已经起作用。ICE和ORACLE的环境变量是在/etc/bash_profile里面实现定义和export的。
7、配置文件配置完成之后,要把相应的文件目录拷贝过来,尽量的路径不要变,因为makefile进行编译时候路径如果是绝对路径的话,就会报错,找不到目录文件。
三、代码移植调试
1、按照编译链的规则修改,尽量保持目录名字和路径一样,进行使用环境变量进行指定路径,否则后期移植会很麻烦。
2、把移植过来的源码文件进行顺序编译:
common—>protocol—>session—>balance—>task—>upload—>sending—>timing
3、编译第一个common源码,可能使用makefile会报很多错误,先进行单个.cpp文件进行编译,通过报出的错误看看是什么信息。在进行静态或者是动态库的添加。
4、编译过程中需要的头文件和库文件
.h文件:
/user/local/include/python3.3m
/user/local/include/log4cplus
/user/local/include/google
/opt/oracle
/opt/Ice-3.5.0
/HOME/include/common
以上的文件一定要把全部拷贝到新的服务器上面。
.so和.a文件:(这些文件是编译链接的时候用的,不可缺少)
/user/local/lib
/$HOME/common/lib
说明:我们的应用程序只是调用的python3.3m的库,在linux中的一些开发环境和依赖都是python2.6.6。 两者千万别更新,否则应用调用失败。
5、以上文件准备好之后,编译还是会有问题,这时候要进行强调内容新的ln软连接建立,因为这个库进行连接的时候会调用动态链接库,可能实际
的库在变 化,但是链接库不会变化。
6、文件全部编译成功之后,代码没有报错,但是运行时候直接挂掉,因为运行配置还有很多没有配置,不符合当前的运行环境导致出错,我们一个个进行排查
balance进程:运行报出连接数据库出错。
@1:抛出错误信息是:ORA-21561,经过查找是因为linux的hostname与/etc/sysconfig/network下的对应的127.0.0.1对应的名字不一样导致。
阿里云购买的时候给出的是服务器串号:****************很长的名字
然而配置文件中是:localhost,就会导致对应连接的时候,oracle验证失败,这时候要对服务器串号进行修改成localhost即可。之后运行DB连接成功。
在linux命令行下进行输入:hostname 会显示的阿里云分配的一串号码.这个与/etc/sysconfig/network不同,就会导致ORACLE验证失败。这时候修改这个里面的文件名字与/etc/hosts里面的127.0.0.1对应的localhost一样即可。配置完成要重启才生效或者重启网卡。这时候连接数据库正常。
远程redis出错,这个应该是iptables端口和IP过滤的原因,之前因为是本地连接redis不需要进行外网开放。现在阿里云服务端要进行连接远程redis,所以要在Iptables中进行端口源IP添加信任。现在启用本地redis服务,再次连接成功。
task服务程序运行失败:
iptables中并没有限制,后来才发现是阿里的服务层面做了端口限制。因为在购买的时候,上面有个默认的端口开放配置,只开放了ICMP和22/2389端口其他的端口没有开放。是因为购买的是香港服务器,宽带都是专网,没有经典网络选择。实际的公网IP不针对你这台服务器,应该是nat映射过来的信息。所以说阿里在控制台增加了端口配置,你开放哪个端口,他就会把相应的端口的映射到你的内网linux机子上(这是我的理解)。
登录阿里的控制台,添加了安全策略和规则,开放了相应的的端口,再次进行连接成功。
sending进程:
出现ICE组件异常,ICE 异常Address family not supported by protocol family
这个是因为有的系统导致ICE的组件异常,或者是底层的network代码导致用法不同导致,例如绑定的时候
srv = “default -p 25555”,原先代码是没有问题的,但是移植到阿里云上的服务器就出现了问题,应该是NetWork.cpp不同导致的。
这里是与linux系统有关系的。
这时候修改成 srv = “default -h 127.0.0.1 -p 25555”,运行时候就正常了。但是这种绑定本机回环地址的做法,外网是不可访问的,这时候
我们就必须填写一个公网IP,于是填写阿里云的外网IP。
但是提示另一个错误:
要解决这个问题就需要绑定内网的IP地址才可以(阿里云香港专网:提供内网和公网IP)。
这个公网IP不能绑定和支持,因为我们是阿里云香港的服务器,这里IP是进行虚拟nat出来的,所以外网需要映射到内网地址上才可以。
这时候因为阿里云提供云控制端,所以开放端口和安全策略的时候,会自动映射到对应的内网IP上去(意思应该就是这样)。
所以我们在控制台开放端口25555即可。(同上一个产不多)
ICE组件我觉得异常是因为系统中底层NetWork.cpp中的函数用法不一样所导致。要把地址写全 就可以了。
redis-srv redis_sending.conf&
这个redis服务程序要在后台运行才可以,因为这个程序会卡住前台运行进程,导致终端停掉。
(以上的信息仅供参考,虽然上层应用不同,但是底层与系统打交道的我觉得还是有比较相似的地方,只说明异常,不论其他)
四、服务器代码调测略过
五、服务器代码部署
1、启动添加运行应用程序
/etc/rc.d/rc.local
linux启动进程会启动rc.1 rc.2 rc.3 …..rc.local,最后的rc.local中是我们应用层启动的代码应该写的地方。
vi rc.local打开文件需要root用户,否则无法打开文件,
里面添加shell语句
runuser -l Ryze/home/coglink/release/script/run_all.sh
runuser -l Ryze /home/coglink/release/script/redis_monitor.sh
2、crontab日常进程监护运行
下载crontab日常进程监控软件,安装之后启用服务。
使用crontab -l进行查看,会提示:
no crontab for 用户名字
这个是因为,你没有把crontab日常任务进行编写,导致显示你用户没有任务日程,你只要使用
crontab -e进行编辑之后保存既可以。
10 4 * * * /HOME/release/script/run_all_upload.sh
10 9 * * * /HOME/release/script/run_all_upload.sh
5,10,15,20,25,30,35,40,45,50,55 * * * * $HOME/release/script/redis_monitor.sh
分 时 日 月 星期(0 代表周日)+ 运行脚本
相同时间属性的要以,号隔开,最后一个不需要逗号。
其他没填写的用*代表,默认每个对应的时间属性都执行。
注:以上仅供参考。
- 移植搭建阿里云linux服务器
- linux搭建阿里云服务器
- 阿里云 linux搭建git服务器
- 阿里云服务器搭建(linux系统)
- 阿里云服务器搭建
- 阿里云服务器搭建
- 阿里云服务器搭建
- 阿里云服务器搭建
- 阿里linux服务器搭建流程
- Linux服务器搭建(以阿里云服务器为例)
- 阿里云ecs服务器Linux的centos搭建服务器记录
- 阿里云Linux主机搭建VPN服务器(Linux+ShadowSocks)
- 阿里云服务器Linux搭建FTP和Mysql
- 阿里云Linux-CentOS系统下-搭建Git服务器
- 阿里云服务器Linux系统CentOS搭建安装svn指南
- Linux+ ubuntu + 阿里云 + apache WebServer WEB服务器搭建
- 阿里云搭建SVN服务器
- 阿里云搭建SVN服务器
- mui 总页面
- python学习群发邮件
- HashMap的实现原理-博客总结
- mui 地址管理
- 架构设计:负载均衡层设计方案(2)——Nginx安装
- 移植搭建阿里云linux服务器
- aop小结
- mui 低用全
- 工资多少不在于用什么语言,在于你用它做什么事。 web 工程师赚的是对 Web 这块的了解,机器学习工程师赚的是对机器学习的了解。
- Java:按值传递还是按引用传递详细解说
- [Unity]Ray射线物理检测碰撞和LayerMask的使用
- mui 订单管理
- # 美团点评CodeM编程大赛-题五
- Spring Data MongoDB 五:进阶文档查询(分页、Morphia)(二)