最近总当机,IT帮网站用了1天时间成功搬家
最近一两周,IT帮的会员、BA学员和AM学员时不时反馈网站打不开、敏捷个人APP登录不了,有时候又可以但是很慢,还有的时候电信能访问而联通网络访问不了。
这个体验可不好,于是前天想把站点和APP后台都挪一下窝,于是在腾讯买了个云主机,开始网站搬迁。
在过程中学习,以下是这次搬迁中的技术问题和解决记录,说不定对一些人有帮助,也可以给自己做个备份,以便之后再次搬迁时查看。
购买云主机,安装系统
在腾讯云选了配置,付钱就OK了。因为我没学过Linux啊,以前都是在window上干活,工作中服务器端我也不需要自己去做,我提出需求即可。所以云主机购买时我选择的是window系统,因为总觉得这样搬移我的工作量就可以少。
不过我不喜欢重复,所以想换成CentOS系统。从window切换到centos系统会更改系统盘大小之类的,要下工单由后台重新分配主机。没过多久给我重新分配安装了CentOS 6。通过腾讯云控制台登录,感觉网页操作有点慢,于是想着远程命令行操作。我的是Mac机,于是百度了“Mac CentOS 远程操作”,知道通过终端SSH就能访问,于是通过SSH进行了远程操作。
因为没学过linux,不熟悉命令行啊,于是想弄个图形桌面是不是更容易上手呢。于是网上查了一些如何安装图形界面。操作了几次,死机几次,重装了几次。后来想干脆从CentOS6重装到CentOS7.2,虽然网上有人说CentOS7可能会对熟悉的人有些不方便。不过我反正都不会,于是选择装最新版,所以自己重新安装了CentOS7系统。
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @…Host key verification failed.
这个问题搞定之后,通过SSH操作。因为我对linux的生疏,还是不习惯命令行,所以还是想要一个图形界面来远程操作,于是网上找如何安装系统桌面,又查找VNC怎么安装。按照不同文章所示进行操作,死机了几次,重装了几次。最后终于安装好了,不过最后发现基本也没有用到,因为我觉得得练习一下命令行操作,而且大部分教程也都是命令行的。
安装PHP环境
因为IT帮网站、敏捷个人APP后台都是基于PHP开发的,所以在搞定系统之后就开始时安装环境了。当然为了简单性,你也可以直接从服务市场获得做好的PHP环境镜像。不过我第一次弄这个,还是留给我自己吧。
上网搜索“CentoOS7 PHP环境”,出来很多相关文章,这个过程还是又折腾了一些时间。以下是正确操作的这一次的步骤:
卸载mariadb
CentOS7默认不用MySQL,而是mariadb了,虽说mariadb可以向后兼容MySQL,不过我还是想用MySQL,所以我先要卸载mariadb。
先列出所有被安装的rpm package
# rpm -qa | grep mariadb
mariadb-libs-5.5.50-1.el7_2.x86_64
mariadb-5.5.50-1.el7_2.x86_64
mariadb-server-5.5.50-1.el7_2.x86_64
不同版本返回结果可能不一样,按照返回版本号卸载上面返回的内容
# rpm -e mariadb-libs-5.5.50-1.el7_2.x86_64
安装MySQL
CentOS 7的yum源中貌似没有正常安装mysql时的mysql-sever文件,需要去官网上下载
# wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
# rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
# yum install -y mysql-community-server
|
成功安装之后重启mysql服务
# service mysqld restart
|
为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log。
只有启动过一次mysql才可以查看临时密码
grep 'temporary password' /var/log/mysqld.log(如果之前安装过MySQL则这里可能会有多个密码,用最后一个,注意这个密码输入时是可以粘贴的)
这里的密码是YdsGaxOq>2n!
登陆并修改密码
使用默认的密码登陆
mysql -uroot -p(这是一个MySQL的以密码登录root用户的命令)
可以通过以下命令去设置密码:
# mysql -uroot
mysql> set password for 'root'@'localhost' = password('mypasswd');
mysql> exit
|
如何在CentOS中添加Swap
MySQL启动以下后发现自动关闭,查找日志发现:cannot allocate the memory for the buffer pool。通过 free -ml 看到swap是0,于是要添加swap文件。
1、使用dd命令创建一个swap交换文件
dd if=/dev/zero of=/home/swap bs=1024 count=1024000
这样就建立一个/home/swap的分区文件,大小为1G。
2、制作为swap格式文件:
mkswap /home/swap
3、再用swapon命令把这个文件分区挂载swap分区
/sbin/swapon /home/swap
我们用free -m命令看一下,发现已经有交换分区了。
但是重启系统后,swap分区又变成0了。
4、为防止重启后swap分区变成0,要修改/etc/fstab文件
vi /etc/fstab
在文件末尾(最后一行)加上
/home/swap swap swap default 0 0
这样就算重启系统,swap分区还是有值。
删除swap交换文件
1、先停止swap分区
/sbin/swapoff /home/swap
2、删除swap分区文件
rm -rf /home/swap
3、删除自动挂载配置命令
vi /etc/fstab
这行删除
/home/swap swap swap default 0 0
这样就能把手动增加的交换文件删除了。
注意:
1、增加删除swap的操作只能使用root用户来操作。
2、装系统时分配的swap分区貌似删除不了。
3、swap分区一般为内存的2倍,但最大不超过2G
安装Apache
yum install httpd #根据提示,输入Y安装即可成功安装
- systemctl start httpd.service #启动apache
- systemctl stop httpd.service #停止apache
- systemctl restart httpd.service #重启apache
- systemctl enable httpd.service #设置apache开机启动
在客户端浏览器中打开服务器IP地址,会出现下面的界面,说明apache安装成功
安装PHP
#Centos 5.X:
rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm
#CentOs 6.x:
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
#CentOs 7.X:
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
4.安装新的版本
yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-fpm php71w-gd php71w-mbstring php71w-mysqlnd php71w-opcache php71w-pdo php71w-xml php71w-ldap php71w-mcrypt
根据提示输入Y直到安装完成。
apache默认的程序目录是/var/www/html
复制网站文件
环境搭建好了,就要拷贝文件了。这次要从原有网站把完整目录拷贝到云主机,不过我怎么拷贝呢。想到最简单的办法就是通过FTP上传文件了。于是百度如何开启FTP服务。
yum install -y vsftpd
vsftpd默认设置为禁止root账户登录,开启的方式如下:
1.编辑/etc/vsftpd/user_list和/etc/vsftpd/ftpusers两个设置文件脚本,将root账户前加上#号变为注释。(即让root账户从禁止登录的用户列表中排除)
2.重新开启vsftpd service vsftpd reload
允许root账户访问ftp,可以远程访问centos系统中的任一文件,对于远程维护centos系统或下载文件十分方便。但从安全角度考虑,最好为临时性开启,平常还是把它关掉吧。
FTP配置文件地址:/etc/vsftpd/vsftpd.conf
Mac下之前我用的是ForkLift访问FTP,这次我用它访问原有和现在的主机,并开始拖动上传文件。一切正常,但是访问网站发现网页不显示图片,原来是图片是中文名,而ForkLift对中文名显示乱码。
于是开始找有没有其他FTP工具,找了一个Transmit,发现还是乱码,又搜索如何解决乱码问题,发现在Transmit中的View菜单选择文本编码为GB 2312,接着拷贝正常,网页显示正常。
- 启动Vsftpd服务:service vsftpd start
- 设置vsftpd开机启动, systemctl enable vsftpd
- 重新启动Vsftpd服务的命令为:service vsftpd restart
- 在开机时禁用服务: systemctl disable vsftpd
备份恢复数据库
文件拷贝完了,就这就是恢复数据库了。原本想着把备份好的SQL文件上传到服务器,然后再去执行。想着现在对安全性也要求不高,简单一些,使用Navicat远程访问服务器执行SQL文件进行数据库恢复。
这步一切正常。
授权远程访问:
开放防火墙端口:
重启防火墙:
取消授权远程访问操作如下:
1.use mysql;
2.revoke all privileges on *.* from 'root'@'%';
3.flush privileges;
SSH登录
重装系统后,再次用SSH登录出错。
The fingerprint for the RSA key sent by the remote host is
SHA256:ATOehkETYPhbLwhr3cjPKKAOS2Gzjyjr0Tnj8bjRKVs.
Please contact your system administrator.
Add correct host key in /Users/zhoujingen/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/zhoujingen/.ssh/known_hosts:1
RSA host key for 118.89.233.120 has changed and you have requested strict checking.
Host key verification failed.
解决办法:ssh-keygen -R "你的远程服务器ip地址"
让wordpress正常
文件和数据库好了并不就意味着结束了,后面还有很多问题需要解决。例如这个:
Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50550 Library:50635 in /var/www/html/blog/wp-includes/wp-db.php on line 1142
解决办法是:
- yum remove php-mysql
- yum install php-mysqlnd
Fatal error: Call to undefined function mb_convert_encoding() in /var/www/html/blog/wp-includes/class-wp.php on line 146
解决办法是:
- 首先安装 php-mbstring库文件:yum install php-mbstring
- 之后,修改/etc/php.ini文件,在里面加一句: extension=mbstring.so
因为这时候域名还没有重新解析,所以wordpress在切换域名时文章链接会链接到以前的域名,而不是现在的IP,所以又遇到如何更改网站域名的问题。后来找到了几个办法,采用了在wp_option表去更改网站地址。中间好像还遇到了一些问题,没有一一记录,现在也懒得去回忆了。
让codeigniter正常
敏捷个人APP是使用codeigniter框架开发的,本以为这个比较简单,拷贝文件即可。但是因为window和Linux操作系统的差别,以前的代码运行不了,而我又没安装调试环境,所以遇到问题也不知道什么原因。
于是用了各种办法,打开codeigniter的DB Debug模式,然后尝试简单更改源码再运行的方式去发现问题,终于最后都解决了。
其中有这么几个问题:
require_once找不到文件,这个主要是我在window下使用的是 require_once( ‘..\application\libraries\class-phpass.php’); 正常,但是Linux文件系统和window不一样,这样的代码在CentOS则是错误的,
解决办法是:
- centos下需要 require_once(dirname(__FILE__).’/’.”../libraries/class-phpass.php”);
还有一个问题是 Unable to locate the model you have specified:*_model 的问题,这还是windows和linux对文件名的处理不一致导致,windows下文件名是不区分大小写的,但是Linux是严格区分大小写的。
解决办法是:
- 修改所有的model,文件名全部小写
- class model_name , model_name 只有第一个字母是大写,其余一律小写
域名重新绑定
搬家后自己再简单测试了一下,发现OK了,于是开始域名绑定。域名绑定网上找了找,相对简单,我到域名解析的管理页面,绑定了www.zhoujingen.cn和zhoujingen.cn到云主机的IP地址,等待一个小时左右就重新绑定成功了。
折腾1天终于搞定了新主机
虽然问题一个接一个,不过有网络,这些也不是什么大问题,终于在1天后主机搞定了。IT帮网站、敏捷个人网站、敏捷个人APP均已成功搬家,大家仍旧按以前方式访问,所有改变都只是在后台而已。
以此记录一下这个过程,以便后期再次搬家时参考,也对那些PHP环境从window搬迁到Linux的人有帮助。
最近总当机,IT帮网站用了1天时间成功搬家的更多相关文章
- [置顶]
pycurl检测网站性能,pycurl.*_TIME时间问题
今天使用python+pycurl来检测网站性能,使用curl_obj.getinfo(pycurl.*_TIME)来获取各个阶段运行时间 total_time = curl_obj.getinfo( ...
- 在IT网站上少花些时间
我自己关注的IT网站还是蛮多的,经常去的有CSDN,博客园,51CTO,InfoQ,还有微博,微信上关注了IT程序猿,IT技术博客大学习,程序员之家, 开发者头条,还有还有,我还通过邮件订阅了码家周刊 ...
- 网站建设中用JS判断时间并显示不同内容
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 网站页面优化必然趋势—WebP 图片!
本文梗概:众所周知,浏览器可以通过 HTTP 请求的 Accpet 属性 来指定接收的内容类型.依靠这个技术,可以在不修改任何 HTML/CSS 或者图片的情况下,向浏览器提供优化的图片,从而降低带宽 ...
- 网站性能优化— WebP 全方位介绍
谈到优化网站性能时,主要目标之一就是减少要发送到浏览器的数据量(即 payload).而当前,图片通常是页面构成中最耗费流量的部分,因此降低图片的大小是一个最为有效的优化网页前端性能的办法. 有很多工 ...
- 提升网站用户体验—WebP 图片的高效使用
一.WebP 的由来 现代图像压缩技术对我们的生活方式影响很大.数码相机能将上千张高质量图片存储到一张内存卡里.智能手机可以与邻近设备快速分享高分辨率的图片.网站与手机等移动设备能快速展示各种富媒体. ...
- (转) 将VB.NET网站转换成C#的全过程
在学习URL重写过程中碰到个是VB写的源码,看起来总是不爽的就GOOLE了下 感觉这个文章写的不错 原文地址 http://www.cnblogs.com/cngunner/archive/2006/ ...
- 由 12306.cn 谈谈高并发+高负载网站性能技术
12306.cn 网站挂了,被全国人民骂了.我这两天也在思考这个事,我想以这个事来粗略地和大家讨论一下网站性能的问题.因为仓促,而且完全基于本人有限的经验和了解, 所以,如果有什么问题还请大家一起讨论 ...
- SharePoint 2013 图文开发系列之网站栏
网站栏的本质,就是一个xml的描述文件,所以创建过程,基本就是通过Feature部署一个Xml文件,然后修改Xml文件的网站栏描述. 1.添加新项目,选择SharePoint 2013 空项目,如下图 ...
随机推荐
- 配置 php-fpm 监听的socket
一般现在我们配置的PHP的web环境,如LNMP(linux+Nginx+Mysql+PHP), 这里linux可能是centos, ubuntu..., 数据库可能是mysql, postgresq ...
- 【BZOJ3524/2223】[Poi2014]Couriers 主席树
[BZOJ3524][Poi2014]Couriers Description 给一个长度为n的序列a.1≤a[i]≤n.m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大 ...
- 深度学习框架Caffe的编译安装
深度学习框架caffe特点,富有表达性.快速.模块化.下面介绍caffe如何在Ubuntu上编译安装. 1. 前提条件 安装依赖的软件包: CUDA 用来使用GPU模式计算. 建议使用 7.0 以上最 ...
- CentOS 5.8 x64 源码安装 samba-3.6.9
环境 CentOS 5.8 X64 wget http://www.samba.org/samba/ftp/stable/samba-3.6.9.tar.gz tar zxvf samb ...
- java类集: collection, list , set, map
都在java.util包里.容器:装各种对象. Collections类 : 集合工具类, 提供了一些静态方法, 方法里的参数是List等. Colection接口,子接口主要有: Set: 内容 ...
- JQuery实现超链接鼠标提示效果
一.第一种方法用Jquery<p><a href="http://www.nowamagic.net/" class="tooltip" ti ...
- C socket post数据到url
#define HOST_SERVER_IP "192.168.1.15" #define HOST_PORT 80 int gsh_post_clients(const char ...
- css 弹出框
最近想弄一个类似登陆框的那种弹出框,其实网上已经有很多例子,而且也有相应的插件,例如:jquery-ui的,可直接使用,而我就简单的弄了个简易版的登陆框,真的很简易. 其实原理就是设置两个div,一个 ...
- 使用LIBUSB实现和自定义通讯设备通讯--MFC代码在末尾
LIBUSB是一款简单好用的USB通讯开发库,一般HID设备用该库通讯能大大降低开发周期,使用如下,首先需要为设备安装驱动 在libusb的bin目录下有一个inf_wirzed.exe的文件,该文件 ...
- POJ 2609 Ferry Loading
双塔DP+输出路径. 由于内存限制,DP只能开滚动数组来记录. 我的写法比较渣,但是POJ能AC,但是ZOJ依旧MLE,更加奇怪的是Uva上无论怎么改都是WA,其他人POJ过的交到Uva也是WA. # ...