黄金架构LAMP
什么是LAMP
LAMP是公认的最常见、最古老的黄金Web技术栈、
其实就是
Linux 操作系统Apache/Nginx web服务器Mysql/MariadbPerl/Php/Python
Linux

Linux到底好在哪?用Linus本人的话说就是,普通老百姓用户,压根别说你是在使用操作系统,你需要的只是应用程序,而不是操作系统。
操作系统主要是提供给程序员API,用于构建和运行应用的一个平台。
如果来说,你常用的应用在Linux下运行的更好,更方便,那没问题。
但是如果你平时用的软件,都和Linux没什么关系,那你没必要选择Linux。
那当然作为运维人员,你可以一手使用windows、一手使用Linux,毕竟你的服务器运维工作,几乎都是Linux环境了。
Linux系统主要是以开发者为中心,Windows主要以消费者为中心这是本质的区别。
Linux的特点是几乎所有的开发任务相关工具,都有很完善的支持,从底层的编译器,make编译工具,到bash脚本,git代码管理,vim编辑器,依赖管理工具等等都很齐全。
然而Windows/Mac的操作系统很少能完善这些开发工具的,Linux则是默认预装的开发环境。
WIndows几乎都是图形化接口,而Linux几乎都是现有命令行,再由图形化操作接口,更容易实现自动化。
简单来说
Apache
Apache Web Server虽然称之为web服务器,但是不是意味着他是一个物理服务器,它只是电脑软件中的一个软件而已,Web服务器的作用是将HTTP请求从前端转发到后端应用上。
web服务器功能,对用户静态请求进行解析、分发,把磁盘的数据读出来。
apache 高度模块化的服务器 支持多虚拟主机功能
PHP
PHP是一门服务端脚本编程语言,主要用于web开发,常用PHP脚本嵌入HTML源码中执行。
PHP是全球知名的编程语言之一,程序员可以免费试用,PHP支持多种操作系统,开发效率高,支持多种数据库操作。
国内众多网站,百度、雅虎、新浪都在大量使用PHP语言进行开发,知名的论坛软件Discuz也是由PHP开发且占据了80%的论坛软件市场。
MySQL

