2018春节迁移记录

本次迁移,将原阿里云虚拟主机中的内容迁移至阿里云ECS的指定空间内。
迁移中遇到了一些常规运维问题。

升级PHP。

原因:访问phpmyadmin时出现语法错误。
分析:通常语法错误是代码和运行时环境造成的,因为采用了最新phpmyadmin,并且下载的版本未修改,所以代码应该是没有问题的,仔细查阅发现新的phpmyadmin对PHP版本要求是5.5+,那么就需要修正PHP版本了。
解决方法:将PHP从5.3升级到了5.6(33)的最新版本,并保守地沿用了5.x的最新稳定版本(考虑到其他服务暂时来不及迁移到PHP7.x)。
最终效果:升级PHP后到5.6.33,phpmyadmin语法错误消失,可以正常访问。

PHP升级过程:
1. 终端命令 php -v 查看php版本
输出可能如下:
PHP 5.4.35 (cli) (built: Nov 14 2014 07:04:10) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies

  1. 执行下面的命令升级软件仓库
    rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

  2. 执行下面的命令删除php
    yum remove php-common

  3. 安装php 5.6版本,以及可能用到的组件
    yum install -y php56w php56w-opcache php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-mysql php56w-intl php56w-mbstring

  4. 重启httpd
    service httpd restart

此时php -v查看最新版本,升级成功。

phpMyAdmin 登录出错 session_start() faild: Permission denied

原因:访问phpmyadmin报错,
分析:session是用于记录用户信息的,此时phpmyadmin需要写入信息,那么就需要权限。查了一遍相关的配置应该与session.save_path 有关。
解决方法:在php.ini 和 /etc/php-fpm.d/www.conf 中,查找 session.save_path 的配置,并为其分配一个可访问的路径。

升级MySQL

原因:安装WordPress首先必须配置数据库访问。默认指定访问到本地的mysql服务,然后发现CentoOS的MySQL服务的访问权限受限(并没有管理员权限),那么就利用skip-grant-tables越权进行密码重置。然而进展并不顺利,登录数据库系统时,总出现mysql.sock访问错误(WTF)。

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

分析:卡在小问题上,继续深入检查mysql,发现mysql初始化有问题,my.conf配置文件指定的mysql.sock并不存在。并且mysql的配置并不完整,反复重启也无法修正。看起来通过重新初始化mysql应该可以解决上面的问题。考虑到PHP已经升级,mysql当前也可以升级到更加稳定安全的版本。
解决方法:升级mysql,为WordPress配置数据库访问权限。
最终效果:mysql升级成功,mysql.sock及配置文件写入生效。

升级MySql的过程(使用安装yum源的方法):
1. 首先到官网 https://dev.mysql.com/downloads/mysql/ 找到对应的安装源下载包,安装这个软件包之后,就可以找到mysql对应的软件版本了,我找到的yum安装源软件包地址如下:
http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm

2.登录服务器,执行下载并安装
wget http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm
rpm -ivh mysql57-community-release-el6-8.noarch.rpm

  1. 查看可安装的mysql版本:
    [root@host-172-10-2-83 software]# yum repolist all|grep mysql
    mysql-connectors-community MySQL Connectors Community enabled: 21
    mysql-connectors-community-source MySQL Connectors Community – So disabled
    mysql-tools-community MySQL Tools Community enabled: 35
    mysql-tools-community-source MySQL Tools Community – Source disabled
    mysql-tools-preview MySQL Tools Preview disabled
    mysql-tools-preview-source MySQL Tools Preview – Source disabled
    mysql55-community MySQL 5.5 Community Server disabled
    mysql55-community-source MySQL 5.5 Community Server – So disabled
    mysql56-community MySQL 5.6 Community Server disabled
    mysql56-community-source MySQL 5.6 Community Server – So disabled
    mysql57-community MySQL 5.7 Community Server enabled: 82
    mysql57-community-source MySQL 5.7 Community Server – So disabled

  2. 使用yum-config-manager命令启用或者禁用相应mysql的版本:
    yum-config-manager –disable mysql57-community
    yum-config-manager –enable mysql57-community
    例如,上面的命令分别是禁用5.7版本,启用了5.7版本

  3. 直接使用yum install安装:
    yum install mysql-community-server -y

  4. 重启mysql服务
    service mysqld restart

获取MySQL 5.7 权限

原因:MySQL 5.7安装完成后会生成一个临时密码,如果忘了记录,也可以重置。如果要分配新的MySQL权限,必须重置密码。

具体方法:
1. 修改配置文件
vi /etc/my.cnf
在文档中[mysqld]后面内容加一句 skip-grant-tables
例如:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-grant-tables

保存并且退出vi。

  1. 重新启动mysqld
    /etc/init.d/mysqld restart
    Stopping MySQL: [ OK ]
    Starting MySQL: [ OK ]

  2. 此时可以忽略MySQL的root登录密码
    mysql -u root -p -S /var/lib/mysql/mysql.sock
    (注意,指定sock访问,对重置密码有很大帮助。)
    按回车直接登录mysql

  3. 修改密码
    mysql> use mysql;
    mysql> update user set authentication_string=password(‘自定义新密码’) where user=’root’;
    mysql> flush privileges;
    mysql> quit

  4. 将MySQL的登录设置修改回来
    vi /etc/my.cnf
    将刚才在[mysqld]的段中加上的skip-grant-tables删除
    保存并且退出vi。

  5. 重新启动mysqld
    /etc/init.d/mysqld restart
    Stopping MySQL: [ OK ]
    Starting MySQL: [ OK ]

为WordPress插件目录配置修改权限

原因:新安装的WordPress,使用插件时频频报“安装失败”的错误。
分析:根据经验,判断是文件目录访问权限的问题。但查看了WordPress安装的目录,权限已符合要求。查了一下该问题属于“WordPress主题及插件需要输入FTP 无法定位WordPress内容目录(wp-content)问题”
解决方法:在wp-config.php 代码中添加以下配置.
define(“FS_METHOD”,”direct”);
define(“FS_CHMOD_DIR”, 0777);
define(“FS_CHMOD_FILE”, 0777);

参考

CentoOS 6.5 升级PHP5.6
CentoOS 6.5 升级MySQL5.7
解决MySQL ERROR 2002 错误
MySQL root越权
重置MySQL 5.7 密码
WordPress wp-content访问权限问题
WordPress 最新版本官方要求

发表评论

电子邮件地址不会被公开。 必填项已用*标注