最近要迁移老系统(非常非常非常老版本配置的web系统)到新的服务器上(Debian9),因为版本兼容问题好一阵折腾。写下这篇博客梳理一下学习探索的过程和成果,希望可以让面临相似问题的同学们少走点弯路。
只想看LAMP安装的请直接下滑到2、Debian9安装LAMP
做系统迁移之前一定要首先明确
1)老服务器的操作系统版本,要迁移的web系统在该OS上涉及到的所有环境、软件的版本(web系统的话主要就是看LAMP)
2)要迁往的新服务器的操作系统版本,该操作系统默认安装(apt-get)的LAMP都是什么版本。
3)在新操作系统默认安装的LAMP环境下老系统是否会出现兼容问题(PHP与thinkphp其它开源框架的兼容)。
接下来给出一组查看环境的linux命令
lsb_release –a
查看当前系统的发行版信息(prints certain LSB (Linux Standard Base) and Distribution information.)。有了这个命令就可以清楚的知道到底是RedHat的、Debian的、还是别的发行版,还有具体的版本号,比如3.4还是8.6等等。
这里给出博主新老Debian系统版本的查询示例,一个8.6,一个9.1。
想要查看更详细的操作系统信息(包括发行版本,系统内核之类的)可以使用命令
uname -a
uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
两种命令的区别和更多参数使用方法可以参考
http://c.biancheng.net/view/1087.html
讲查看命令之前让我们先看一下什么是LAMP
Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。因此想要运行动态网站,必须有合适版本的LAMP。
查看Apche版本
apachectl -v
查看Mysql版本
mysql -V
注意这里是大写V
查看PHP版本
php -v
此外博主的网站使用的是thinkphp框架,因此这里还有一个查看thinkphp版本,防止PHP版本与thinkphp版本不兼容
在/var/www/html/ThinkPHP/Common/的defines.php中,可以看到有一句话define了thinkphp的版本
define('THINK_VERSION', '2.1');
其它版本的thinkphp版本查看路径自行百度。
在 Debian Stretch 中,系统自带的 PHP 版本已经默认为 PHP 7.0。默认MySQL变为MariaDB。
更多Debian9的变化参考https://www.oschina.net/news/85942/debian-9-stretch
让我们先来看看MariaDB是什么:
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
OK,看到这句话,我们就不必担心数据库版本兼容问题了,直接安装Debian9的默认MariaDB就完全可以了。两者兼容性比较参见https://blog.csdn.net/keith_lover/article/details/47186865?utm_source=blogkpcl0
那么PHP7呢?
博主稍稍搜索就在网上看到了一大堆“解决Thinkphp3.1不支持PHP7”的文章,看起来解决相当麻烦具体可以参见https://www.jianshu.com/p/a39f0af8f093
tp3.1都不支持php7了,那博主的tp2.1.。。。。。。不敢想不敢想,决定老老实实装PHP5.6
好了,可能涉及到的兼容性问题都罗列在此了。博主接下来会以Debian9下安装LAMP(Apache2+MariaDB+PHP5.6)为例,给出LAMP的安装、配置、验证过程。
注意以下都在root权限下操作
在正式安装之前,有必要说一下源的问题,博主开始的nameserver和souces.list其实并不好用,找不到需要安装的软件包。经过一番查找,添加了nameserver和源。
nameserver就是DNS域名解析服务器,将域名转换为网络可以识别的IP地址。
echo nameserver 8.8.8.8 > /etc/resolv.conf
echo nameserver 8.8.4.4 > /etc/resolv.conf
可以添加两个google的DNS服务器到你的配置文件中。
这几个服务器也是可以参考的
nameserver 202.112.23.161
nameserver 202.112.23.162
nameserver 10.0.2.3
还可以通过向/etc/apt/sources.list源文件添加更多的源增加找到安装包的机会。以下是博主给出的几个镜像源,仅供参考。
写入/etc/apt/sources.list即可。
deb http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb http://security.debian.org/debian-security stretch/updates main contrib non$
deb-src http://security.debian.org/debian-security stretch/updates main contrib$
deb http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free cont$
# stretch-updates, previously known as 'volatile'
deb http://mirrors.ustc.edu.cn/debian/ stretch-updates main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-updates main contrib non-free
因为我们在debian9下直接安装debian9自带的MariaDB和Apache,直接get非常简单。
先update一下源,再进行安装。
apt-get update
apt-get install apache2 mariadb-server mariadb-client mariadb-common
安装完成后,先让我们确保所有的服务都在运行
systemctl is-active apache2 或 sudo systemctl status apache2
systemctl is-active mariadb
如果显示active则说明两者都在运行,如果没有运行的话执行以下启动服务
systemctl start {apache2,mariadb}
测试Apache2安装成功
apache2 -v
查看当前Apache版本
最佳方法是从Apache请求页面。可以通过访问默认的Apache登录页面,确认软件是否通过您的IP地址正常运行。如果不知道IP地址可以通过以下命令查看
hostname -I
在浏览器中输入http://your_server_ip如果看到以下页面说明Apache安装成功。
测试MariaDB是否安装成功
直接键入命令
mysql -p -u root
//默认密码为空
说明数据库安装成功。
安装成功以后先不要着急往下,设置一下用户密码
mysql_secure_installation
以上命令可以设置数据库根帐户的密码,根据提示一步步设置即可,设置好以后能通过密码登录数据库即设置成功。
这里再为大家提供一个彻底卸载mysql的方法,是博主执着于装Mysql的时候装了卸,卸了装总结出来的经验。。。。
先用 purge 命令卸载:
apt-get --purge remove mysql-server
apt-get --purge remove mysql-client
apt-get --purge remove mysql-common
再清理残余:
apt-get autoremove
apt-get autoclean
rm /etc/mysql/ -R
rm /var/lib/mysql/ -R
查看系统上安装的所有和mysql相关的软件
dpkg --get-selections | grep mysql
如果还发现有未卸载的组件,直接删除即可
重头戏来了!!!Debian9默认安装PHP7,因此如果直接apt-get php的话会自动安装php7,博主就是吃了这个亏所以先get了一套彻底删除PHP7的方法。(当然不删除的话也是安装5.6的)
sudo apt-get --purge remove libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-mysql
//卸载php7及其组件
apt-get autoremove php7.* //删除为了满足其他软件包的依赖而安装的,但现在不再需要的软件包。
apt-get --purge remove php7* //删除安装包,不保留配置文件
或者
sudo aptitude purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`
//查询已经安装的php,全部删除,注意如果你除了7还装了其他版本的php,也会一起被删除
关于各种卸载删除命令,可以参见以下总结
apt-get autoclean:
如果你的硬盘空间不大的话,可以定期运行这个程序,将已经删除了的软件包的.deb安装文件从硬盘中删除掉。如果你仍然需要硬盘空间的话,可以试试apt-get clean,这会把你已安装的软件包的安装包也删除掉,当然多数情况下这些包没什么用了,因此这是个为硬盘腾地方的好办法。
apt-get clean:
类似上面的命令,但它删除包缓存中的所有包。这是个很好的做法,因为多数情况下这些包没有用了。但如果你是拨号上网的话,就得重新考虑了。
apt-get autoremove:
删除为了满足其他软件包的依赖而安装的,但现在不再需要的软件包。
apt-get remove 软件包名称:
删除已安装的软件包(保留配置文件)。
apt-get --purge remove 软件包名称:
删除已安装包(不保留配置文件)。
正式开始PHP5.6的安装
首先,我们需要配置一个新的安装源,以便安装 php 5.6 的包,这里我们选择 deb.sury.org
安装一些必要的软件包
apt-get install apt-transport-https lsb-release ca-certificates
下载安装对应的GPG key 文件
curl https://packages.sury.org/php/apt.gpg | apt-key add -
配置安装源
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php5.list
安装PHP5.6
apt-get update
apt-get install php5.6 php5.6-mysql php5.6-xml php5.6-zip php5.6-json php5.6-gd php5.6-bcmath
这里有一个依赖的安装需要单独拿出来说明一下,那就是apache的php模块,如果不安装的话apache无法解析php文件,访问服务器上的文件会显示php源码。千万不要忘记装!!!
apt-get install libapache2-mod-php5.6
至此php5.6也安装结束了
测试php是否安装成功
update-alternatives --config php可以查看当前服务器上配置的所有php
如果是多版本php并存的话会出现以下多选模式
----------------------------------------------------------
* 0 /usr/bin/php7.0 70 mode automatique
1 /usr/bin/php5.6 56 mode manuel
2 /usr/bin/php7.0 70 mode manuel
测试apache与php是否配置成功
在网站目录下新建一个php文件
/var/www/html/info.php
// 文件内容
在浏览器输入
http://your_server_ip/info.php
出现以下页面即说明apache与php配置成功
使用php脚本测试数据库连接
在网站目录下新建一个php文件
/var/www/html/db_test.php
文件内容为
在浏览器输入http://your_server_ip/db_test.php
返回结果为
Resource id #3
即说明数据库连接成功,返回了一个记录集合
如果你的网站还需要安装一些其他的软件,比如php5-curl(在php内实现类似post等的传输)、graphviz (根据模板生成相应的图形)等,可以先通过apt-cache search php | grep -i curl一类的命令搜索系统中是否有这个软件,如果有的话,可以进行安装
apt-get install php5-curl -y
至此,Debian9安装LAMP环境(Apache2+MariaDB+PHP5.6)就完成啦。将之前系统的代码copy到html目录下直接访问就可以了。
当然,如果你是首次接触在LAMP环境下搭建动态网站可能还需要配置更多的东西。可以参考
如何在Debian9上安装Apache Web服务器 https://www.howtoing.com/how-to-install-the-apache-web-server-on-debian-9
如何在Debian9上使用Apache安装和配置Drupal https://www.howtoing.com/how-to-install-and-configure-drupal-on-debian-9
查看网站开发信息在浏览器输入 https://toolbar.netcraft.com/site_report?url=你要查询的网址