源码编译构建LAMP

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 webmaster@dummy-host.example.com
    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 webmaster@dummy-host2.example.com
    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 webmaster@dummy-host.example.com
    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 webmaster@dummy-host2.example.com
    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 webmaster@dummy-host.example.com
    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 webmaster@dummy-host2.example.com
    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架构应用实例
解压并复制到网站目录
建立配置文件,进入到网站目录下的包目录
最后使用主机测试即可

相关推荐

  1. 编译构建LAMP

    2024-06-13 21:44:04       8 阅读
  2. 编译安装LAMP

    2024-06-13 21:44:04       5 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-13 21:44:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-13 21:44:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-13 21:44:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-13 21:44:04       20 阅读

热门阅读

  1. 超详细Python教程——迭代器和生成器综合例子

    2024-06-13 21:44:04       9 阅读
  2. C 运算符优先级

    2024-06-13 21:44:04       9 阅读
  3. windows执行定时任务

    2024-06-13 21:44:04       8 阅读
  4. 使用Kube-Bench对Kubernetes进行安全检测

    2024-06-13 21:44:04       11 阅读
  5. PyQt5 强制退出进程

    2024-06-13 21:44:04       10 阅读
  6. jquery.PrintArea.js 设置不打印

    2024-06-13 21:44:04       11 阅读
  7. Linux 和 分区

    2024-06-13 21:44:04       11 阅读
  8. node express配置redis

    2024-06-13 21:44:04       8 阅读