源码编译构建LAMP

一、Apache网站服务基础

        1:安装httpd服务器

//关闭防火墙
systemctl stop firewalld 或者永久关闭 systemctl disable firewalld
//selinux也关闭
setenforce 0 或者 vim/etc/sysconfig/selinux
SELINUX=(更改为)disabled

(1)准备工作

//先检查有没有下载httpd服务,有卸载
[root@localhost ~]# rpm -qa httpd
//yum下载httpd相关的软件
[root@localhost ~]# yum install -y apr-util-devel pcre-devel gcc*

(2)源码编译及安装

将下载获得的 httpd 源码包解压并释放到/usr/src 目录下,且切换到展开后的源码目录中

[root@localhost ~]# tar zxvf httpd-2.4.25.tar.gz -c /usr/src
[root@localhost ~l# cd /usr/src/httpd-2.4.25/

//配置,,根据服务器的实际应用需要,可以灵活设置不同的定制选项,如指定安装路径、启用字符集支持等
//获知可用的各种配置选项及其含义./configure --help
[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
  • --prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd
  • --enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力
  • --enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护
  • --enable-charset-lite:启用字符集支持,以便支持使用各种字符集编码的网页
  • --enable-cgi:启用 CGI脚本程序支持,便于扩展网站的应用访问能力
//完成配置以后,执行“make”命令进行编译,将源代码转换为可执行的程序;然后执行“make instal"命令完成最后的安装过程
[root@localhost ~l# make && make install

(3)确认安装结果

[root@localhost ~]# ls /usr/local/httpd
bin  cgi-bin  error  icons  logs manual
build conf  htdocs  include man  modules
  • /usr/local/httpd/bin:存放 httpd 服务的各种可执行程序文件,包括主程序 httpd、服务控制工具 apachectl 等
  • /usr/local/httpd/conf:存放 httpd 服务的各种配置文件,包括主配置文件 httpd.conf、增强配置子目录 extra 等
  • /usr/local/httpd/htdocs:存放网页文档,包括默认首页文件 index.htm 等
  • /usr/local/httpd/logs:存放 httpd 服务的日志文件
  • /usr/local/httpd/module::存放 httpd 服务的各种模块文件
  • /usr/local/httpd/cgi-bin:存放各种 CG| 程序文件

(4)优化执行路径

通过源码编译安装的 httpd 服务,程序路径并不在系统默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接

[root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin
//这样,在执行相关命令时就不用输入冗长的路径了,执行“httpd-v"命令(用于查看程序版本),相当于执行“/usr/local/httpd/bin/httpd-v”命令
[root@localhost ~]# httpd-v

//可以启动apach
[root@localhost ~]# apachectl start
[root@localhost ~]# apachectl stop
//可能会出现提示 AH00558
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf,找到ServerName将注释符去掉

(5)添加httpd服务

在/ib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,用于控制由 Systemd 管理或监控的 httpd 服务

[root@localhost ~]#cd /lib/systemd/system/
[root@locahost system]#vim httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target

//重启一下system
[root@localhost system]# systemctl daemon-reload
[root@localhost system]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to/usr/lib/systemd/system/httpd.service
[root@localhost system]# systemctl is-enabled httpd.service
enable

二、http服务器的基本配置

1:web站点的部署过程

(1)确定网站名称、IP地址

例如 Web 主机的 IP 地址为 173.17.17.11,网站名称为 www.kgc.com

若要在客户机的浏览器中通过地址 www.kgc.com 来访问此 Web 站点,还应该有可用的 DNS 域名服务

客户机所使用的 DNS 服务器应能够将 www.kgc.com 解析为IP 地址 173.17.17.11

在 Web 服务器本机中,将|P 地址设置为 173.17.17.11;将主机名称设置为www.kgc.com;并修改/etc/hosts 文件,添加相应的映射记录以提高本地解析速度

[root@localhost ~]# hostname www.kgc.com
[root@localhost ~]# vim /etc/hostname
www.kgc.com
[root@localhost ~]# vim /etc/hosts
173.17.17.11     www.kgc.com
[root@localhost ~]# bash
[root@www ~]#

(2)配置并启动httpd服务

        编辑 httpd 服务的主配置文件 httpd.conf,查找配置项“ServerName”,在附近添加-行内容“ServiceName www.kgc.com”,用于设置网站名称

[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
ServerName    www.kgc.com

[root@localhost ~]# httpd-t
显示Syntax OK即可

//启动httpd服务
[root@www ~]# systemctl start httpd
//查看httpd状态
[root@www ~]# netstat -anpt | grep httpd

(3)部署网页文档,客户端访问

//对于新编译安装的 httpd 服务,网站根目录位于/usr/local/httpd/htdocs 下,需要将Web 站点的网页文档复制或上传到此目录下
[root@www ~]# cat /usr/local/httpd/htdocs/index.html
<html><body><h1>lt works!</h1></body></html>
//在客户机的网页浏览器中,通过域名或 IP 地址访问 httpd 服务器,将可以看到 Web站点的页面内容。
若使用的是 httpd 服务默认的首页,则页面会显示“t works!”,表示httpd 服务已经正常运作

(4)查看web站点的访问情况

httpd 服务器使用了两种类型的日志:访问日志和错误日志,这两种日志的文件名分别为 access_log 和 error_log,均于/usr/local/httpd/logs 目录下

[root@www ~]# tail /usr/local/httpd/logs/access_log
[root@www ~]# tail /usr/local/httpd/logs/error_log

2:httpd.conf配置文件

(1)全局配置项

        全局配置决定 httpd 服务器的全局运行参数,使用“关键字 值”的配置格式,每一条全局配置都是一项独立的配置,不需要包含在其他任务区域中

  • ServerRoot: 设置 httpd 服务器的根目录,该目录下包括了运行 Web 站点必需的子目录和文件。默认的根目录为/usr/ocal/httpd,与 httpd 的安装目录相同。在httpd.conf配置文件中,如果指定目录或文件位置时不使用绝对路径,则目录或文件位置都认为是在服务器的根目录下
  • Listen:设置 httpd 服务器监听的网络端口号,默认为 80
  • User:设置运行 httpd 进程时的用户身份,默认为 daemon
  • Include:包含另一个配置文件的内容,可以实现将一些特殊功能的配置放到一个单独的文件中,再使用 Include 配置项将其包含到 httpd.conf 文件中,这样便于独立进行配置功能的维护而不影响主配置文件
  • AddDefaultCharset: 设置站点中的网页默认使用的字符集编码,如 UTF-8、gb2312
  • PidFile: 设置用于保存 httpd 进程号(PID)的文件,默认保存地址为 logs/httpd.pidlogs 目录位于 Apache 的服务器根目录下
  • CustomLog:设置访问日志文件的路径、日志类型,默认路径为logs/access log使用的类型为 common(通用格式)
  • LogLevel:设置记录日志的级别,默认级别为warn(警告)
  • ErrorLog:设置错误日志文件的路径,默认路径为logs/error_log
  • ServerName:设置 Web 站点的完整主机名(主机名+域名)。DocumentRoot:设置网站根目录,即网页文档在系统中的实际存放路径。此配置项比较容易和 ServerRoot 混淆,需要格外注意。DirectoryIndex:设置网站的默认索引页(首页),可以设置多个首页文件,以空格分开,默认的首页文件为index.html
  • Serverdmin:设置 httpd 服务器的管理员 E-mai 地址,可以通过此 E-mai 地址及时联系 Web 站点的管理员
  • Group:设置运行 httpd 进程时的组身份,默认为daemon

(2)区域配置项

除了全局配置项以外,httpd.conf 文件中的大多数配置是包括在区域中的。区域配置使用一对组合标记,限定了配置项的作用范围

<Directory />    //定义""目录区域的开始
Options FollowSymLinks    //控制选项,允许使用符号链接
AllowOverride None        //不允许隐含控制文件中的覆盖配置
Require all denied        //禁止任何人访问此区域
</Directory>     //定义"/"目录区域的结束

在以上区域定义中,设置了一个根目录的区域配置,其中添加的访问控制相关配置只对 httpd 服务的根目录有效,而不会作用于全局或其他目录区域

三、MySQL的编译安装

(1)准备工作

        为了避免发生端口冲突、程序冲突等现象,建议先查询 MySQL软件的安装情况,确认没有使用以 RPM 方式安装的 mysql-server、mysql、MariaDB 软件包

[root@www ~]# rpm -q mysgl-server mysq!
未安装软件包 mysql-server
未安装软件包 mysql
[root@www ~l# yum install -y ncurses-devel

//MySQL 5.5需要 cmake 编译安装,所以先安装 cmake 包
[root@www ~]# tar zxf cmake-2.8.6.tar.gz
[root@www ~]# cd cmake-2.8.6
[root@www cmake-2.8.6]# ./configure
[root@www cmake-2.8.6]# gmake && gmake install

(2)源码编译及安装

        为了加强数据库服务的权限控制,建议使用专门的运行用户,如mysql。此用户不需要直接登录到系统,可以不创建宿主文件夹

//创建运行用户
[root@www ~]# groupadd mysql
[root@www ~]# useradd -M -s /sbin/nologin mysql -g mysql

//解包
//将下载的 MySQL 源码包解压,释放到/usr/src 日录下,并切换到展开后的源码
[root@www ~]# tar zxf mysql-5.6.36.tar.gz -C /usr/src
[root@www ~]# cd /usr/srclmysql-5.6.36

//配置
在内容丰富、结构庞大的企业网站平台中,可能会用到多种字符集的网页,相应地数据库系统也应该支持不同的字符集编码。
在配置过程中,可以将默认使用的字符集设置为 utf8,并添加其他字符集的支持
[root@www mysql-5.6.36] cmake-DCMAKE_INSTALL_PREFIX=/usr/local/mysql-DSYSCONFDIR=/etC-DDEFAULTCHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci-DWITH_EXTRA_CHARSETS=all

//编译并安装
[root@www mysq-5.6.36]# make && make install
    • -DCMAKE INSTALL PREFIX:指定将 MySQL 数据库程序安装到某目录下,如目录/usr/local/mysql
    • -DSYSCONFDIR:指定初始化参数文件目录
    • -DDEFAULT CHARSET:指定默认使用的字符集编码,如 utf8
    • -DDEFAULT COLLATION:指定默认使用的字符集校对规则,utf8 general ci 是适用于 UTF-8 字符集的通用规则
    • -DWITH EXTRA CHARSETS:指定额外支持的其他字符集编码

(3)安装后其他调整

//对数据库目录进行权限设置
[root@www mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql

//建立配置文件
[root@www mysql-5.6.36]# rm -rf /etc/my.cnf
//如果原来 etc 文件夹下有 my.cnf 文件可以删除
[root@www mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf

//初始化数据库
为了能够正常使用 MySQL数据库系统,应以运行用户 mysql的身份执行初始化脚本 mysql install db,指定数据存放目录等
[root@www mysql-5.6.36]# /usr/local/mysql/scripts/mysql install db--user=mysql --basedir=/usr/local/mysgl -datadir=/usr/local/mysql/data/

//设置环境变量
[root@www mysql-5.6.36]# echo "PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
[root@www mysql-5.6.36]# ./etc/profile        //立即生效

(4)启动并访问MySQL服务

        MySQL源码包中提供的服务控制脚本,使用该脚本即可控制 MSQL 服务。找到support-files 文件夹下的 mysql.server 脚本文件,将其复制到/etc/rc.d/init.d 目录下,并改名为 mysqld,然后再设置执行权限

[root@www mysq15.6.36]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@www mysql-5.6.36]# chmod +x /etc/rc.d/init.d/mysqld
[root@www mysql-5.6.36]# /etc/init.d/mysqld start
[root@www mysql-5.6.36]# /etc/init.d/mysqld status
[root@www mysq1-5.6.36]# netstat -anpt | grep mysqld
tcp6    0    0 :::3306    :::*    LISTEN    58860/mysql
经过安装后的初始化过程,MySQL数据库的默认管理员用户名为“root”,密码为给定的随机密码,以 root用户登录本机的 MySQL 数据库
[root@www ~]# mysql -u root -p
mysql>set password =password('123456');
Query OK, 0 rows affected (0.00 sec)
mysql>EXIT        //退出“mysql>”操作环境
Bye
[root@www ~]#mysql -u root -p123456

四、构建PHP运行环境

        PHP 即“Hypertext Preprocessor”(超级文本预处理语言)的缩写,是一种服务器端的 HTML 嵌入式脚本语言,PHP 的语法混合了 C、Java、Per 及部分自创的新语法,拥有更好的网页执行速度,更重要的是 PHP 支持绝大多数流行的数据库,在数据库层面的操作功能十分强大,而且能够支持 UNIX、Windows、Linux 等多种操作系统

        为了避免发生程序冲突等现象,建议先将 RPM 方式安装的 PHP 及相关依赖包(如果已存在)卸载

[root@www ~]# yum -y install zlib-devel libxml2 libxml2-devel lxz-devel

//安装拓展工具库
三个扩展工具库,可以设置好阿里的yum仓库,用yum安装
yum -y install libmcrypt libmcrypt-devel mcrypt mhash

//下载PHP源码包解压并切换展开后的源码目录
[root@www ~]# tar zxf php-5.5.38.tar.gz
[root@www ~]# cd php-5.5.38

//配置
[root@www php-5.5.38]# ./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 
[root@www php-5.5.38]# ./configure --prefix=/usr/local/php5 --with-mcrypt --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-config-file-path=/usr/local/php5 --enable-mbstring

//备注:不能用192.168.10.101连接,想用主机IP连接需要在安装php时指定mysql函数集为mysqlnd
--with-mysql=mysqlnd 
--with-mysqli=mysqlnd
--prefix:指定将 PHP 程序安装到哪个目录下,如/usr/local/php5
--with-mcrypt:加载数据加密等扩展工具支持
--with-apxs2:设置 Apache HTTP Server 提供的 apxs 模块支持程序的文件位置--with-mysql:设置 MySQL 数据库服务程序的安装位置
--with-apxs2=/usr/local/httpd/bin/apxs 
//整合apache,apxs功能是使用mod_so中的LoadModule指令,加载指定模块到apache,要求apache要打开SO模块 
--with-mysqli:添加 MySQL 扩展支持,
--with-config-file-path:设置 PHP 的配置文件 php.ini 将要存放的位置
--enable-mbstring:启用多字节字符串功能,以便支持中文等代码

//编译及安装
[root@www php-5.5.38]# make && make install            //时间很长

五、构建PHP运行环境

1:php.ini 配置调整

//php.ini 的建立及基本设置
[root@www php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini
[root@www php-5.5.38]# vim /usr/local/php5/php.ini
default_charset = "UTF-8"         #去掉前面的注释
file_uploads = On 
upload_max_filesize = 2M 
max_file_uploads = 20 
post_max_size = 8M 
short_open_tag = On         ##修改值
extension=php_mysqli.dll        ##去掉前面的注释

//添加 ZendGuardLoader 优化模块
[root@www~]#tar zxf zend-loader-php5.5-linux-x86_64_update1.tar.gz
[root@www~]#cd zend-loader-php5.5-linux-x86_64/ 
[root@www zend-loader-php5.5-linux-x86_64]#cp ZendGuardLoader.so /usr/local/php5/lib/php
[root@www ~]# vim /usr/local/php5/php.ini 
在[PHP]下面添加:

[PHP]
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so 
zend_loader.enable=1

2:httpd.conf 配置调整

[root@www ~]# vim /usr/local/httpd/conf/httpd.conf
Listen *:80 
…… //省略部分内容 
看有没有LoadModule php5_module modules/libphp5.so 

<IfModule mime_module>
AddType application/x-httpd-php .php 
</IfModule>

DirectoryIndex index.html index.php
#Include conf/extra/httpd-vhosts.conf

[root@www ~]# apachectl -t 
Syntax OK 
[root@www ~]# systemctl restart httpd

五.5、测试 LAMP 协同工作

1:测试 PHP 网页能否正确显示

[root@www ~]# vim /usr/local/httpd/htdocs/test1.php 
<?php 
phpinfo( ); 
?>

2:测试 PHP 网页能否访问 MySQL 数据库

[root@www ~]# vim /usr/local/httpd/htdocs/test2.php 
<?php 
$link=mysqli_connect('localhost','root','123456'); 
if($link) echo "恭喜你,数据库连接成功啦!!"; 
mysqli_close($link); 
?> 

备注:对数据库的连接授权,授权后可以使用主机名连接
mysql> grant all on *.* to root@'www.benet.com' identified by '123456';
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值