开发者社区> 小柒2012> 正文

记一次8小时惊心动魄的服务器+网站升级

简介: 2017年3月26日,此时此刻,我对服务器+网站进行了升级,也不知道自己脑袋那根弦短路了,大好的周末居然玩起了升级。 因为long long ago之前用的某宝的镜像环境,某段时间由于某种原因下架了。
+关注继续查看

写在前面,这篇文章服务器升级后然并没有找到论坛Discuz和博客Typecho异常所在,捯饬了半天最终选择升级和重装,成功解决。有些时候感觉真的没必要追究问题所在,毕竟是开源程序,可能语言又不是自己熟悉的,也可能硬件或者环境的问题,能升级或者重装就分分钟解决的问题,何乐而不为呢?

2017年3月26日,此时此刻,我对服务器+网站进行了升级,也不知道自己脑袋那根弦短路了,大好的周末居然玩起了升级。

因为long long ago之前用的某宝的镜像环境,某段时间由于某种原因下架了。今天看了下,居然收费了,有木有,居然收费了,在那么多免费镜像环境中,某宝真是一朵奇葩。

由于,网站数据使用的是挂载数据盘,所以省去了网站备份的工作,可以直接重装系统盘(当时买数据盘是个多么明智的决策),当然基础的Nginx配置文件还是要备份的。

数据库使用的阿里云的RDS,同样不需要备份(自动备份机制),相比以前安装在应用服务器,那将是一个多么悲催的故事。

服务器升级

centos 6.5 升级至 centos 6.8,由于网站程序采用PHP开发,这里只需要安装Nginx+PHP,大体看了下镜像环境和面板都不合心意,于是决定自己安装一遍,也就有了后来的惊心动魄。

安装 Nginx

安装Nginx之前,首先要安装好编译环境gcc和g++,安装Nginx需要PRCE库、zlib库和ssl的支持,除了ssl外其他的我们都是去官网下载(这里没选择YUM安装):

Nginx:http://nginx.org/

PCRE:http://www.pcre.org/

zlib:http://www.zlib.net/

服务器直接下载

wget https://ftp.pcre.org/pub/pcre/pcre2-10.23.tar.gz

wget http://www.zlib.net/zlib-1.2.11.tar.gz

wget http://nginx.org/download/nginx-1.10.3.tar.gz

安装openssl:

yum -y install openssl openssl-devel

安装pcre支持rewrite库,解压pcre,不需要安装:

tar -xvzf pcre2-10.23.tar.gz

安装方式二:也可以使用YUM安装

yum install pcre-devel pcre -y

然后解压zlib,同样不需要安装

tar -xvzf zlib-1.2.11.tar.gz

解压nginx:

tar -xvzf nginx-1.10.3.tar.gz

切换到 cd nginx-1.10.3 进入目录开始安装nginx:

./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/home/tools/pcre2-10.23 --with-zlib=/home/tools/zlib-1.2.11

注意 /home/tools/pcre2-10.23 和/home/tools/zlib-1.2.11 是刚刚释放的pcre和zlib的源码目录,编译时nginx会编译到一起
安装位置就是--prefix指定的/usr/local/nginx
配置文件位置:/usr/local/nginx/nginx.conf

编译:

make

安装:

make install

执行软连接命令:

ln -s /usr/local/nginx/nginx  /usr/sbin

Nginx相关命令:

检查nginx.conf配置文件的正确性: nginx -t
检查版本: nginx -V
启动: nginx
重启: nginx -s reload

安装PHP

PHP http://php.net/downloads.php

wget http://php.net/get/php-5.6.30.tar.gz/from/a/mirror

安装libxml2和libxml2-devel

yum -y install libxml2
yum -y install libxml2-devel

因为不同的操作系统环境,系统安装开发环境包的完整程度也不相同,所以建议安装操作系统的时候做必要选择,也可以统一执行一遍所有的命令,将没有安装的组件安装好,如果已经安装了可能会进行升级,版本完全一致则不会进行任何操作,命令除上面2个之外,汇总如下:

yum -y install libxml2
yum -y install libxml2-devel
yum -y install openssl
yum -y install openssl-devel
yum -y install curl
yum -y install curl-devel
yum -y install libjpeg
yum -y install libjpeg-devel
yum -y install libpng
yum -y install libpng-devel
yum -y install freetype
yum -y install freetype-devel
yum -y install pcre
yum -y install pcre-devel
yum -y install libxslt
yum -y install libxslt-devel
yum -y install bzip2
yum -y install bzip2-devel
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel  mysql pcre-devel

安装完成之后,执行配置:

./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip

然后执行编译:

make

编译时间可能会有点长,编译完成之后,执行安装:

