首页 > 编程语言 >源码编译构建LAMP

源码编译构建LAMP

时间:2024-06-12 16:58:25浏览次数:14  
标签:httpd www com 编译 LAMP 源码 usr mysql local

Apache

起源

  • 源于A Patchy Server,著名的开源Web服务软件
  • 1995年时,发布Apache服务程序的1.0版本
  • 由Apache软件基金会(ASF)负责维护
  • 最新的名称为“Apache HTTP Server”
  • 官方站点:http://httpd.apache.org/

主要特点

  • 开发源代码/跨平台应用
  • 支持多种网页编程语言
  • 模块化涉及、运行稳定、良好的安全性

软件版本

  • 1.X
    • 目前最高版本是1.3
    • 向下兼容较好,但缺乏一些较新功能
  • 2.X
    • 目前最高版本是2.4
    • 具有更多的功能特性
    • 与1.X相比,配置管理风格存在较大差异

编译安装httpd服务器

优点

  • 具有较大自由度,功能可以定制
  • 可以及时获得最新的软件版本
  • 普遍吧适用于大多数Linux版本,便于移植使用

获得Apache服务器的源码包

  • 参考地址:http://httpd.apache.orrg/download.cgi

安装httpd服务器步骤

准备工作

rpm -qa httpd                                         #检查是否已安装httpd
yum -y install apr-util-devel pcre-devel gcc*         #使用yum安装运行环境
    #gcc 基于gnu的c语言编译器

源码编译和安装

解包

下载并解压httpd源码包

配置

进入解压后的http包中,使用

./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi 
//指定安装路径、启用字符集支持等

prefix:指定安装路径

命令中的so指的是DSO,功能是动态共享目标

rewrite重写    charset字符集        cgi通用网关接口

编译及安装
make && make install
确认安装结果

使用ls命令查看安装目录下的文件

