httpd + mysql + php安装测试

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介:
本篇文章以两道题的形式道出:

建立httpd服务器(基于编译的方式进行),要求:
1)提供两个基于名称的虚拟主机:
(a)www1.magedu.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;
(b)www2.magedu.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2.err,访问日志为/var/log/httpd/www2.access;
(c)为两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;
(d)通过www1.magedu.com/server-status输出httpd工作状态相关信息,且只允许提供帐号密码才能访问(status:status);
2)www1主机仅允许172.16.0.0/16网络中的客户机访问;www2主机可以被所有主机访问;

解决依赖关系:
 
 
  1. yum groupinstall -y "Development Libraries" "Development Tools" "X Software Development" 
编译安装httpd服务器:
 
  1. lftp 172.16.0.1/pub/Sources/new_lamp              只限此实验环境内,可去官网下载哦 
  2. mget apr-1.4.6.tar.bz2 apr-util-1.4.1.tar.bz2      

(1) 编译安装apr
 
 
  1. # tar xf apr-1.4.6.tar.bz2 
  2.  
  3. # cd apr-1.4.6 
  4.  
  5. # ./configure --prefix=/usr/local/apr 
  6.  
  7. # make && make install 

(2) 编译安装apr-util
 
 
  1. # tar xf apr-util-1.4.1.tar.bz2 
  2.  
  3. # cd apr-util-1.4.1 
  4.  
  5. #./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr 
  6.  
  7. # make && make install 
(3)httpd编译过程也要依赖于pcre-devel软件包,需要事先安装。此软件包系统光盘自带:
 
 
  1. #yum install pcre-devel -y 
为防止以下由于openssl版本过老而导致编译报错,安装openssl-devel解决问题:
 
 
  1. #yum install openssl-devel -y 

2.编译httpd
 
 
  1. #tar xf httpd-2.4.3.tar.bz2 
  2.  
  3. #cd httpd-2.4.3 
  4.  
  5. # ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-mpm:s-shared=all --with-mpm=event 
  6.  
  7. # make && make install 
 
3、修改httpd的主配置文件,设置其Pid文件的路径
 
 
  1. vim /etc/httpd/httpd.conf,添加如下行即可: 
  2. PidFile  "/var/run/httpd.pid" 

4、提供SysV服务脚本/etc/rc.d/init.d/httpd,内容如下:

 
 
  1. #!/bin/bash 
  2. # httpd        Startup script for the Apache HTTP Server 
  3. # chkconfig: - 85 15 
  4. # description: Apache is a World Wide Web server.  It is used to serve \ 
  5. #          HTML files and CGI. 
  6. # processname: httpd 
  7. # config: /etc/httpd/conf/httpd.conf 
  8. # config: /etc/sysconfig/httpd 
  9. # pidfile: /var/run/httpd.pid 
  10.  
  11. # Source function library. 
  12. . /etc/rc.d/init.d/functions 
  13.  
  14. if [ -f /etc/sysconfig/httpd ]; then 
  15.         . /etc/sysconfig/httpd 
  16. fi 
  17.  
  18. # Start httpd in the C locale by default. 
  19. HTTPD_LANG=${HTTPD_LANG-"C"} 
  20.  
  21. # This will prevent initlog from swallowing up a pass-phrase prompt if 
  22. # mod_ssl needs a pass-phrase from the user. 
  23. INITLOG_ARGS="" 
  24.  
  25. # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server 
  26. # with the thread-based "worker" MPM; BE WARNED that some modules may not 
  27. # work correctly with a thread-based MPM; notably PHP will refuse to start. 
  28.  
  29. # Path to the apachectl script, server binary, and short-form for messages. 
  30. apachectl=/usr/local/apache/bin/apachectl 
  31. httpd=${HTTPD-/usr/local/apache/bin/httpd} 
  32. prog=httpd 
  33. pidfile=${PIDFILE-/var/run/httpd.pid} 
  34. lockfile=${LOCKFILE-/var/lock/subsys/httpd} 
  35. RETVAL=0 
  36.  
  37. start() { 
  38.         echo -n "Startingprog: " 
  39.         LANG=$HTTPD_LANG daemon --pidfile=pidfilehttpd $OPTIONS 
  40.         RETVAL=$? 
  41.         echo 
  42.         [ $RETVAL = 0 ] && touch ${lockfile} 
  43.         return $RETVAL 
  44.  
  45. stop() { 
  46.     echo -n "Stoppingprog: " 
  47.     killproc -p pidfiled10httpd 
  48.     RETVAL=$? 
  49.     echo 
  50.     [ $RETVAL = 0 ] && rm -f lockfile{pidfile} 
  51. reload() { 
  52.     echo -n "Reloadingprog: " 
  53.     if ! LANG=HTTPDLANGhttpd $OPTIONS -t >&/dev/null; then 
  54.         RETVAL=$? 
  55.         echo $"not reloading due to configuration syntax error" 
  56.         failure "notreloadinghttpd due to configuration syntax error" 
  57.     else 
  58.         killproc -p pidfilehttpd -HUP 
  59.         RETVAL=$? 
  60.     fi 
  61.     echo 
  62.  
  63. # See how we were called. 
  64. case "$1" in 
  65.   start) 
  66.     start 
  67.     ;; 
  68.   stop) 
  69.     stop 
  70.     ;; 
  71.   status) 
  72.         status -p pidfilehttpd 
  73.     RETVAL=$? 
  74.     ;; 
  75.   restart) 
  76.     stop 
  77.     start 
  78.     ;; 
  79.   condrestart) 
  80.     if [ -f ${pidfile} ] ; then 
  81.         stop 
  82.         start 
  83.     fi 
  84.     ;; 
  85.   reload) 
  86.         reload 
  87.     ;; 
  88.   graceful|help|configtest|fullstatus) 
  89.     apachectl
  90.     RETVAL=$? 
  91.     ;; 
  92.   *) 
  93.     echo "Usage:prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" 
  94.     exit 1 
  95. esac 
  96.  
  97. exit $RETVAL 