make install

php的默认安装位置上面已经指定为/usr/local/php,接下来配置相应的文件:

cp php.ini-development /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp sapi/fpm/php-fpm /usr/local/bin

然后设置php.ini,使用: vi /usr/local/php/lib/php.ini 打开php配置文件找到cgi.fix_pathinfo配置项,这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0

创建web用户:

groupadd www-data
useradd -g www-data www-data

修改php-fpm.conf添加以上创建的用户和组,这时候使用 vi /usr/local/etc/php-fpm.conf 打开文件后找到官方所提示的位置:

user  = www-data
group = www-data

执行以下命令启动php-fpm服务:

php-fpm

启动完毕之后,php-fpm服务默认使用9000端口,使用 netstat -tln | grep 9000 可以查看端口使用情况。
你也可以使用 ps -ef|grep php 命令查看进程。

停止 php-fpm

killall php-fpm

网站升级

环境搭建成功以后,重新挂载数据盘,配置网站目录,并整理网站Nginx的配置文件(主要路径的修改)。

配置完成后,重启Nginx,论坛首页访问正常,然后后台登陆后一片空白,无论密码输入正确还是错误,都是空空如也。

菊花一紧赶紧看了一下typecho博客访问是否正常,首页给我了个惊喜:

500 server error

论坛后台空白修复方案:

关于discuz论坛后台登陆后一片空白,网上乱起八糟的方法很多,不得而终。有说是缓存的问题,说清空下data目录下的cache文件;有说覆盖下source文件的,果然也是不可以的;还有一个比较扯淡的方法就是,修复数据库,修复完毕后,哔了狗了,后台进不去,前台样式直接乱了。幸好有RDS昨天数据库备份(虽然失去了一小部分数据),赶紧还原了一下下。

最终解决方法,因为网站程序是3.2,故升级了一下到3.3。

1)备份数据库
2)建立文件夹 old,旧程序除了 data , config, uc_client, uc_server 目录以外的程序移动进入 old目录中
3)上传 X3.3 程序(压缩包中 upload 目录中的文件), 如上传时候提示覆盖目录,请选择“是”
4)上传安装包 utility 目录中的 update.php 到论坛 install 目录,删除 install 目录中的index.php

执行 http://你的域名/论坛路径/install/update.php

参照提示进行升级即可。升级时间随着数据的大小和服务器性能而变。

升级完毕,进入后台,更新缓存,并测试功能。
升级成功后,old目录中的文件可以删除了。

可能出现的问题Can not write to cache files

解决方法:删除cache和cache下的文件 重新建立这个文件夹。

博客500错误解决方案:

博客 500 server error 后台也无法进入,捯饬的半天也没有解决方法。最终还是重新安装了一下,然后把模版,插件以及附件转移过来,就此搞定。

这里强调一下,重新安装就是重新走一遍流程,数据库还是使用以前的数据,安装过程中会提示你的。

经验教训

升级一定要备份要,升级一定要备份要,升级一定要备份要,重要的事情说三遍。

1)网站程序修改或者升级前一定要备份
2)升级或者修复网站之前一定要备份数据库
3)搬家以后如果怎么都调试不好一些莫名其妙的问题,直接重装或者升级就好了(可以解决99.9%的问题)
4)如果有条件一定不要把网站程序放到系统盘,最好挂载一个数据盘
5)如果有条件一定不要把数据库安装在应用服务器上,最好买个阿里云的RDS

小站,欢迎来访:http://blog.52itstyle.com

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 28 章 监控数据库活动
第 28 章 监控数据库活动 目录 28.1. 标准 Unix 工具 28.2. 统计收集器 28.2.1. 统计收集配置 28.2.2. 查看统计信息 28.2.3. 统计函数 28.3. 查看锁 28.4. 进度报告 28.4.1. VACUUM进度报告 28.5. 动态追踪 28.5.1. 动态追踪的编译 28.5.2. 内建探针 28.5.3. 使用探针 28.5.4. 定义新探针 一个数据库管理员常常会疑惑,“系统现在正在做什么?”这一章会讨论如何搞清楚这个问题。
1027 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23548 0
云服务器 免备案,阿里云轻量应用服务器香港新加坡地域是一个不错的选择
什么是阿里云轻量应用服务器? 轻量应用服务器是面向入门级云计算及简单应用用户,提供基于单台云服务器的域名管理、应用部署、安全和运维管理的一站式综合服务。用户可以选择精品应用镜像(比如wordpress),并可在控制台实现全方位的服务器、域名、防火墙、安全防控、监控等管理和操作。
4269 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
13306 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20389 0
+关注
小柒2012
一个程序员,欢迎骚扰!!!
153
文章
2328
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载