[root@localhost ~]# ls /usr/local/httpd/
bin    cgi-bin  error   icons    logs  manual
build  conf     htdocs  include  man   modules
优化执行路径
ln -s /usr/local/httpd/bin/* /usr/local/bin/

这样在执行相关命令时就可以之间使用“httpd -v”,而不再需要输入冗长的路径

添加httpd系统服务

进入该路径vim /usr/local/httpd/conf/httpd.conf,设置ServerName(为了解决运行时的提示

在/lib/systemd/system下创建一个httpd.service,并在其中添加以下代码

[Unit]

Description=my httpd

After=network.target

[Service]

Type=forking

PIDFile=/usr/local/httpd/logs/httpd.pid

ExecStart=/usr/local/httpd/bin/apachectl $OPTIONS

ExecReload=/bin/kill -HUP $MAINPID

[Install]

WantedBy=multi-user.target

添加完成后使用systemctl daemon-reload,使systemd读取可运行命令        

httpd服务器的基本配置

1.确认网站名称、IP地址

在客户机的/etc/hosts中为主机的IP添加内容

192.168.10.101 www.kgc.com 

2.配置并启动httpd服务

(1)配置httpd服务

[root@localhost conf]# vim httpd.conf
ServerName www.kgc.com

[root@localhost conf]# apachectl -t        //对配置内容进行语法检查,若是没有错误,则会显示“Syntax OK”

(2)启动httpd服务

由于前面已经将httpd服务添加到系统服务,所以可以使用systemd启动

[root@localhost conf]# systemctl start httpd

(3)部署网页文档

在httpd安装路径下的htdocs目录,http提供了一个名为index.html的测试网页,作为网站的默认首页

[root@localhost conf]# cat /usr/local/httpd/htdocs/index.html 
<html>
<head>    
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    //设定字符集编码。没有这一行若文本中有文字则会显示乱码
<title>无标题文档</title>
</head>
<body>
<h1>你好</h1>
</body>
</html>

(4)在客户机中访问Web站点

在客户机的网页浏览器中,可以通过域名或IP访问httpd浏览器

构建虚拟主机

(单个主机运行多个站点

编辑httpd主配置文件,加载独立的配置文件

[root@localhost ]# vim /usr/local/httpd/conf/httpd.conf
…………
Include conf/extra/httpd-vhosts.conf

基于主机名的虚拟主机

mkdir -p /var/www/htmll/accpcom
mkdir -p /var/www/htmll/benetcom
echo "www.accp.com">/var/www/html/accpcom/index.html
echo "www.benet.com">/var/www/html/benetcom/index.html

为虚拟机准备网页文档

[root@localhost conf]# vim /usr/local/httpd/conf/extra/httpd.vhosts.conf
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html/benetcom"
    ServerName www.benet.com
    ErrorLog "logs/www.benet.com-error_log"
    CustomLog "logs/www.benet.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html/accpcom/"
    ServerName www.accp.com
    ErrorLog "logs/www.accp.com-error_log"
    CustomLog "logs/www.accp.com-access_log" common
</VirtualHost>

<Directory "/var/www/html">
    Require all granted
</Directory>

配置完成后,在虚拟机中使用不同的域名来访问

基于IP的虚拟主机

在基于域名的虚拟主机的基础上进行修改

[root@localhost conf]# vim /usr/local/httpd/conf/extra/httpd.vhosts.conf
<VirtualHost 192.168.10.210:80>        //将*改为固定的IP
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html/benetcom"
    ServerName www.benet.com
    ErrorLog "logs/www.benet.com-error_log"
    CustomLog "logs/www.benet.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.10.101:80>    //将*改为固定的IP
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html/accpcom/"
    ServerName www.accp.com
    ErrorLog "logs/www.accp.com-error_log"
    CustomLog "logs/www.accp.com-access_log" common
</VirtualHost>

<Directory "/var/www/html">
    Require all granted
</Directory>

为服务器添加一个虚拟网卡

[root@localhost extra]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33:0
[root@localhost extra]# cat /etc/sysconfig/network-scripts/ifcfg-ens33:0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.10.210
NETMASK=255.255.255.0
GATEWAY=192.168.10.254
DNS1=114.114.114.114
DN2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33:0
#UUID=126dd06e-b440-4252-8cbd-41912905145e
DEVICE=ens33:0
ONBOOT=yes

基于端口的虚拟主机

继续基于IP的虚拟主机的配置进行修改
监听80和8080端口

[root@localhost conf]# vim /usr/local/httpd/conf/extra/httpd.vhosts.conf
<VirtualHost 192.168.10.101:80>        //将*改为固定的IP
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html/benetcom"
    ServerName www.benet.com
    ErrorLog "logs/www.benet.com-error_log"
    CustomLog "logs/www.benet.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.10.101:8080>    //将*改为固定的IP
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html/accpcom/"
    ServerName www.accp.com
    ErrorLog "logs/www.accp.com-error_log"
    CustomLog "logs/www.accp.com-access_log" common
</VirtualHost>

<Directory "/var/www/html">
    Require all granted
</Directory>

Listen 80
listen 8080

然后在主机中分别访问192.168.10.101:80 和 192.168.10.101:8080

MySql的编译安装

准备工作

下载并解压源码包

使用yum下载ncurses-devel  autoconf 和cmake
yum -y install ncurses-devel autoconf  cmake

添加一个不可登录没有家目录的用户

useradd -M -s /sbin/nologin mysql

源码包的编译和安装

使用cmake进行编译

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all

DCMAKE_INSTALL_PREFIX    指定安装路径
DSYSCONFDIR    指定配置文件路径
DDEFAULT_CHARSET         默认字符集
DDEFAULT_COLLATION    默认字符集校对规则
DWITH_EXTRA_CHARSETS    其他字符集

make && make install编译并安装

安装后的其他调整

对数据库安装目录设置权限

chown -R mysql:mysql mysql/

删除系统生成的mariadb配置文件

rm -rf /etc/my.cnf

复制MySQL源码包下的support-files目录下的my-default.cnf文件到/etc下

cp my-default.cnf /etc/my.cnf

初始化

运行/usr/local/mysql/scripts/下的mysql_install_db以初始化

./mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

设置环境变量

编辑/etc/profile在最后添加export PATH=$PATH:/usr/local/mysql/bin

启动并访问mysql服务

复制mysql源码包/support-files/mysql.server 到/etc/init.d/下的mysqld
然后为其添加执行权限,使用chkconfig --add mysqld把服务添加为系统服务
mysql -uroot进入mysql,此时mysql没有密码
>set password=password("pwd123")
>exit
再次进入就需要输入密码
mysql -uroot -ppwd123 [已存在的数据库]

 构建PHP运行环境

准备工作

使用ali的yum仓库下载软件包
依赖包
yum -y install zlib-devel libxml2 libxml2-devel 
扩展工具库
yum -y install libmcrypt libmcrypt-devel mcrypt mhash

编译并安装PHP

下载并解压php源码包

cd进入源码包
使用./configure --prefix=/usr/local/php5 --with-mcrypt --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php5 --enable-mbstring

prefix:安装路径
--with-mcrypt:加载数据加密等扩展工具支持
--with-apxs2:设置apache HTTP Server提供的apxs模块支持程序的安装位置
--with-mysql:设置MySQL数据库服务程序的安装位置
--with-mysqli: 扩展mysql集
--with-config-file-path:设置PHP配置为保护php.ini存放为孩子
--enable-mbstring: 启用多字节字符串功能

编译及安装make && make install

设置LAMP组件环境

安装好PHP软件包后,php.ini不会自动创建,需要去软件包中复制模板

cp php.ini-development /usr/local/php5/php.ini

使用vim编辑器修改其中的内容

default_charset="UTF-8"    #取消注释

short_open_tag=On        #修改值

extension=php_mysqli.ddl    #取消注释

添加ZendGuardLoader优化模块
解压并进入zend-loader-php包
cp ZendGuardLoader.so /usr/local/php5/lib/php
vim /usr/local/php/php.ini
在[PHP]下面添加
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so 
zend_loader.enable=1

修改httpd的主配置文件
添加LoadModule php_module modules/libphp5.so
AddType application/x-httpd-php 
在 DirectoryIndex index.html 后面追加 index.php
重启服务更新配置

测试LAMP

测试网页是否能正常显示

在 /usr/local/httpd/htdocs/目录下添加test1.php

<?php 

phpinfo( );     #PHP程序的版本好、配置命令、运行变量相关信息

?>

测试PHP网页是否能够访问MySql数据库
在 /usr/local/httpd/htdocs/目录下添加test2.php

<?php 
$link=mysqli_connect('localhost','root','pwd123'); 
if($link) echo "恭喜你,数据库连接成功啦!!"; 
mysqli_close($link); 
?> 

测试LAMP架构应用实例
解压并复制到网站目录
建立配置文件,进入到网站目录下的包目录
最后使用主机测试即可

标签:httpd,www,com,编译,LAMP,源码,usr,mysql,local
From: https://blog.csdn.net/anbesrt/article/details/139586599

相关文章

  • 短剧对接广告联盟app平台开发源码
    短剧对接广告联盟APP平台开发的源码涉及多方面的技术整合与策略设计。以下是一些关键步骤和考虑因素:需求分析:深入理解短剧APP的市场定位、目标用户群体以及广告联盟的具体需求。这有助于确定系统的基本功能和特色服务,确保开发的APP能够满足用户和广告主的实际需求1。系统......
  • SSM-小区物业管理系统-48954(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、
    基于SSM小区物业管理系统摘要随着计算机科学技术日渐成熟,人们已经深刻认识到了计算机功能的强大,计算机已经进入到了人类社会发展的各个领域,并且发挥着十分重要的作用。每个社区的物业管理是一项系统而复杂的工作,它需要一个团队互相配合、分工协作。在该领域,传统的手工存取......
  • 微信小游戏开发流程及上架步骤:微信小游戏定制开发源码搭建
    微信小游戏开发方案主要包括以下几个方面:    1.游戏设计:根据需求和目标用户群体,设计游戏玩法、关卡、角色、场景等元素,确保游戏具有吸引力和可玩性。    2.技术实现:根据游戏设计,选择合适的技术栈和开发工具,进行游戏代码编写、测试、优化等工作。    ......
  • 【CMake系列】05-静态库与动态库编译
    在各种项目类型中,可能我们的项目就是一个库项目,向其他人提供我们开发好的库(windows下的dll/lib;linux下的.a/.so);有时候在一个项目中,我们对部分功能打包成库,方便在不同地方进行调用静态库和动态库对项目实现了不同程度的解耦,静态库,往往会链接时加载,代码会......
  • C语言详解(编译和链接)
    Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎~~......
  • 【S087】Springboot+Thymleaf在线答疑系统项目源码 java源代码
    运行截图:登录学生注册教师注册学生发起问题联系我们后台首页常见问题管理添加常见问题人工答疑学生管理个人信息修改密码项目组成:项目源码:源码获取⬇⬇⬇......
  • 【S086】基于Springboot图书馆管理系统项目源码 java图书借阅管理 含文档
    运行截图:登录后台主页图书列表图书上架借阅图书归还图书用户列表添加用户公告列表发布公告个人信息详情个人信息编辑项目组成:项目源码:项目文档:源码获取⬇⬇⬇......
  • 龙哥量化:通达信倚天出鞘主图指标公式源码
    如果您需要代写公式,请联系我。龙哥QQ:591438821龙哥微信:Long622889 涨停:=C/REF(C,1)>1.0970ANDC=HANDC/REF(C,1)<1.11;STICKLINE(涨停,O,C,2,0),COLORYELLOW;跌停:=C/REF(C,1)<0.913ANDC=L;STICKLINE(跌停,O,C,2,0),COLORGREEN;周期:=BArslAST(REF(涨停,1)ANDNOT......
  • 50.基于SSM的停车场管理系统的设计与实现|基于SSM+ Mysql+Java设计与实现(可运行源码+
    内容概要:全套项目源码+详尽文档,一站式解决您的学习与项目需求。适用人群:计算机、通信、人工智能、自动化等专业的学生、老师及从业者。使用场景及目标:无论是毕设、期末大作业还是课程设计,一键下载,轻松部署,助您轻松完成项目。项目代码经过调试测试,确保直接运行,节省您的时......
  • gcc编译时报错 fatal error: stdio.h: 没有那个文件或目录
    在kylinV10中使用GCC编译代码时遇到如下问题:首先确认了,自己单词没有拼写错。然后再检查GCC的版本,确实没问题。没有标准的头文件需要安装build-essential来解决。需要安装build-essential。执行以下命令:sudoapt-getinstallbuild-essential如无兼容版本可使用可使用ap......