本文主要讲的是本人在迁移php网站相关软件的安装和配置过程,以及一下问题的解决步骤。通过阅读本文能够知道如何迁移php网站,如何配置httpd服务使得它能够解析php文件以及如何解决迁移过程中的异常问题。

本人实验室需要将原来的Homepage网站迁移到一台新的机器上面。网站是使用xpress engine建立的,所以,运行环境为apache httpd和php。如果能够直接使用xampp就好了,可是老服务器是n年前的,新的服务器环境需要兼容原来环境的版本。所以,需要单独安装apache http和php以及数据库mysql。

数据库的安装很简单,只需要使用一条yum install 命令就可以了,安装的时候注意,不能仅仅按照mysql client,mysql server也是需要的,要不得话会启动失败的。这里不详讲MySQL, 本人参考了这篇文章Centos7安装MySQL。

接下来安装apache httpd服务。下载网址https://archive.apache.org/dist/httpd/, 下载到服务器中之后,解压,配置,编译,安装。具体的步骤可以在解压包中的INSTALL文件中找到,本人也是以这个文件为指导安装的。照抄如下:

1、tar -xzvf apache_xxx.tar

2、cd apache_xxx

3、./configure –pref=/www –enable-module=so

4、make

5、make install

本人所安装的版本是apache 2.2, 默认的安装路径为/usr/local/apache2. 在这个路径下面有bin执行文件,需要注意的是,执行文件还没有加入path环境变量中,也就是/etc/profile文件下面。配置文件在/usr/local/apache2/conf目录下面。而我们的网站的index.html文件在htdocs目录下面。
默认的端口为80, 可以在另一台机器的浏览器或者本机中的curl命令测试一下, (直接在浏览器中输入ip地址即可, 或者在linux命令行中输入curl IPAddress)。如果在本机中可以访问index.html文件,在另一台机器上面无法访问,那很可能是本机的防火墙没有开放80窗口的原因。可以使用下面命令解决这个问题:

firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl stop firewalld.service
systemctl start firewalld.service  

上面命令的具体作用是让外部机器能够通过80端口访问本机,且该设置永久有效。然后重启防火墙,使之生效。

接下来就需要安装php了。下载网址http://php.net/releases/,安装步骤基本和安装apache http一样。同样的,本人以解压包中的INSTALL文件为参考,

  1. tar -zxvf php-NN.tar

  2. cd php-NN

  3. ./configure –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql

  4. make

  5. make install

  6. cp php.ini-development /usr/local/lib/php.ini
    这个也是配置文件所在地方。

  7. 在apache http的配置文件httpd.conf中添加:LoadModule php5_module modules/libphp5.so, 添加前先检查一下是否已经存在,一般情况下是已经自动添加了的。

  8. 在配置文件httpd.conf中添加下面配置项:

<FilesMatch \.php$>SetHandler application/x-httpd-php
</FilesMatch>

9、重启apache httpd, /usr/local/apache2/bin/apachectl start

具体的配置请参考解压包中的INSTALL文件。

最后,可以在apache2/htdocs目录下面添加一个php文件,名字随意,这里起index.php, 里面的内容为如下所示,用于测试apache httpd是否能够解析php文件。

echo "<?php phpinfo();?>"

在浏览器中输入ipadress/index.php就可以了。

在编译安装包的时候,需要安装g++, 在编译的时候注意查看最后所显示出来的信息。

到此基本已经安装完成了。但是,本人的机器有点特别:/home目录下面的空间特别大,有2Tb左右,而其他路径下的空间只有30G左右,比如/usr,而本人的网站的文件差不多有10G,所以,把网站的文件放到/usr/local/apache2/htdocs下面是不合理的,因此,我打算把htdocs文件迁移到/home目录下面。具体怎么做呢?很多博客都讲到这个。
在apache http的配置文件httpd.conf中修改:DocumentRoot "/usr/local/apache2/htdocs"DocumentRoot "home/www"<Directory "/usr/local/apache2/htdocs">修改为<Directory "/home/www">