Mysql是一款数据库管理系统,也就是一个存储数据的工具,用户可以自行对数据库进行增加、删除、修改、查询等操作。
MySQL是数据库管理系统中的一款软件,被业界广泛使用,例如新浪、QQ、淘宝、都在大量使用MySQL数据库。
腾讯QQ使用Linux与MySQL数据库,存储注册用户2.8亿的信息,活跃人数9000万,凭借万台服务器搭建的数据库集群,腾讯QQ同时在线人数也达到了千万,这证明了MySQL数据库的大容量、快速响应特点。
MySQL是一款关系型数据库,尤其适合Web应用,特别是电商领域,MySQL遍布各种行业、移动、爱立信、惠普、银行、思科、摩托萝拉、等等。
LAMP架构
LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
LAMP是一个多C/S架构的平台,最初级为web客户端(浏览器)基于TCP/IP通过http协议发起传送,这个请求可能是动态的,也可能是静态的。
所以web服务器通过发起请求的后缀来判断,如果是静态的资源就由web服务器自行处理,然后将资源发给客户端。如果是动态这时web服务器会通过CGI(Common Gateway interface)协议发起给php。
这里但是如果php是以模块形式与Web服务器联系,(安装在同一台服务器)那么他们是通过内部共享内存的方式。
如果是php单独的放置与一台服务器,那么他们是通过sockets套接字监听的方式通信(安装在不同的服务器上,远程通信,这又是一个C/S架构)。
这时php会相应的执行一段程序,如果在执行程序时,需要用到数据。
那么php就会通过mysql协议发送给mysql服务器(也可以看作是一个C/S架构)。由mysql服务器处理,将数据供给php程序。
【流程解析】
1.用户通过浏览器发送http请求,到达web服务器(apache或nginx)
2.web服务器解析用户请求信息,明确他到底要什么,如果是静态资源请求,直接通过linux内核读取硬盘上的数据,然后构建响应报文,给与用户。如果是动态资源请求,则转发请求给应用服务器(php,python),由php解析动态请求,解析完毕后,返回给apache,发给用户
3.如果涉及数据库操作,利用php-mysql驱动,获取数据库数据,再返回给php,最终给与用户
搭建LAMP
部署linux系统环境
注意关闭防火墙、selinux
[root@chaogelinux ~]# iptables -F[root@chaogelinux ~]# systemctl stop firewalld[root@chaogelinux ~]# systemctl disable firewalld[root@chaogelinux ~]# getenforceDisabled
安装apache
yum install httpd -y
检查是否启动了某个端口
netstat -tunlp | grep 80
部署apache
# 启动[root@chaogelinux ~]# systemctl start httpd# 查看状态[root@chaogelinux ~]# systemctl status httpd# 开机自动启动[root@chaogelinux ~]# systemctl enable httpd# 不让他开机自动启动[root@chaogelinux ~]# systemctl disable httpd
配置apache
1.检查apache安装了那些文件,通过yum安装的软件,如何检查其安装信息rpm -ql httpd | grep ".conf"2.apache主配置文件,在/etc/httpd目录/etc/httpd/conf/httpd.conf # 主配置文件绝对路径3.查看著配置文件中的信息(排除空白+注释行)[root@localhost conf]# grep -Ev "^[ #]|^$" /etc/httpd/conf/httpd.confServerRoot "/etc/httpd" # httpd主配置目录定义Listen 80 # 定义apache运行的端口Include conf.modules.d/*.conf # 通过include语法,把其他目录中的配置文件包含进来,实现配置文件简洁化。User apache # 定义apache运行的用户名Group apache # 定义httpd服务运行的用户组ServerAdmin root@localhost # 定义主机名# 当用户访问网站的根目录,返回某些资源<Directory /></Directory>DocumentRoot "/var/www/html" # 定义httpd的网页根目录<Directory "/var/www"></Directory><Directory "/var/www/html"></Directory><IfModule dir_module></IfModule><Files ".ht*"></Files>ErrorLog "logs/error_log"LogLevel warn<IfModule log_config_module></IfModule><IfModule alias_module></IfModule><Directory "/var/www/cgi-bin"></Directory><IfModule mime_module></IfModule>AddDefaultCharset UTF-8<IfModule mime_magic_module></IfModule>EnableSendfile onIncludeOptional conf.d/*.conf
部署mysql(mariadb)
[root@chaogelinux ~]# yum install mariadb-server mariadb[root@chaogelinux ~]# systemctl start mariadb
检查mariadb的数据文件夹,存在mysql.sock文件,表示启动了,以及属主、属组权限
[root@chaogelinux ~]# ls -l /var/lib/mysql/总用量 28700-rw-rw----. 1 mysql mysql 16384 2月 3 17:37 aria_log.00000001-rw-rw----. 1 mysql mysql 52 2月 3 17:37 aria_log_control-rw-rw----. 1 mysql mysql 18874368 2月 3 17:37 ibdata1-rw-rw----. 1 mysql mysql 5242880 2月 3 17:37 ib_logfile0-rw-rw----. 1 mysql mysql 5242880 2月 3 17:34 ib_logfile1drwx------. 2 mysql mysql 4096 2月 3 17:34 mysqlsrwxrwxrwx. 1 mysql mysql 0 2月 3 17:37 mysql.sockdrwx------. 2 mysql mysql 4096 2月 3 17:34 performance_schemadrwx------. 2 mysql mysql 6 2月 3 17:34 test
登录mariadb数据库
[root@chaogelinux ~]# mysql -uroot -pEnter password:Welcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 2Server version: 5.5.64-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]>
设置mariadb用户root的登录密码
[root@chaogelinux ~]# mysqladmin -uroot password "chaoge666"再次登录必须输入正确密码[root@chaogelinux ~]# mysql -uroot -pchaoge666
部署php
1.解决php安装的依赖开发环境yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libtool-ltdl-devel pcre pcre-devel apr apr-devel zlib-devel gcc make -y2.安装php,以及php连接mysql数据库的驱动[root@chaogelinux ~]# yum install php php-fpm php-mysql -y3.php不需要额外修改,但是需要修改apache配置文件,支持php[root@chaogelinux ~]# cat /etc/httpd/conf/httpd.conf #添加如下相关配置DocumentRoot "/www"TypesConfig /etc/mime.typesAddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phpsDirectoryIndex index.php index.html4.修改首页文件内容[root@chaogelinux ~]# cat /www/index.php<meta charset=utf8>我是新的首页,你好兄弟们<?phpphpinfo();?>5.启动php进程systemctl start php-fpm
测试php连接mysql
1.添加php脚本[root@chaogelinux www]# cat /www/chaoge.php<?php$conn = mysql_connect('localhost','root','chaoge666');if ($conn)echo "php已成功连接mysql,你真棒";elseecho "你咋回事,这都搞不定,细心检查下吧";mysql_close();?>
访问php脚本文件,测试是否能够连接mysql数据库
若是关闭了数据库,或者出现其他配置错误问题,则会显示如下页面
[root@chaogelinux www]# systemctl stop mariadb
基于LAMP搭建论坛
Crossday Discuz! Board是一套通用的社区论坛软件系统,用户可以在不需要任何编程的基础上,通过简单的设置和安装,搭建起具备完善功能、很强负载能力和可高度定制的论坛服务。
Discuz! 的基础架构采用世界上最流行的web编程组合PHP+MYSQL实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。
1.下载discuz源码包wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip2.安装解压缩命令,解压缩源代码yum install unzip -y[root@chaogelinux www]# unzip Discuz_X3.2_SC_UTF8.zip3.吧解压出的upload文件,拷贝到apache的根目录下[root@chaogelinux www]# mv upload/* .mv:是否覆盖"./index.php"? y4.给与最高权限,便于实验[root@chaogelinux www]# chmod -R 777 /www/*
访问apache首页,查看是否进入论坛安装界面
http://192.168.178.252/install/





此时我们基于lamp搭建的个人论坛就好了
大功告成,后续就是针对discuz论坛的额外学习了。
我们会针对更先进的LNMP做进一步的学习