而后为此脚本赋予执行权限:
 
 
  1. # chmod +x /etc/rc.d/init.d/httpd 

加入服务列表:
 
 
  1. # chkconfig --add httpd 

5.配置httpd.conf文件

 
 
  1. # vim /etc/httpd/httpd.conf 
  2. 注释下列信息(默认设置为所有拒绝访问,这里需要注释掉) 
  3. #<Directory /> 
  4. #    AllowOverride none 
  5. #    Require all denied 
  6. #</Directory> 
  7. 启用: 
  8. Include /etc/httpd/extra/httpd-vhosts.conf 
  9.  
  10. 编辑: 
  11. # vim /etc/httpd/extra/httpd-vhosts.conf 
  12. 注释原来信息添加新信息 
  13. <VirtualHost *:80> 
  14.     ServerAdmin admin.magedu.com 
  15.     DocumentRoot "/web/vhosts/www1" 
  16.     ServerName www1.magedu.com 
  17.     ErrorLog "/var/log/httpd/www1.err" 
  18.     CustomLog "/var/log/httpd/www1.access" common 
  19.      <Location /server-status>             此处为server-status输出的信息   
  20.        SetHandler server-status 
  21.                  AllowOverride Authconfig 
  22.                  AuthType Basic 
  23.                  AuthName "Limit..."                          
  24.                  AuthUserFile "/web/users"       
  25.                  Require valid-user 
  26.      </Location> 
  27.     
  28.    <Directory /web/vhosts/www1> 
  29.               Order Deny,Allow 
  30.               Deny from all 
  31.               Allow from 172.16.0.0/16  
  32.    </Directory> 
  33.    
  34. </VirtualHost> 
  35.  
  36.  
  37. <VirtualHost 172.16.8.1:80> 
  38.     ServerAdmin admin.magedu.com 
  39.     DocumentRoot "/web/vhosts/www2" 
  40.     ServerName www2.magedu.com 
  41.     ErrorLog "/var/log/httpd/www2.err" 
  42.     CustomLog "/var/log/httpd/www2.access" common 
  43.      <Directory "/var/www/html/www2"> 
  44.          Allow from all 
  45.      </Directory> 
  46. </VirtualHost> 

6.新建日志文件夹及其主页面文件夹与文件
 
 
  1. # mkdir -pv /var/log/httpd 
  2.  
  3. #mkdir -pv /web/vhosts/www2 
  4.  
  5. #mkdir -pv /web/vhosts/www1 
  6.  
  7. #echo "www1.magedu.com" > /web/vhosts/www1/index.html 
  8.  
  9. #echo "www2.magedu.com" > /web/vhosts/www2/index.html 
 
7.添加访问的用户
 
 
  1. 首先定义环境变量: 
  2. #echo "export PATH=$PATH:/usr/local/apache/bin" > /etc/profile.d/httpd.sh 
  3.  
  4. #. /etc/profile 
  5.  
  6. htpasswd -c -m /web/users status 
  7. htpasswd : -c 第一次创建的时候使用,以后再用表示覆盖源文件 
  8. 账号密码为status:status 