然后在/home/下建立www文件夹,然后修改/home/www文件以及其子文件的权限chmod 755 -R /home/www, 最后复制相应的网站文件进去,比如index.html文件。

本人开始的时候尝试着在/home/dblab/目录下建立www目录,也就是dblab是用户名,通过浏览器访问一直在报错,说是没有访问权限。

问题1:
下面是重启apache http的时候的错误信息:

 * Restarting web server apache2       apache2: Syntax error on line 185 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: Cannot load /usr/lib/apache2/modules/libphp5.so into server: /usr/lib/apache2/modules/libphp5.so: undefined symbol: OnUpdateLong

问题解决:

本文问题出现的原因:第二次编译安装php的直接使用下面第二步。也就是前面的所安装的文件影响到了第二次的安装。所以需要执行第一步的命令进行一些清除工作。也可以重新解压tar包,在新的解压包里面直接进行第二步和第三步。

on the php source
1、make distclean
2、./configure  --with-apxs2=/usr/local/apache2/bin/apxs   --with-mysql
3、make && make install

问题2
rewrite问题:测试的时候,发现新网站和原来的网页还是有一点区别,原来是httpd没有开启rewrite模块。

解决方法:下面是本人开启rewrite模块的步骤:

1、#find . -name mod_rewrite.c //在apache的源码安装目录中寻找mod_rewrite.c文件

2、#cd modules/mappers/mod_rewrite.c //进入包含mod_rewrite.c文件的目录

3、#/usr/share/apache-2.2.11/bin/apxs -c mod_rewrite.c //apxs应指定绝对路径,在你当前正在使用apache的bin目录里

4、#/usr/share/apache-2.2.11/bin/apxs -i -a -n mod_rewrite mod_rewrite.la
如果没有什么错误的话,应该在你的apache的modules目录中编译出一个mod_rewrite.so文件。

5、编辑httpd.conf文件,确认httpd.conf中已经包含mod_rewrite.so的加载语句,如下:
LoadModule rewrite_module modules/mod_rewrite.so

6、编辑配置文件conf/httpd.conf,找到<Directory /var/www/html>部分,然后更改AllowOverride从指令NoneAll

7、重启httpd

问题3
问题描述:网站过十几分钟就不能访问了,当时可以ping通。重启服务器的网络之后又暂时能访问。重启网络的命令为:service network restart

原因寻找:第一反应是查看httpd的log,主要是error log,发现存在不能访问的权限限制。所以,想到我把httpd的htdocs默认目录搬到了/home目录下面了,很可能是我给www文件夹的权限太少的原因。

问题解决:使用chmod命令适当增加www文件夹的权限。重启httpd服务器。

问题4
问题描述:网站已经可以正常查看,但是管理员不能上传文件,但是可以上传照片。

原因查找和解决:首先查看log日志,发现有权限问题,说是permission deny。于是直接修改该文件的权限为777,问题依然存在,恢复文件权限。查看apace httpd的用户名为daemo,使用ps -ef | grep http查看。但是存放网站文件的htdocs以及它的子文件都是root用户的,于是把他们全部修改为daemo的。这样之后就可以上传文件了。使用命令有:chown -R daemon:daemon htdocs。注意,你的机器有可能不是daemon的用户名,以自己的为准。
所以,这个问题还是权限的问题。

问题5

问题描述:数据库文件出现下面错误日志:
180702 06:24:32 mysqld_safe Logging to ‘/var/log/mysqld.log’.
180702 06:24:32 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2018-07-02 06:24:33 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).
2018-07-02 06:24:33 0 [Note] /usr/sbin/mysqld (mysqld 5.6.37) starting as process 1895 …
2018-07-02 06:24:33 1895 [Warning] Buffered warning: Changed limits: max_open_files: 1024 (requested 5000)

2018-07-02 06:24:33 1895 [Warning] Buffered warning: Changed limits: table_open_cache: 431 (requested 2000)

