LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和 相关软件,能够提供动态 Web 站点服务及其应用开发环境。LAMP 是一个缩写词,具 体包括 Linux 操作系统、Apache 网站服务器、MySQL 数据库服务器、PHP(或 Perl、 Python)网页编程语言。本章将以源码编译的方式搭建 LAMP 环境,能够满足企业定 制化的需求。 在构建 LAMP 平台时,各组件的安装顺序依次为 Linux、Apache、MySQL、PHP。 其中 Apache 和 MySQL 的安装并没有严格的顺序;而 PHP 环境的安装一般放到最后, 负责沟通 Web 服务器和数据库系统以协同工作。
网页浏览服务,在 Web 服务器领域中长期保持着超过半数的份额。Apache 服务器可以运 行在 Linux、UNIX、Windows 等多种操作系统平台中。
Apache 服务器是针对之前出现的若干个 Web 服务器程序进行整合、完善后形成的软件,其名称来源于“A Patchy Server”,意思是“基于原有 Web 服务程序的代码进行修改(补 丁)后形成的服务器程序”。 1995 年, Apache 服务程序发布了 1.0 版本,之后一直由“Apache Group”负责该项目 的管理和维护;直到 1999 年,在“Apache Group”的基础上成立了 Apache 软件基金会 (Apache Software Foundation,ASF)。目前,Apache 项目一直由 ASF 负责管理和维护。 ASF 是非盈利性质的组织,最初只负责“Apache Web”服务器项目的管理,随着 Web 应用需求的不断扩大,ASF 逐渐增加了许多与 Web 技术相关的开源软件项目,因此 Apache 现在不仅仅代表着 Web 服务器,更广泛地代表着 ASF 管理的众多开源软件项目。ASF 基 金会的官方网站是 http://www.apache.org/。 “Apache HTTP Server”是 ASF 旗下著名的软件项目之一,其正式名称是“httpd”,也就 是历史上的 Apache 网站服务器。在后续内容中,若未作特殊说明,使用“Apache”或者“httpd”, 均指的是“Apache HTTP Server”。
1、开放源代码:这是 Apache 服务器的重要特性之一,也是其他特性的基础。 Apache 服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使 用,这充分体现了开源软件的精神。
2、跨平台应用:这个特性得益于 Apache 的源代码开放。Apache 服务器可以运 行在绝大多数软硬件平台上,所有 UNIX 操作系统都可以运行 Apache 服务 器,甚至 Apache 服务器可以良好地运行在大多数 Windows 系统平台中。 Apache 服务器的跨平台特性使其具有被广泛应用的条件。
3、支持各种Web 编程语言:Apache服务器可支持的网页编程语言包括Perl、PHP、 Python、Java 等,甚至微软的 ASP 技术也可以在 Apache 服务器中使用。支 持各种常用的 Web 编程语言使 Apache 具有更广泛的应用领域。
4、模块化设计:Apache 并没有将所有的功能集中在单一的服务程序内部,而是 尽可能地通过标准的模块实现专有的功能,这为 Apache 服务器带来了良好的 扩展性。其他软件开发商可以编写标准的模块程序,从而添加 Apache 本身 并不具有的其他功能。
5、运行非常稳定:Apache 服务器可用于构建具有大负载访问量的 Web 站点,很 多知名的企业网站都使用 Apache 作为 Web 服务软件。
6、良好的安全性:Apache 服务器具有相对较好的安全性,这是开源软件共同具 有的特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序, 为 Apache 的所有使用者提供尽可能安全的服务器程序。
安装Apache所需软件
apr-1.6.2.tar.gz 软件包的作用让apache支持正则表达式 apr-util-1.6.0.tar.gz 实现apache跨平台的软件包 httpd-2.4.29.tar.gz
可以通过xftp软件将3个包传到opt目录下 [root@localhost ~]# cd /opt [root@localhost opt]# tar xf apr-1.6.2.tar.gz [root@localhost opt]# tar xf apr-util-1.6.0.tar.gz [root@localhost opt]# tar xf httpd-2.4.29.tar.bz2
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr [root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util 如果让apache支持跨平台进行使用,需要将俩个软件包挪到apache目录下,让其有这个功能
[root@localhost opt]# yum -y install \ gcc \ gcc-c++ \ make \ pcre-devel \ expat-devel \ perl 注释:gcc \ gcc-c++ \ 就是一个编译器 make \ 把人编写的配置文件变成二进制文件 expat-devel \ perl 这俩个是开发的语音,意思就是让apache支持多种语音 [root@localhost opt]# cd /opt/httpd-2.4.29/ ./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 install
ln -s /usr/local/httpd/conf/httpd.conf /etc/ 注释:这条命令也就是优化路劲,直接在/etc目录下就可以管理,比如现在直接可以vi /etc/httpd.conf ln -s /usr/local/httpd/bin/* /usr/local/bin/ 注释:这条命令就是相对于把apache下面所有命令执行文件,放在/urs/local/bin 的环境变量下,这样任何路径下都可以执行
在/lib/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 //forking服务类型,一般start开启这个服务,后天会有一个守护进行去支撑他,让他持续在线工作 PIDFile=/usr/local/httpd/logs/httpd.pid //进程文件,里面存放着每次开启或者关闭的进程信息 ExecStart= /usr/local/bin/apachectl $OPTIONS 启动文件 ExecrReload= /bin/kill -HUP $MAINPID //重载 [Install] WantedBy=multi-user.target //多用户登录模式
[root@localhost system]# systemctl start httpd.service [root@localhost system]# systemctl enable httpd.service ###开机自启http [root@localhost system]# systemctl is-enabled httpd.service ###检查HTTP单元是否启动
vi /usr/local/httpd/conf/httpd.conf ServerName www.51xit.top:80 ###更改下 systemctl restart httpd####重启httpd服务
netstat -anpt | grep 80 看能不能过滤到80端口或者直接用浏览器直接输入虚拟机的ip看还能否进行访问
#######如果是直接安装mysql数据库请先安装下面的环境,如已经安装跳过下面一步 yum -y install gcc gcc-c++ \ make pcre-devel expat-devel perl 注释:gcc gcc-c++ \ 编译器 ,pcre-devel \ 让apache支持正则表达式 expat-devel \ perl 让apache支持开发的语言,也就是支持多种语音
yun -y install ncurses-devel autoconf cmake 注释:ncurses-devel 计算机语言,指的是提供字符终端处理库,每个开发的语言都会有一个专门的数据函数库,如果没有这个库没有意思了 tar xzcf mysql-5.6.26.tar.gz 解压mysql数据包 cd mysql-5.6.26 切到解压的目录下
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 指定安装路径 -DDEFAULT_CHARSET=utf8 默认字符集,能够识别简体中文 -DDEFAULT_COLLATION=utf8_general_ci 通用型的字符控制,也就是不规矩的中文 -DEXRRA_CHARSETS=all 支持所有字符 -DSYSCONFIDIR=/etc 系统配置文件放在/etc目录下 -DMYSQL_DATADIR=/home/mysql 数据目录 -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock .sock通讯问津,用于连接数据库 注释:解压过目录之后,还未cmake的时候,在/etc目录下就有my.cnf配置文件,所有cmake之后要把之前的配置的文件覆盖掉,否则会有冲突 make&&make install [root@localhost mysql-5.6.26]# cp support-files/my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? yes
注释:在扩展目录下有一个支持文件support-files,在下面有一个默认配置模板,把其拷贝到/etc目录下,将之前的/etc/my.cnf的配置文件复制掉 [root@localhost mysql-5.6.26]# cp support-files/mysql.server /etc/init.d/mysqld 注释:在将扩展目录下的支持文件下的mysql服务移到/etc/init.d/目录下,让其便于service管理
[root@localhost mysql-5.6.26]# ls /etc/init.d 注释:发现没有执行的权限
[root@localhost mysql-5.6.26]# chmod 755 /etc/init.d/mysqld 授权 [root@localhost init.d]#cd /etc/init.d [root@localhost init.d]# chkconfig --list 发现在35级别并没有mysqld这个服务
[root@localhost init.d]# chkconfig --add mysqld 添加该服务 [root@localhost init.d]# chkconfig --list 查询下列表,发现mysqld已经在其中,并且35级别都是开启,这就是相当于设置了开机自启
[root@localhost init.d]# echo “PATH=$PATH:/usr/loacl/mysql/bin” >> /etc/profile 注释:命令让系统识别的几种方式:1.建立软链接,建立在/usr/local/bin或/usr/bin/目录下; 2.cp到系统环境(bin)目录下;3.环境变量的设置,而且在当前环境下不添加环境变量,系统都无法使用mysql命令 [root@localhost init.d]# source /etc/profile 刷新一下配置文件 [root@localhost init.d]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/loacl/mysql/bin [root@localhost mysql-5.6.26]# useradd -s /sbin/nologin mysql 注释:创建一个mysql程序用户,并且指定环境不能远程登录,另外创建账户之后会在普通用户的家目录/home建立一个mysql的家目录
[root@localhost mysql-5.6.26]# chown -R mysql:mysql /usr/local/mysql
[root@localhost mysql-5.6.26]# vi /etc/init.d/mysqld 注释:在主配置文件中添加工作和数据目录,指明路径
[root@localhost mysql-5.6.26]# service mysqld start [root@localhost mysql-5.6.26]# netstat -anpt |grep 3306 [root@localhost bin]# mysqladmin -uroot -p password “abc123”
cd /opt tar jxvf php-7.1.10.tar.bz2 cd php-7.1.10/
[root@localhost php-7.1.10]# ./configure \ --prefix=/usr/local/php5 \ --with-gd \ --with-zlib \ --with-apxs2=/usr/local/httpd/bin/apxs \ --with-mysql=/usr/local/mysql \ --with-config-file-path=/usr/local/php5 \ --enable-mbstring 注释: [root@localhost php-7.1.10]# ./configure \ --prefix=/usr/local/php5 \ 安装路劲 --with-gd \ 使用之前安装gd库 --with-zlib \ 支持里面的函数库 --with-apxs2=/usr/local/httpd/bin/apxs \ apxs2简单的来说是为apache编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态对象,使之可以用由mod_so提供的Loadmodule 指令在运行时加载到Apache服务器中 (如果不指定之后用页面测试的时候php那个页面出不来) --with-mysql=/usr/local/mysql \ 关联数据库 --with-config-file-path=/usr/local/php5 \ 配置文件的路径 --enable-mbstring 开启mbstring库,能够支持多字节的字符串,处理中文字符串make -j3 make install
[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php5/php.ini 让php的配置文件php.ini,命令能让系统识别 [root@localhost php-7.1.10]# ln -s /usr/local/php5/bin/* /usr/local/bin 在任何路劲下都可以执行该命令
PHP在这不存在启动脚本,它是依赖于apache的启动而启动的,所以让apahce识别到php,那么要在apache的配置文件添加让其支持php处理 [root@localhost php-7.1.10]# vi /etc/httpd.conf
AddType application/x-httpd-php .php 核心进程的请求 AddType application/x-httpd-php-source .phps 基于源进程的请求DirectoryIndex index.php index.html 插入一个index.php的首页类型 [root@localhost php-7.1.10]# httpd -t Syntax OK [root@localhost php-7.1.10]# systemctl restart httpd 凡是修改了配置文件就要重启加载
[root@localhost php-7.1.10]# vi /usr/local/httpd/htdocs/index.php 制作一个网站的首页
<?php phpinfo(); ?>[root@localhost htdocs]# rm -rf index.html 删除之前的网站首页格式,否则会冲突 [root@localhost htdocs]# systemctl restart httpd
网页测试,输入主机ip 20.0.0.27 [root@localhost htdocs]# mysql -uroot -p Enter password:
mysql> create database bbs; 创建一个库 Query OK, 1 row affected (0.00 sec) mysql> grant all on bbs.* to 'bbsuser'@'%' identified by 'admin123'; 注释:允许bbsuser账户上任意网段访问bbs库里面所有的表,密码为admin123 Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; //凡是进行授权的都要用这条命令进行刷新 Query OK, 0 rows affected (0.00 sec)[root@localhost opt]# cd dir_SC_UTF8/ 切到扩展目录 [root@localhost dir_SC_UTF8]#cp -r upload/ /usr/local/httpd/htdocs/bbs 把upload目录下所有的文件目录递归到bbs目录下 [root@localhost dir_SC_UTF8]# cd /usr/local/httpd/htdocs/bbs
[root@localhost bbs]#chown -R daemon ./config [root@localhost bbs]#chown -R daemon ./data/ [root@localhost bbs]#chown -R daemon ./uc_client/ [root@localhost bbs]#chown -R daemon ./uc_server/data/
授权之后就可以去网页进行安装,否则会有报错