为上题中的第1个虚拟主机提供php+mysql的功能,要求:
(1)通过在原有主页中添加phpinfo()测试页表明启用php成功;
(2)将mysql的root用户密码设置为"123456"(引号中的内容);
(3)通过http://www1.magedu.com/pma提供本机mysql服务的web管理接口phpMyAdmin;
(4)本机上的mysql服务仅允许来自本地的请求通过;

1,首先为MySQL创建数据目录:
 
 
  1. # mkdir -p /mydata/data 
  2.   
  3. # groupadd -r mysql 
  4.   
  5. # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql 
  6.   
  7. # chown -R mysql:mysql /mydata/data 
 
2,编译安装MySQL,查看更改配置文件
 
 
  1. # tar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/local/ 
  2.   
  3. # cd /usr/local/ 
  4.   
  5. # ln -sv mysql-5.5.28-linux2.6-i686/ /usr/local/mysql 
  6.   
  7. # cd mysql 
  8.   
  9. # chown -R mysql:mysql  . 
  10.   
  11. # scripts/mysql_install_db --user=mysql --datadir=/mydata/data 
  12.   
  13. # chown -R root  . 
  14.   
  15. # cd /usr/local/mysql 
  16.  
  17. # cp support-files/my-large.cnf  /etc/my.cnf 
  18.  
  19. 查看更改配置文件: 
  20.   
  21. # vim /etc/my.cnf 
  22. 更改 
  23. thread_concurrency = 2  //第39行 
  24.  
  25. datadir = /mydata/data  //新加一行 
 
 
为mysql提供sysv服务脚本:
 
 
  1. # cd /usr/local/mysql 
  2.   
  3. # cp support-files/mysql.server  /etc/rc.d/init.d/mysqld 
  4.   
  5. # chmod +x /etc/rc.d/init.d/mysqld 
添加到服务列表中: 
 
 
  1. # chkconfig --add mysqld 
  2. # chkconfig mysqld on 
而后就可以启动服务测试使用了。
 
 
  1. # service mysqld start 
 输出mysql的man手册至man命令的查找路径:
 
 
 
  1. # vim /etc/man.config  
  2. MANPATH  /usr/local/mysql/man   //新加一行 
输出mysql的头文件至系统头文件路径:
 
 
 
  1. # ln -sv /usr/local/mysql/include  /usr/include/mysql 
输出mysql的库文件给系统库查找路径: 
 
 
 
  1. # echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf 
而后让系统重新载入系统库: 
 
 
 
  1. # ldconfig 
设置环境变量: 
 
 
  1. # vim /etc/profile.d/mysql.sh  添加如下
  2. export PATH=$PATH:/usr/local/apache/bin:/usr/local/mysql/bin 
  3. # . /etc/profile 
  4.   
  5. # service mysqld start  重新启动
  6.   
  7. # mysql          确认mysql正常运行(quit退出) 
 
将mysql的root用户密码设置为"123456"
 
 
  1. # mysqladmin -uroot -p password  
  2. 123456  
 
php的安装配置: 
解决依赖关系:
下载lftp 172.16.0.1/pub/Sources/ngnix目录中的如下几个rpm包并安装之:
 
 
  1. libmcrypt-2.5.7-5.el5.centos.i386.rpm 
  2. libmcrypt-devel-2.5.5-5.el5.centos.i386.rpm 
  3. mhash-0.9.2-6.el5.centos.i386.rpm 
  4. mhash-devel-0.9.2-6.el5.centos.i386.rpm 
  5. mcrypt-2.6.8-1.el5.i386.rpm 
最好使用升级的方式安装上面的rpm包,命令格式如下:
 
  1. # rpm -Uvh  
另外,也可以根据需要安装libevent,系统一般会自带libevent,但版本有些低。因此可以升级安装之,它包含如下两个rpm包
 
 
  1. 下载路径:ftp://172.16.0.1/pub/Sources/memcached。 
  2. libevent-2.0.17-2.i386.rpm 
  3. libevent-devel-2.0.17-2.i386.rpm 
安装这两个包时,它可能会依赖于其他包的,所以可以用yum -y install 命令来安装

编译安装: 
 
 
  1. # tar xf php-5.4.8.tar.bz2 
  2.   
  3. # cd php-5.4.8 
  4.   
  5. # ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2  --enable-maintainer-zts 
  6.   
  7. # make 
  8.   
  9. # make install 
  10.   
  11. # cp php.ini-production /etc/php.ini 
  12.   
