[TOC]
0x00 快速入门 LAMP发展 LAMP这个特定名词最早出现在1998年,是Linux操作系统、Apache网页服务器、MySQL数据库管理系统和PHP程序模块,四种技术名称开头字母缩写组成的。是一组常用来搭建动态网站或者服务器的开源软件组合, 本身都是各自独立的软件,但是因为常被结合在一起使用,并拥有越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
随着开源潮流的蓬勃发展,开放源代码的LAMP组合在发展速度上(运行各种商业应用和协作构建各种网络应用程序),已经超过了JavaEE和ASP.net等同类开发平台的商业软件。
并且在LAMP平台上开发的项目在软件方面的投资成本较低,运行稳定,因此受到整个IT界的关注。
所以: Apache+PHP+MySQL
被认为是在Linux平台上最佳组合之一。
LAMP介绍 LAMP并不是一个独立的软件,由Linux+Apache+PHP+MySQL组合而成的一套可以运行PHP程序体系(并非只有Apache可以通过扩展支持PHP的解析,Nginx, LightHttpd等其他软件同样可以),经过多年的Web技术的发展,在业内广泛应用于一种Web服务器解决方案之一,由一些独立的系统或者由软件组合而成。
LAMP是怎么产生的? 由Server OS , Web Server , DataBase , ScriptLanguage来寻找高效运行的Web软件组合。
weiyigeek.top-LAMP
LAMP的工作原理: Apache加载Libphp5/7.so模块来支持PHP解析,而PHP引入Mysql.so模块来对数据库进行CURD操作(因为并非所有的php代码都支持CURD操作)。 数据库的操作术语:CURD = create(创建) + update(更新) + read(读取) + 删除(delete)
weiyigeek.top-工作原理
LAMP环境文件目录概述: 通过apt-get工具安装的软件配置文件均放置在/etc下,并为每个软件建立一个以软件名称为名的文件夹用于区分不同软件的配置文件:
Ubuntu/redhat系统配置文件目录:/etc/
各种组件配置文件位置:Apache /etc/apache2 ; MySQL /etc/mysql ; PHP /etc/php5
对于php有版本变动,其目录也随之而变化:/etc/php/7.0/
一个初级LAMP服务器集群 通过负载均衡服务器,以轮询或其他方式分发给不同apache服务器,当有数据写入数据库时,则会同步到其他负责读取的mysql服务器中
weiyigeek.top-
国内外著名的巨型服务器集群:
Google App Engine 是一种让您可以在 Google 的基础架构上运行您的网络应用程序。Google App Engine 应用程序易于构建和维护,并可根据您的访问量和数据存储需要的增长轻松扩展,上面的BAE和SAE就是以此为基础得,
weiyigeek.top-
0x01 CentOS安装LAMP案例 yum安装 安装环境:CentOS Linux release 7.6.1810 (Core) - 3.10.0-957.12.2.el7.x86_64 安装步骤:
[TOC]
0x00 快速入门 LAMP发展 LAMP这个特定名词最早出现在1998年,是Linux操作系统、Apache网页服务器、MySQL数据库管理系统和PHP程序模块,四种技术名称开头字母缩写组成的。是一组常用来搭建动态网站或者服务器的开源软件组合, 本身都是各自独立的软件,但是因为常被结合在一起使用,并拥有越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
随着开源潮流的蓬勃发展,开放源代码的LAMP组合在发展速度上(运行各种商业应用和协作构建各种网络应用程序),已经超过了JavaEE和ASP.net等同类开发平台的商业软件。
并且在LAMP平台上开发的项目在软件方面的投资成本较低,运行稳定,因此受到整个IT界的关注。
所以: Apache+PHP+MySQL
被认为是在Linux平台上最佳组合之一。
LAMP介绍 LAMP并不是一个独立的软件,由Linux+Apache+PHP+MySQL组合而成的一套可以运行PHP程序体系(并非只有Apache可以通过扩展支持PHP的解析,Nginx, LightHttpd等其他软件同样可以),经过多年的Web技术的发展,在业内广泛应用于一种Web服务器解决方案之一,由一些独立的系统或者由软件组合而成。
LAMP是怎么产生的? 由Server OS , Web Server , DataBase , ScriptLanguage来寻找高效运行的Web软件组合。
weiyigeek.top-LAMP
LAMP的工作原理: Apache加载Libphp5/7.so模块来支持PHP解析,而PHP引入Mysql.so模块来对数据库进行CURD操作(因为并非所有的php代码都支持CURD操作)。 数据库的操作术语:CURD = create(创建) + update(更新) + read(读取) + 删除(delete)
weiyigeek.top-工作原理
LAMP环境文件目录概述: 通过apt-get工具安装的软件配置文件均放置在/etc下,并为每个软件建立一个以软件名称为名的文件夹用于区分不同软件的配置文件:
Ubuntu/redhat系统配置文件目录:/etc/
各种组件配置文件位置:Apache /etc/apache2 ; MySQL /etc/mysql ; PHP /etc/php5
对于php有版本变动,其目录也随之而变化:/etc/php/7.0/
一个初级LAMP服务器集群 通过负载均衡服务器,以轮询或其他方式分发给不同apache服务器,当有数据写入数据库时,则会同步到其他负责读取的mysql服务器中
weiyigeek.top-
国内外著名的巨型服务器集群:
Google App Engine 是一种让您可以在 Google 的基础架构上运行您的网络应用程序。Google App Engine 应用程序易于构建和维护,并可根据您的访问量和数据存储需要的增长轻松扩展,上面的BAE和SAE就是以此为基础得,
weiyigeek.top-
0x01 CentOS安装LAMP案例 yum安装 安装环境:CentOS Linux release 7.6.1810 (Core) - 3.10.0-957.12.2.el7.x86_64 安装步骤:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 yum install -y httpd httpd-dev systemctl start httpd.service rpm -qa | grep "mariadb" mariadb-libs-5.5.52-1.el7.x86_64 rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64 yum install mariadb mariadb-server mariadb-libs mariadb-devel systemctl start mariadb systemctl enable mariadb netstat -tlnp mysql_secure_installation sudo yum install -y epel-release sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm sudo yum install -y yum-utils sudo yum-config-manager --enable remi-php73 sudo yum update sudo yum install php73-php-fpm php73-php-gd php73-php-json php73-php-mbstring php73-php-mysqlnd php73-php-xml php73-php-xmlrpc php73-php-opcache yum --enablerepo=remi-php73 install -y php php-mysqli ll /etc/httpd/modules/ 总用量 12660 -rwxr-xr-x. 1 root root 5136336 5月 28 21:49 libphp7.so -rwxr-xr-x. 1 root root 5309448 5月 28 21:49 libphp7-zts.so service httpd restart php -v
weiyigeek.top-phpinfo
编译安装
0x02 Ubuntu安装LAMP案例 安装OS环境:Ubuntu 16.04 TLS(Linux ubuntu 4.4.0-47-generic #68-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux) 应用版本:
apache/2.4.18(Ubuntu)
php
mysql Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
安装步骤:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 sudo apt-get install apache2 mysql-server php5-mysql 或者通过: tasksel install lamp-server sudo apt-get php5 php5 -v apache2 -v cat /etc/apache2/mods-enabled/php5.load cat /etc/apache2/mods-enabled/php7.0.load sudo apt-get install libapache2-mod-php sudo apt-get install libapache2-mod-php7.0 <?php echo "test php" ;?>
weiyigeek.top-测试php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 cat /etc/php5/conf.d/mysql.ini cat /etc/php5/mods-available/mysql.ini cat /etc/php/7.0/mods-available/mysqli.ini sudo apt-get install php5-mysql sudo apt-get install php7.0-mysql /etc/php/mods-available/mysqli.ini sudo service mysql restart sudo service apache2 restart
weiyigeek.top-mysqli扩展
1 2 3 4 5 6 7 8 9 10 <?php echo mysql_connect('localhost' ,'root' ,'123456' ) ? '连接成功的信息' : '连接失败的信息’; # php5.0 version-测试连接mysql,有时mysql_connect()函数默认端口被其他程序占用时, 可以指定其他端口; echo new mysqli(' localhost',' root',' toor') ? ' successful message' : ' fail message'; # php7.0 version-PHP 5 的使用者可以使用 mysql extension,mysqli 和 PDO_MYSQ,PHP 7移除了mysql extension支持 phpinfo(); //查看php版本信息 ?>
weiyigeek.top-连接数据库测试
配置与实战 描述:ubuntu的apache配置文件目录是/etc/apache2/,入口在conf.d/*,进行Include配置文件.
weiyigeek.top-apache目录介绍
apache最核心的配置是模块和虚拟主机,mods-enabled文件夹中有软连接指向了modes-available文件,Apache会在加载配置过程中将所有软连接一次性全部加载,以方便软连接误删时再次建立软连接启动模块.
available表示可以使用
enabled表示已启用的
1 2 3 mysql核心配置文件 /etc/mysql/my.cnf php5核心配置文件 /etc/php5/php.ini php7核心配置文件 /etc/php/7.0/php.ini
weiyigeek.top-配置文件加载流程
配置1:LAMP之给PHP添加常用扩展(Extension) 1 2 3 $sudo apt-get install php5-gd curl libcurl3 libcurl4-openssl-dev php5-curl $sudo apt-get install php7.0-gd curl libcurl3 libcurl4-openssl-dev php7.0-curl
weiyigeek.top-gd扩展
配置2:apache虚拟主机工作原理通过域名来指向访问 在同一台服务器上,可以访问不同的网站二级域名,让Apache来区分用户是通过哪个二级域名访问这台服务器的,根据不同的二级域名访问对应项目所在的目录,也就是说一台服务器上可以同时放置多个完全独立的网站或者系统,用不同的域名访问对应的系统。 配置需求:
weiyigeek.top-虚拟主机
最新版的ubuntu server Apache默认解析的网页文件是在var/www/html下,如果要修改的话需要修改/etc/apache2/sites-enabled/000-default中的DocumentRoot的值
weiyigeek.top-virtualhost
Step1. 手动模拟,DNS将在host文件里面修改域名指向192.168.0.104: 客户端的Host文件:
Windows是在c:\windows\system64\drivers\etc\hosts
Linux,Mac都是在/etc/hosts,因为都是采用了unix的内核kerner.1 2 3 4 5 6 192.168.133.134 video.ubuntu.com 192.168.133.134 bbs.ubuntu.com 192.168.133.134 oa.ubuntu.com weiyi@ubuntu:/$ sudo mkdir -p /wwwroot/{oa,bbs,video}
weiyigeek.top-DNS模拟指向
Step2. 在Apache中配置虚拟主机 1、设置配置文件:$sudo cp /etc/apache2/site-aviailable000-defaule.conf video.conf (同理复制成bbs.conf、oa.conf) 2、修改配置文件:$sudo vi video.conf (同理修改bbs.conf、oa.conf)1 2 添加:ServerName video.imooc.com 修改:DocumentRoot /wwwroot/video
3、修改Apache配置文件apache2.conf1 2 3 4 5 6 $sudo vi /etc/apache2/apache2.conf<Directory /wwwroot/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
4、在/etc/apache2/sites-enabled中建立软连接:1 $ sudo ln -s ../sites-availables/video.conf video.conf
5、重启Apache1 $ sudo service apache2 restart
6、在浏览器中输入二级域名看是否显示对应内容
weiyigeek.top-域名访问
0x03 Apache安全配置 主要是对httpd进行安全配置,有效的防止网站被入侵;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #配置1.禁止上传目录脚本执行 <Directory ~ "/website/uploads"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all php_flag engine off </Directory> #配置2.指定设置错误请求页面文件 #ErrorDocument 500 "The server made a boo boo." ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://www.example.com/subscription_info.html #配置3.设置目录访问密码 <Directory "/var/www/cgi-bin/awstats/"> AuthType Basic AuthName "test" AuthUserFile /tmp/passwd Require user test </Directory> #生成用户密码在访问目录中使用 /etc/httpd/bin/htpasswd -c /etc/httpd/passwd test
0x03 补充知识 htpasswd 命令 描述:Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。 执行文件目录: /etc/httpd/bin/htpasswd 语法参数:1 2 3 4 5 6 7 8 9 10 11 12 13 14 htpasswd [选项] [参数] -b:在命令行中一并输入用户名和密码而不是根据提示输入密码; -c:创建一个加密文件; -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上; -m:默认采用MD5算法对密码进行加密; -d:采用CRYPT算法对密码进行加密; -p:不对密码进行进行加密,即明文密码; -s:采用SHA算法对密码进行加密; -D:删除指定的用户。 用户:要创建或者更新密码的用户名; 密码:用户的新密码。
基础实例:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 htpasswd -bc .password weiyigeek 123456 Adding password for user weiyigeek [root@master ~] weiyigeek:$apr1 $WOXxFnda $ocLFdlzLQXyJydPQYtwLL . htpasswd -b .passwd Jack 123456 htpasswd -nb Jack 123456 Jack:$apr1 $esmjsBIu $eFfutTYZMZp9peHNAdllq0 htpasswd -D .passwd Jack htpasswd -D .passwd Jack htpasswd -b .passwd Jack 123456