赞
踩
LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站服务器、MySQL数据库服务器、PHP(或Perl、Python)网页编程语言。本章将以源码编译的方式搭建LAMP环境,能够满足企业定制化的需求。
在构建LAMP平台时,各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和MySQL的安装并没有严格的顺序;而PHP环境的安装一般放到最后,负责沟通Web服务器和数据库系统以协同工作。
主要特点
在配置Apache网站服务之前,需要正确安装好httpd服务器软件。httpd服务器的安装可以选用RPM安装、源码编译安装这两种方式,前者相对比较简单、快速,但是在功能上存在一定的局限性。在实际的生产环境中,使用源码编译安装的方式要更加普遍
为了避免发生端口冲突、程序冲突等现象,建议卸载使用RPM方式安装的htpd。httpd服务编译安装时需要依赖apr-util-devel、pcre-devel等软件,因此在htpd编译安装之前需要先安装依赖软件。
(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
DSO是Dynamic SharedObjects(动态共享目标)的缩写,它是现代Unix派生出来的操作系统都存在着的一种动态连接机制。它提供了一种在运行时将特殊格式的代码,在程序运行需要时,将需要的部分从外存调入内存执行的方法。
(3)编译及安装
完成配置以后,执行“make”命令进行编译,将源代码转换为可执行的程序;然后执行“make install'”命令完成最后的安装过程;将编译完的httpd程序及相关目录、文件自动复制到预设的安装目录(由配置时的“-prefix'”选项指定)。其中“make”的过程可能会需要较长的时间。
由于指定的安装日录为usr/local/httpd,因此httpd服务的各种程序、模块、帮助文件等都将复制到此目录下。
在安装后的usr/local/httpd目录下包含httpd服务相关的各种子目录,主要子目录
的用途如下。
[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
在/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
若要向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]#
(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
对于新编译安装的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>
在客户机的网页浏览器中,通过域名或P地址访问httpd服务器,将可以看到Web站点的页面内容。若使用的是httpd服务默认的首页,则页面会显示“It works!”,表示httpd服务已经正常运作。
httpd服务器使用了两种类型的日志:访问日志和错误日志。这两种日志的文件名分别为access_.Iog和error__Ilog,均位于usr/local/httpd/logs目录下。
通过查看访问日志文件access_log,可以及时了解Web站点的访问情况。访问日志中的每一行对应一条访问记录,记录了客户机的P地址、访问服务器的日期和时间、请求的网页对象等信息。
主配置文件httpd.conf由注释行、设置行两部分内容组成。与大多数Linux配置文件一样,注释性的文字以“#”开始,包含了对相关配置内容进行的说明和解释。除了注释行和空行以外的内容即设置行,构成了Web服务的有效配置。根据配置所作用的范围不同,设置行又可分为全局配置、区域配置
全局配置决定htpd服务器的全局运行参数,使用“关键字值”的配置格式。例如,配置网站名称时使用的“ServerName www.wind.com”,其中“ServerName”为配置关键字,而www.wind.com”为对应的值。
每一条全局配置都是一项独立的配置,不需要包含在其他任务区域中。以下列出了httpd.conf文件中最常用的一些全局配置项。
以上配置项是httpd.conf文件中主要的全局配置项。
除了全局配置项以外,httpd.conf文件中的大多数配置是包括在区域中的。区域配置使用一对组合标记,限定了配置项的作用范围。例如,最常见的目录区域配置的形式如下所示。
<Directory> //定义""目录区域的开始
Options FollowSymLinks //控制选项,允许使用符号链接
AllowOverride None //不允许隐含控制文件中的覆盖配置
Require all denied //禁止任何人访问此区域
</Directory> //定义""目录区域的结束
在以上区域定义中,设置了一个根目录的区域配置,其中添加的访问控制相关配置只对htpd服务的根目录有效,而不会作用于全局或其他目录区域。
为了避免发生端口冲突、程序冲突等现象,建议先查询MySQL软件的安装情况,确认没有使用以RPM方式安装的mysql-server、.mysql、MariaDB软件包;否则建议将其卸载。由于MySQL5.5需要cmake编译安装,还需要安装cmake包
[root@www ~]# yum install -y ncurses-devel autoconf
初始化mysql需要autoconf,它是自动化配置脚本生成工具,安装自动化脚本生成工具
(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
(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
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即“Hypertext Preprocessor'”(超级文本预处理语言)的缩写,是一种服务器端的HTML嵌入式脚本语言。PHP的语法混合了C、Java、Perl及部分自创的新语法,拥有更好的网页执行速度,更重要的是PHP支持绝大多数流行的数据库,在数据库层面的操作功能十分强大,而且能够支持UNIX、Windows、Linux等多种操作系统。
为了避免发生程序冲突等现象,建议先将RPM方式安装的PHP及相关依赖包(如果已存在)卸载。例如,根据实际安装情况可卸载php、php-cli、php-ldap、php-common、php-mysql等。另外,需要从光盘中安装zib-devel、libxml2-devel等依赖包。
在实际企业应用中,一部分基于PHP开发的Wb应用系统会需要额外的扩展工具,如数据加密工具libmcrypt、mhash、mcrypt等(可以从站点htp://sourceforge.net下载)。安装php软件包之前,应先安装好这些扩展工具程序。也可以使用yum方式安装
(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各组件协同工作。除此之外,还可以指定安装路径,启用多字节支持、加密扩展支持等
(3)编译及安装
设置LAMP组件环境,主要包括对PHP的配置文件php.ini、Apache的配置文件httpd.conf的调整。前者用来确定PHP的运行参数,后者用来加载libphp5.so模块,以便支持PHP网页。
(1)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 ##去掉前面的注释
(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
要使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行在原有基础上对其进行修改即可。
phpMyAdmin是一个使用PHP语言编写,用来管理MySQL数据库的Web应用系统。通过该套件提供的网页界面,即便是对SQL语句不太熟悉的人,也能够非常容易地对MySQL数据库进行管理和维护。
phpMyAdmin的源码包可以从其官方站点http:w.phpmyadmin.net下载。
对于大部分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
将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 管理界面
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。