源码编译安装LAMP

LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP(或Perl、Python)网页编程语言。本章将以源码编译的方式搭建LAMP环境,能够满足企业定制化的需求。
在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和MySQL的安装并没有严格的顺序;而PHP环境的安装一般放到最后,负责沟通Web服务器和数据库系统以协同工作。

一:Apache网站服务基础

主要特点

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

1.1:安装httpd服务器

在配置Apache网站服务之前,需要正确安装好httpd服务器软件。httpd服务器的安装可以选用RPM安装、源码编译安装这两种方式,前者相对比较简单、快速,但是在功能上存在一定的局限性。在实际的生产环境中,使用源码编译安装的方式要更加普遍

1:准备工作

为了避免发生端口冲突、程序冲突等现象,建议卸载使用RPM方式安装的htpd。httpd服务编译安装时需要依赖apr-util-devel、pcre-devel等软件,因此在htpd编译安装之前需要先安装依赖软件。

2:源码编译及安装

(1)解包

[root@localhost ~]# tar zxvf httpd-2.4.25.tar.gz

[root@localhost ~]# cd httpd-2.4.25

(2)配置

[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

  • --prefix:制定程序的安装目录
  • --enable-so:启用动态加载模块DSO的支持,使httpd具备进一步扩展功能的能力
  • --enable-rewrite:启用网页地址重写功能,用于网站优化
  • --enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页
  • --enable-cgi:启用cgi脚本程序支持,扩展网站的应用访问能力

DSO是Dynamic SharedObjects(动态共享目标)的缩写,它是现代Unix派生出来的操作系统都存在着的一种动态连接机制。它提供了一种在运行时将特殊格式的代码,在程序运行需要时,将需要的部分从外存调入内存执行的方法。

 (3)编译及安装

完成配置以后,执行“make”命令进行编译,将源代码转换为可执行的程序;然后执行“make install'”命令完成最后的安装过程;将编译完的httpd程序及相关目录、文件自动复制到预设的安装目录(由配置时的“-prefix'”选项指定)。其中“make”的过程可能会需要较长的时间。

3:确认安装结果

由于指定的安装日录为usr/local/httpd,因此httpd服务的各种程序、模块、帮助文件等都将复制到此目录下。

在安装后的usr/local/httpd目录下包含httpd服务相关的各种子目录,主要子目录
的用途如下。

  • usr/local/httpd/bin:存放httpd服务的各种可执行程序文件,包括主程序htpd、服务控制工具apachectl等。
  • usr/local/httpd/conf:存放httpd服务的各种配置文件,包括主配置文件httpd.conf、
  • 增强配置子目录extra等。
  • usr/local/httpd/htdocs:存放网页文档,包括默认首页文件index.html等。
  • usr/local/httpd/logs:存放htpd服务的日志文件。
  • usr/local/httpd/modules:存放htpd服务的各种模块文件。
  • usr/local/httpd/.cgi-bin:存放各种CGl程序文件。

4:优化执行路径

