LAMP网站架构是目前比较流行的Web框架,该框架包括:Linux操作系统,Apache 网络服务器,MySQL 数据库,Perl 或者Python编程语言,所有组成产品均是开源软件,LMAP具有Web资源丰富、轻量、快速开发等特点,与微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
LAMP平台是目前最为成熟的一种企业网站应用模式,可提供动态Web站点应用及开发环。
LAMP是通过选取 linux系统、API接口、mysql数据库,PHP 、java 、python等各种后台语言的首字母而组成的。
在Linux系统中
apache服务特性:动态交互,包含多个功能模块,支持多种语言
通过API接口进行支持
可以通过接口连接PHP JAVA Python 等各种后台语言
缺点是断电后会丢失数据
所以我们如果想要保持数据持久化,则可以建立数据库 mysql
灵活性,即没有技术上的限制也没有许可证的限制。这允许能够以适合自己的方式灵活的构建和部署应用程序,而不是以正在使用的技术提供商规定的方式。
个性化:因为LAMP组件时开源软件,目前已建立了大量的额外组件和能提供额外功能的模块,开发者能够个性化设置组件和功能以便满足所需要求。
易开发:用LAMP组件开发比较简单,代码通常比较简介,程序员可以较为便捷地修改或者扩展应用程序,同时也给专业程序员提供了各种高级特性。
易应用:大多数主机服务都把基于LAMP的环境作为表中,应用程序不需要编译,可以像拷贝一个应用软件一样在新的主机上部署一个应用程序。
安全:由于时开源软件,大量程序员关注这些软件的开发过程,疑难问题通常能很快修复,不需要昂贵的技术支持合同。经过大量用户和团体组织多年的使用,LAMP技术是安全和稳定的。
成本低廉:因为LAMP组件都是开源软件,遵循GPL协议,可以自由获得和免费使用,极大降低了部署成本。
获取windows共享文件并挂载到mnt目录
[root@lamp ~]# smbclient -L //192.168.181.1/
Sharename Type Comment
--------- ---- -------
LAMP-C7 Disk
[root@lamp ~]# mount.cifs //192.168.181.1/LAMP-C7 /mnt //远程挂载软件包到/mnt目录
[root@lamp ~]# cd /mnt //进入/mnt目录
[root@localhost mnt]# ls
apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip php-5.6.11.tar.bz2
apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2
cronolog-1.6.2-14.el7.x86_64.rpm mysql-5.6.26.tar.gz
[root@lamp mnt]# tar zxvf apr-1.6.2.tar.gz -C /opt/
...省略解压过程
[root@lamp mnt]# tar zxvf apr-util-1.6.0.tar.gz -C /opt/
....省略解压过程
[root@lamp mnt]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt/
....省略解压过程
[root@localhost mnt]# cd /opt
[root@localhost opt]# ls
apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh
[root@lamp opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr
[root@lamp opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
##安装编译工具
[root@lamp opt]# yum -y install \
gcc \ //c语言
gcc-c++ \ //c++语言
make \ //编译工具
pcre-devel \ //pcre语言工具
expat-devel \ //识别标签性语言工具
perl //perl编译器
[root@lamp opt]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \ ##自定义安装路径
> --enable-so \ ##核心功能模块
> --enable-rewrite \ ##重写功能,可以做防盗链操作
> --enable-charset-lite \ ##支持字符集
> --enable-cgi ##公共网关接口(编码的规范)支持所有网站开发语言的格式
............省略配置过程
[root@localhost httpd-2.4.29]# make && make install
...........省略部分内容
[root@localhost /]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
将apache的启动脚本复制到 /etc/init.d 目录中便于系统管理
[root@localhost init.d]# vim httpd
#!/bin/sh
# chkconfig: 35 85 21
# description: Apache is a World Wide Web server
............省略部分内容
----》wq
在httpd文件文首添加备注文件
chkconfig: 35 85 21 //35级别自动运行 第85个启动 第21个关闭
[root@localhost init.d]# chkconfig --add httpd
##将httpd加入到SERVICE管理器中
[root@localhost init.d]# vim /usr/local/httpd/conf/httpd.conf
.......省略部分内容
ServerName www.boke.com:80
Listen 192.168.181.139:80
#Listen 80
.......省略部分内容
-----》wq(保存)
进入配置文件
在行尾模式输入/ServerName,找到:ServerName 把前面的#号注释删除,同时可以把域名更改一下
在行尾模式输入/Listen 查找到80端口监听,关闭IPv6的监听,开启本机地址的监听
为了便于我们的管理,可以给配置文件创建软链接:
[root@localhost init.d]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
同时为了让其中的命令便于系统识别,所以我们可以再创建一个软件接放在/usr/local/bin中,之后我们可以直接使用其中的命令
[root@localhost init.d]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
最后检查一下配置文件的语法正确性
[root@localhost init.d]# httpd -t
Syntax OK
[root@localhost init.d]# systemctl stop firewalld.service
[root@localhost init.d]# setenforce 0
使用service 命令开启服务,同时查看的监听端口
[root@localhost init.d]# service httpd start
[root@localhost init.d]# netstat -ntap | grep 80
tcp 0 0 192.168.181.139:80 0.0.0.0:* LISTEN 34954/httpd
apache服务配置完成
我们在手工编译安装apache中,从安装好源代码包之后,我们一直在对启动脚本和配置文件这两个核心的文件进行设置,启动脚本控制着服务的开启和关闭,配置文件配置的是整个服务的功能。
所有的服务都离不开这两个核心文件。
[root@localhost init.d]# yum install -y ncurses-devel autoconf cmake
[root@localhost mnt]# tar xzvf mysql-5.6.26.tar.gz -C /opt/
.........省略部分内容
[root@localhost mysql-5.6.26]# cd mysql-5.6.26/
[root@lamp mysql-5.6.26]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ ##指定安装路径
-DDEFAULT_CHARSET=utf8 \ ##指定字符集
-DDEFAULT_COLLATION=utf8_general_ci \ ##指定字符集默认
-DEXTRA_CHARSETS=all \ ##指定扩展字符集
-DSYSCONFIDIR=/etc \ ##指定配置文件目录
-DMYSQL_DATADIR=/home/mysql/ \ ##指定数据库里的数据文件
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock ##定义sock文件连接数据库文件
[root@lamp mysql-5.6.26]# make
.........省略部分内容
[root@lamp mysql-5.6.26]# make install
.........省略部分内容
[root@lamp mysql-5.6.26]# cp support-files/my-default.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? yes
[root@lamp mysql-5.6.26]# cp support-files/mysql.server /etc/init.d/mysqld
cp:是否覆盖"/etc/init.d/mysqld"? yes
[root@lamp mysql-5.6.26]# chmod 755 /etc/init.d/mysqld ##授予执行权限
[root@lamp mysql-5.6.26]# chkconfig --add /etc/init.d/mysqld ##将数据库服务添加到管理器中
[root@lamp mysql-5.6.26]# chkconfig mysqld --level 35 on ##开启数据库的3,5运行级别
[root@lamp mysql-5.6.26]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
#启用数据库命令,调用mysql环境变量,追加到系统环境变量中
[root@lamp mysql-5.6.26]# source /etc/profile ##启用系统环境变量
[root@lamp mysql-5.6.26]# echo $PATH ##查看系统环境变量
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
[root@lamp mysql-5.6.26]# useradd -s /sbin/nologin mysql ##创建mysql程序用户,禁止登录数据库
[root@lamp mysql-5.6.26]# chown -R mysql:mysql /usr/local/mysql/ ##给/usr/local/mysql/目录下所有用户提权
[root@lamp mysql-5.6.26]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr/local/mysql --datadir=/home/mysql ##初始化数据库,并指定用户数据信息到指定目录
[root@lamp mysql-5.6.26]# vim /etc/init.d/mysqld ##编辑数据库配置文件
basedir=/usr/local/mysql ##在第46行指定数据库本地路径
datadir=/home/mysql ##在第47行指定数据库存放位置
[root@lamp mysql-5.6.26]# service mysqld start ##开启数据库服务
Starting MySQL. SUCCESS!
[root@lamp mysql-5.6.26]# netstat -anpt | grep 3306 ##查看数据库的监听端口3306
tcp6 0 0 :::3306 :::* LISTEN 90105/mysqld
[root@lamp mysql-5.6.26]# mysqladmin -u root -p password "abc123" ##设定数据库的root用户的密码
Enter passwd:
##此处交互时要求输入的密码时原始密码,因为无原始密码,所以直接按回车
php是一个后台的代码,不是一个服务,所以只有配置文件
[root@lamp ~]# yum -y install \
gd \ ##是php处理图形的扩展名,用于处理、生成图片
libpng \
libpng-devel \ ## 环境包
pcre \
pcre-devel \
libxml2-devel \ ##支持xml标记性语言
libjpeg-devel ##环境包
##安装PHP环境
[root@lamp ~]# cd /mnt
[root@lamp mnt]# tar jxvf php-5.6.11.tar.bz2 -C /opt/ ##解压PHP源码包
...........省略部分内容
[root@lamp mnt]# cd /opt/php-5.6.11/ ##进入/opt/php-5.6.11/目录
[root@lamp php-5.6.11]# ./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 //配置PHP相关组件及关联数据库与httpd的服务
apxs2可以让Apache中的各种功能模块直接提供给apache的服务中进行加载
[root@lamp php-5.6.11]# make ##编译,注意编译完切勿进行测试
[root@lamp php-5.6.11]# make install ##安装
[root@lamp php-5.6.11]# cp php.ini-development /usr/local/php5/php.ini ##复制配置文件到php.ini目录中
[root@lamp php-5.6.11]# ln -s /usr/local/php5/bin/* /usr/local/bin/ ##建立PHP命令软链接便于系统识别
[root@lamp php-5.6.11]# vim /etc/httpd.conf ##编辑httpd配置文件,让apache文件能够识别php的功能模块
##在第256行的DirectoryIndex index.html中在index.html之后添加index.php
255 <IfModule dir_module>
256 DirectoryIndex index.html index.php
257 </IfModule>
##再在后面换行追加以下两行条目让httpd支持源码PHP模块
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
[root@lamp php-5.6.11]# vim /usr/local/httpd/htdocs/index.php //编辑PHP首页文件,写入以下信息
<?php
phpinfo();
?>
[root@lamp php-5.6.11]# service httpd stop
[root@lamp php-5.6.11]# service httpd start
//重启httpd服务,最好别用restart和reload
make 完成后会弹出提醒我们进行测试的语句:
Dont't forget to run 'make test'
因测试时间较长,这里我们选择不进行测试
以上,LAMP架构已搭建完成。
在源IP地址后加入192.168.181.139/index.php就可以登录到指定的PHP首页
首先在mysql数据库中创建一个bbs数据库,用来承载论坛
[root@lamp mnt]# mysql -u root -p
##进入数据库,密码为之前设定的abc23
mysql> create database bbs;
##创建bbs数据库
mysql> GRANT all ON bbs.* TO 'bbsuser'@'192.168.235.137' IDENTIFIED BY 'admin123';
##给bbs中所有的表格提升权限,创建一个管理bbs数据库的用户“bbsuser”,“%”允许从所有终端登录,密码是admin123
mysql> flush privileges;
##刷新数据库
mysql> quit
##退出数据库
[root@lamp php-5.6.11]#cd /mnt
##进入/mnt目录
[root@lamp mnt]# unzip Discuz_X2.5_SC_UTF8.zip -d /opt/Discuz
##解压论坛组件包到/opt目录
[root@lamp mnt]# cp -r /opt/Discuz/upload/ /usr/local/httpd/htdocs/bbs
##复制/opt/Discuz目录里的upload到httpd站点的bbs目录中
[root@lamp mnt]# cd /usr/local/httpd/htdocs/bbs/
//进入bbs目录
[root@lamp bbs]# chown -R daemon ./config/
[root@lamp bbs]# chown -R daemon ./data/
[root@lamp bbs]# chown -R daemon ./uc_client/data/cache/[root@lamp bbs]# chown -R daemon ./uc_server/data/
//为各程序用户提升权限
LAMP架构是目前较为完善、稳定的架构体系,在手工编译安装时,我们需要注意的有:
1、针对apache、mysql的配置文件与启动脚本进行设置,同时php的配置文件的扩展名比较特殊,是以ini为结尾的。
2、我们安装服务的启动脚本、命令及环境变量需要复制或声明或启动环境变量来让系统可以识别。