配置测试:
 
 
  1. # vim /etc/httpd/httpd.conf 
  2.   
  3.  添加如下二行 
  4.   
  5.    AddType application/x-httpd-php  .php               //378行 
  6.   
  7.    AddType application/x-httpd-php-source  .phps 
  8.   
  9.   
  10.   
  11.  将DirectoryIndex index.html修改为: 
  12. DirectoryIndex  index.php  index.html 
  13.   
  14. # cd /web/vhosts/www1 
  15.   
  16. # vim index.php  
  17.   
  18. <?php 
  19.   
  20. phpinfo(); 
  21.   
  22. ?> 
重新启动httpd服务器 
然后访问测试一下就OK了。

phpMyAdmin的安装配置:
 
 
  1. lftp 172.16.0.1:/pub/Sources/new_lamp>  
  2. phpMyAdmin-3.5.1-all-languages.tar.bz2 
  3.  
  4. tar xf /root/phpMyAdmin-3.5.1-all-languages.tar.bz2 
  5. mv phpMyAdmin-3.5.1-all-languages/* ./ 
  6.  
  7.   
  8. # tar xf phpMyAdmin-3.5.1-all-languages.tar.bz2 
  9.  
  10. # mkdir /web/vhosts/www1/pma 
  11.  
  12. # mv phpMyAdmin-3.5.1-all-languages/* /web/vhosts/www1/pma  
仅允许来自本地的请求通过:

 
 
  1. #mysql 
  2.  
  3. #create database mydb; 
  4.  
  5. #grant all on mydb.* to root@'localhost' identified by '123456'; 
  6.  
  7. #flush privileges; 
  8.  
  9. # service mysqld restart 
 
 
以上为实验过程步骤,没有附加效果图,如有疑问可留言,笔者将以最大的努力解决疑问。。。

本文转自 z永 51CTO博客,原文链接:http://blog.51cto.com/pangge/1063366
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
344
分享
相关文章
在Ubuntu系统的Docker上安装MySQL的方法
以上的步骤就是在Ubuntu系统的Docker上安装MySQL的详细方法,希望对你有所帮助!
41 12
容器技术实践:在Ubuntu上使用Docker安装MySQL的步骤。
通过以上的操作,你已经步入了Docker和MySQL的世界,享受了容器技术给你带来的便利。这个旅程中你可能会遇到各种挑战,但是只要你沿着我们划定的路线行进,你就一定可以达到目的地。这就是Ubuntu、Docker和MySQL的灵魂所在,它们为你开辟了一条通往新探索的道路,带你亲身感受到了技术的力量。欢迎在Ubuntu的广阔大海中探索,用Docker技术引领你的航行,随时准备感受新技术带来的震撼和乐趣。
63 16
|
9天前
|
利用PHP压缩音频:Linux环境下的ffmpeg简易安装指南
希望这个指南能为你的编程之旅提供帮助。只需记住,每一行代码都像音乐的音符,组合在一起,创造出美妙的旋律。祝你编程愉快!
45 6
os-copilot安装_配置_功能测试全集
我是一位中级运维工程师,我平时工作会涉及到 各类服务器的 数据库 与 java环境配置 操作。 我顺利使用了OS Copilot的 -t -f | 功能,我的疑惑是不能在自动操作过程中直接给与脚本运行权限,必须需要自己运行一下 chmod 这个既然有了最高的权限,为什么就不能直接给与运行权限呢。 我认为 -t 功能有用,能解决后台运行基础命令操作。 我认为 -f 功能有用,可以通过task文件中撰写连续任务操作。 我认为 | 对文件理解上有很直接的解读,可以在理解新程序上有很大帮助。
187 86
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
47 18
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
72 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
os-copilot安装与多项功能测评,帮助开发人员PHP环境排查问题
本文介绍了OS Copilot在ECS上 Alibaba Cloud Linux的安装与使用,并对其多项参数进行了功能测评。OS Copilot是为操作系统提供智能化辅助的工具,支持自动化任务、智能推荐、故障排查等功能。安装时需检查是否已安装(`rpm -q os-copilot`),若未安装则用`yum install os-copilot`命令安装,并配置AccessKey信息连接阿里云服务。通过测试不同参数命令,如`-t`参数,展示了其自动化执行和智能生成回答的能力,显著提升运维效率。
os-copilot安装与多项功能测评,帮助开发人员PHP环境排查问题
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
235 42
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
170 25

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等