[root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin

[root@localhost ~]# httpd -v

Server version: Apache/2.4.25 (Unix)

Server built:   Jun  6 2022 20:42:04

5:添加httpd系统服务

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

[root@localhost ~]# cd /lib/systemd/system

[root@localhost 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

ExecReload= /bin/kill -HUP $MAINPID

[Install]

WantedBy=multi-user.target

After=network.target。Before/After:要是一个服务 Before 另一个服务,那么在并行启动时(Systemd 总是用进程 0 并行启动所有东西,然后通过这两个标记来二次等待排序),那另一个服务这时就会等这个服务先启动并返回状态,注意是先启动而不是启动成功,因为失败也是一种状态,一定要成功才启动另一个服务是通过依赖关系定义的。反之 After 亦然。After=network.target 指的是后于network服务启动。

Type=forking。服务的启动方式,有fork方式和simple方式。forking的方式在启动程序后会调用 fork() 函数,把必要的通信频道都设置好之后父进程退出,留下守护精灵的子进程。你要是使用的这种方式,最好也指定下 PIDFILE=,不要让 Systemd 去猜,非要猜也可以,设置 GuessMainPID 为 yes。

ExecReload= /bin/kill -HUP $MAINPID。$ MAINPID是服务的systemd变量,它指向主应用程序的PID

WantedBy=multi-user.target。指定运行级别

[root@localhost system]# systemctl daemon-reload

[root@localhost system]# systemctl enable httpd.service

[root@localhost system]# systemctl start httpd

[root@localhost system]# netstat -anpt | grep httpd

二:httpd服务器的基本配置 

2.1:Web站点的部署过程

1:确定网站名称、IP地址

若要向Internet中发布一个Web站点,需要申请一个合法的互联网IP地址,并向DNS服务提供商注册一个完整的网站名称。在企业内部网络中,这些信息可以自行设置。例如Web主机的P地址为173.17.17.11,网站名称为www.wind.com。
若要在客户机的浏览器中通过地址www.wind.com来访问此Web站点,还应该有可用的DNS域名服务。例如,客户机所使用的DNS服务器应能够将wW.wind.com解析为1P地址173.17.17.11。
在Web服务器本机中,将P地址设置为173.17.17.11;将主机名称设置为www.wind.com;并修改/etc/hosts文件,添加相应的映射记录以提高本地解析速度。

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

 2:配置并启动httpd服务

(1)配置httpd服务

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

修改httpd.conf文件的配置内容后,建议使用带“-t”选项的apachect!命令对配置内容进行语法检查(或使用“httpd-t”命令)。如果没有语法错误,将会显示“Syntax OK"的信息,否则需要根据错误提示信息来修正配置。

(2)启动httpd服务

使用systemct!命令启动httpd服务。正常启动httpd服务以后,默认将监听TCP协议的80端口。

[root@www~]#systemctl start httpd
[root@www~]#netstat -anpt grep httpd

3:部署网页文档 

对于新编译安装的httpd服务,网站根目录位于usr/local/httpd/htdocs下,需要将Web站点的网页文档复制或上传到此目录下。httpd服务器默认己提供了一个名为index.html的测试网页(可显示字串“It works!”),作为访问网站时的默认首页。

[root@www~]#cat /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>

4:在客户机中访问Web站点 

在客户机的网页浏览器中,通过域名或P地址访问httpd服务器,将可以看到Web站点的页面内容。若使用的是httpd服务默认的首页,则页面会显示“It works!”,表示httpd服务已经正常运作。

5:查看Web站点的访问情况

httpd服务器使用了两种类型的日志:访问日志和错误日志。这两种日志的文件名分别为access_.Iog和error__Ilog,均位于usr/local/httpd/logs目录下。
通过查看访问日志文件access_log,可以及时了解Web站点的访问情况。访问日志中的每一行对应一条访问记录,记录了客户机的P地址、访问服务器的日期和时间、请求的网页对象等信息。

2.2:httpd.conf配置文件

主配置文件httpd.conf由注释行、设置行两部分内容组成。与大多数Linux配置文件一样,注释性的文字以“#”开始,包含了对相关配置内容进行的说明和解释。除了注释行和空行以外的内容即设置行,构成了Web服务的有效配置。根据配置所作用的范围不同,设置行又可分为全局配置、区域配置

1:全局配置项

全局配置决定htpd服务器的全局运行参数,使用“关键字值”的配置格式。例如,配置网站名称时使用的“ServerName www.wind.com”,其中“ServerName”为配置关键字,而www.wind.com”为对应的值。
每一条全局配置都是一项独立的配置,不需要包含在其他任务区域中。以下列出了httpd.conf文件中最常用的一些全局配置项。

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

以上配置项是httpd.conf文件中主要的全局配置项。

2:区域配置项

除了全局配置项以外,httpd.conf文件中的大多数配置是包括在区域中的。区域配置使用一对组合标记,限定了配置项的作用范围。例如,最常见的目录区域配置的形式如下所示。

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

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

三:MySQL的编译安装

1:准备工作

为了避免发生端口冲突、程序冲突等现象,建议先查询MySQL软件的安装情况,确认没有使用以RPM方式安装的mysql-server、.mysql、MariaDB软件包;否则建议将其卸载。由于MySQL5.5需要cmake编译安装,还需要安装cmake包

[root@www ~]# yum install -y ncurses-devel autoconf

初始化mysql需要autoconf,它是自动化配置脚本生成工具,安装自动化脚本生成工具 

2:源码编译及安装

(1)创建运行用户

[root@www ~]# useradd -M -s /sbin/nologin mysql

(2)解包

[root@www ~]# tar zxf mysql-5.6.36.tar.gz

(3)配置

[root@www ~]# cd mysql-5.6.36

[root@www mysql-5.6.36]# cmake   -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 

-DSYSCONFDIR=/etc      -DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci 

-DWITH_EXTRA_CHARSETS=all

 -DDEFAULT_COLLATION:用于指定数据集如何排序,以及字符串的比对规则

 (4)编译并安装

[root@www mysql-5.6.36]# make && make install

 3:安装后的其他调整

(1)对数据库目录进行权限设置

[root@www mysql-5.6.36]# chown -R mysql:mysql /usr/local/mysql

2)建立配置文件

[root@www mysql-5.6.36]# rm -rf /etc/my.cnf

[root@www mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf

备注:系统原来已经有这个文件了,该文件是由mariadb-libs包生成的

(3)初始化数据库

[root@www mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

(4)设置环境变量

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

[root@www mysql-5.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@localhost mysql-5.6.36]# chkconfig --add mysqld

[root@localhost mysql-5.6.36]# chkconfig mysqld on

[root@localhost mysql-5.6.36]# systemctl start mysqld

[root@www mysql-5.6.36]# netstat -anpt | grep mysqld

 MySQL服务器默认通过TCP3306端口提供服务。通过编辑/etc/my.cnf配置文件中[mysqld]配置段的“pot=3306”行,可以更改监听端口。
经过安装后的初始化过程,MySQL数据库的默认管理员用户名为“oot”,密码为给定的随机密码。以oot用户登录本机的小ySQL数据库,可以执行以下操作。

[root@www ~]# mysql -u root -p

注意:

此时的mysql是空密码

mysql>set password =password('123456');

mysql>EXIT

[root@www ~]#mysql -u root -p123456

四:构建PHP运行环境 

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

4.1:安装PHP软件包

1:准备工作

为了避免发生程序冲突等现象,建议先将RPM方式安装的PHP及相关依赖包(如果已存在)卸载。例如,根据实际安装情况可卸载php、php-cli、php-ldap、php-common、php-mysql等。另外,需要从光盘中安装zib-devel、libxml2-devel等依赖包。

2:安装扩展工具库

在实际企业应用中,一部分基于PHP开发的Wb应用系统会需要额外的扩展工具,如数据加密工具libmcrypt、mhash、mcrypt等(可以从站点htp://sourceforge.net下载)。安装php软件包之前,应先安装好这些扩展工具程序。也可以使用yum方式安装

3:编译安装PHP

(1)解包

[root@www ~]# tar zxf php-5.5.38.tar.gz

[root@www ~]# cd php-5.5.38

(2)配置

[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

在定制PHP的配置选项时,最关键的是要指定httpd、mysqld的安装路径,以便添加相关支持设置,使LAMP各组件协同工作。除此之外,还可以指定安装路径,启用多字节支持、加密扩展支持等

  • -prefix:指定将PHP程序安装到哪个目录下,如usr/local/php5
  • -with-mcrypt:加载数据加密等扩展工具支持。
  • -with-apxs2:设置Apache HTTP Server提供的apxS模块支持程序的文件位置。
  • -with-mysql::设置小ySQL数据库服务程序的安装位置。
  • -with-mysqli::添加MySQL扩展支持。
  • -with-config-file-path:设置PHP的配置文件php.ini将要存放的位置。
  • -enable-mbstring:启用多字节字符串功能,以便支持中文等代码。

(3)编译及安装

4.2:设置LAMP组件环境

设置LAMP组件环境,主要包括对PHP的配置文件php.ini、Apache的配置文件httpd.conf的调整。前者用来确定PHP的运行参数,后者用来加载libphp5.so模块,以便支持PHP网页。

1:php.ini配置调整

1php.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 ##去掉前面的注释

 

(2)添加 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配置调整 

要使httpd服务器支持PHP页面解析功能,需通过LoadModule配置项加载PHP程序的模块文件,并通过AddType配置项添加对“php”类型网页文件的支持。除此以外,还应修改Directorylndex配置行,添加index.php配置项,以识别常见的PHP首页文件。

[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

在上述配置内容中,LoadModule行应该会在安装PHP的过程中自动添加,其中的“php5_module”表示模块名称;“modules/libphp5.so"”表示模块文件位置。而AddType行需要手动添加,DirectoryIndex行在原有基础上对其进行修改即可。

4.3:部署phpMyAdmin系统

phpMyAdmin是一个使用PHP语言编写,用来管理MySQL数据库的Web应用系统。通过该套件提供的网页界面,即便是对SQL语句不太熟悉的人,也能够非常容易地对MySQL数据库进行管理和维护。
phpMyAdmin的源码包可以从其官方站点http:w.phpmyadmin.net下载。

1.解包并复制到网站目录

对于大部分PP应用系统,只需要解包后复制到网站目录下即可完成部署,之后再根据需要调整配置,或者访问安装页面以完成进一步的安装。例如,若要将phpMyAdmin套件部署到网站根目录下,以便通过站点http://www.wind.com/php/MyAdmin/访问。

[root@www ~]# tar zxf phpMyAdmin-4.7.2-all-languages.tar.gz

[root@www ~]# mv phpMyAdmin-4.7.2-all-languages/ /usr/local/httpd/htdocs/phpMyAdmin

2:建立配置文件 config.inc.php

将php小yAdmin套件复制到网站目录以后,还需要创建配置文件方可正常使用。默认提供的样例配置文件为config.sample.inc.php,需参照该文件内容建立configi.inc.php配置文件。查找配置文件中的“blowfish_secret”行,默认已经设置了一个短语密钥(此密钥用于网页c0oke认证,不需要用户记亿),可以根据需要自行修改。

[root@www ~]# cd /usr/local/httpd/htdocs/phpMyAdmin

[root@www phpMyAdmin]# cp config.sample.inc.php config.inc.php

 3:访问 phpMyAdmin Web 管理界面

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值