2018-07-02 06:24:33 1895 [Note] Plugin ‘FEDERATED’ is disabled.
2018-07-02 06:24:33 1895 [Note] InnoDB: Using atomics to ref count buffer pool pages
2018-07-02 06:24:33 1895 [Note] InnoDB: The InnoDB memory heap is disabled
2018-07-02 06:24:33 1895 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-07-02 06:24:33 1895 [Note] InnoDB: Memory barrier is not used
2018-07-02 06:24:33 1895 [Note] InnoDB: Compressed tables use zlib 1.2.3
2018-07-02 06:24:33 1895 [Note] InnoDB: Using Linux native AIO
2018-07-02 06:24:33 1895 [Note] InnoDB: Using CPU crc32 instructions
2018-07-02 06:24:33 1895 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2018-07-02 06:24:33 1895 [Note] InnoDB: Completed initialization of buffer pool
2018-07-02 06:24:33 1895 [Note] InnoDB: Highest supported file format is Barracuda.
2018-07-02 06:24:33 1895 [Note] InnoDB: 128 rollback segment(s) are active.
2018-07-02 06:24:33 1895 [Note] InnoDB: Waiting for purge to start
2018-07-02 06:24:33 1895 [Note] InnoDB: 5.6.37 started; log sequence number 2318148
2018-07-02 06:24:33 1895 [Note] Server hostname (bind-address): ‘*’; port: 3306
2018-07-02 06:24:33 1895 [Note] IPv6 is available.
2018-07-02 06:24:33 1895 [Note] - ‘::’ resolves to ‘::’;
2018-07-02 06:24:33 1895 [Note] Server socket created on IP: ‘::’.
2018-07-02 06:24:33 1895 [Note] Event Scheduler: Loaded 0 events
2018-07-02 06:24:33 1895 [Note] /usr/sbin/mysqld: ready for connections.
Version: ‘5.6.37’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 MySQL Community Server (GPL)
2018-07-02 06:48:20 1895 [Note] /usr/sbin/mysqld: Normal shutdown

同时apache httpd的日志文件出现error,这里面的error本人看不懂。服务器是突然坏掉的,php文件没有修改过。所以根据以往的经验,很有可能是数据库的问题。

解决过程:
其他方法尝试无果之后,决定重装数据库。首先备份数据库文件和数据,卸载干净原数据库文件,参考这篇博文,重新安装MySQL数据库。需要重启一下服务器。

总结:

如果一开始不知道如何安装和配置php,先不要急着查看别人的博客。因为最好的指导说明书就在解压包中,通过查看里面的指导说明,比如INSTALL文件,能够更加正确的安装和配置好。因为相同的软件不同的版本的安装和配置流程可能是不一样的,而别人博客中所讲到的基本只针对他本人的版本。

本人之前没有接触过“世界上最好的语言”PHP,在安装的过程中遇到各种坑,通过解决一个个问题,最终把这次的网站迁移任务完成,感觉还是蛮有感觉的。在这个过程中,略微感到不爽的事情是,坐在我身后的黑人同学总是问我“what’s the problem?”每次这样问我都不知道如何回答他,烦的很。他可能在怀疑我能不能完成这个任务。我们才认识不到一个月,他还不了解我,不跟他计较。

完结。转载请标明出处,感谢:)

Centos7安装Apache和PHP,包含配置过程相关推荐

  1. 用playbook安装Apache,修改端口,配置ServerName,修改主页,设置开机自启

    用playbook安装Apache,修改端口,配置ServerName,修改主页,设置开机自启 [root@ansible ansible]# vim http.yml---- hosts: cach ...

  2. centos7 安装Apache、PHP、MariaDB并修改相关默认端口

    一.安装前准备开放端口 需要配置服务器端口,天翼云80端口默认关闭,这里使用8080端口作为web访问端口,62323端口作为数据库MySQL的端口. 关闭firewall: systemctl st ...

  3. centos7 安装apache+php+memcache

    安装apache yum install pcre-devel apr apr-devel apr-util apr-util-devel gcc-c++ libxml2-devel libxml2 ...

  4. 关于Ubuntu18.04安装后的一系列环境配置过程的总结

    Updating... 目录 1.注意 2.更换国内源 3.设置/home文件夹下为英文 4.禁用Nouveau驱动 5.安装Nvidia驱动(有可能会损坏系统,如果损坏可以重装并看看网上的其他教程, ...

  5. idea安装maven依赖包及配置过程,打开及运行项目

    一.idea安装maven依赖包及配置 1.官网下载maven安装包 2.将安装包解压到D盘任意位置,例如D:\ProgramFile\ideaMaven下 3.然后配置环境变量 打开电脑设置→系统→ ...

  6. CentOs7安装apache以及遇到的问题

     新手在CentOs7装一个Apache时,可以参考本文,我自己鼓捣这个搞了两个晚上,太不给力了!  1.下载httpd源码包 [root@localhost utils]# mkdir /usr/l ...

  7. Centos7 安装部署Kubernetes(k8s)集群过程

    1.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.9 Docker version 20.10.12 x86_64 2.前言 如下图描述了软件部 ...

  8. centos7 安装无线工具包wireless-tools 包含 iwlist,iwconfig命令

    Linux系统默认没有无线网络工具包wireless-tools,yum install wireless-tools,显示没有此安装包,后来发现只能手动安装. 去下载地址 https://www.h ...

  9. Linux centos7安装nfs及服务端配置

    安装 [root@hygon-vm ~]# rpm -qa nfs-utils [root@hygon-vm ~]# rpm -qa rpcbind [root@hygon-vm ~]# [root@ ...

最新文章

  1. 常量元素记忆口诀_人体中的常量元素与微量元素
  2. pwntools常用脚本语句介绍讲解
  3. 130242014018-郑志良-第2次实验
  4. leetcode 93. 复原IP地址 思考分析
  5. win7如何看计算机用户名和密码怎么办,win7系统电脑查看共享文件夹时不显示用户名和密码输入窗口的解决方法...
  6. JAVA中的适配器应用_Java适配器模式详解和实际应用.md
  7. 数字冰雹智慧城市大数据可视化分析决策系统
  8. 计算机Excel及格率怎么,及格率怎么算在excel里?
  9. gatk过滤_GATK使用方法详解(变异检测)
  10. 【转】win7 旗舰版激活密钥
  11. 如何免费自动将邮件发送到多个邮件地址 - 自动邮件发送器使用教程
  12. 德国地学研究中心到国家基础地理信息中心作学术交流
  13. MMORPG游戏服务器端的设计
  14. 用小鸟云服务器如何实现Nginx静态资源配置?
  15. 加州大学欧文分校 计算机工程,美国加州大学欧文分校计算机工程本科.pdf
  16. 人工智能与智能的异同
  17. 杭电oj第1000题—— A + B Problem
  18. English trip EM3 LP 4B Home Design Relationship Teacher:Ryan
  19. 修改项目启动输出日志格式
  20. 计算机教育杂志有核心期刊吗,计算机教学论文参考文献集 计算机教学核心期刊参考文献哪里找...

热门文章

  1. linux服务器补丁加载方法,Kpatch不重启给Linux内核打补丁
  2. 文科生学python系列_文科生学 Python 系列 3:函数
  3. python导入模块快捷键_Python中的模块导入和读取键盘输入的方法
  4. mysql alter engine_MySQL_mysql下修改engine引擎的方法,修改my.ini,在[mysqld]下加上 - phpStudy...
  5. ant vue 兼容性问题_Ant Design of Vue使用遇到的问题以及解决方法总结
  6. Spring框架中的设计模式(二)
  7. WebX Qamp;A
  8. unity, TRANSFORM_TEX
  9. 信息安全系统设计基础 实验四:外社驱动程序设计 20135327郭皓 20135329 李海空...
  10. 正则严格验证身份证信息