LAMP平台:

1、LAMP:
目前最为成熟的一种企业网站应用模式,可提供动态Web站点及开发环境。
2、构建组件:
Linux、Apache、Mysql、php
3、优势:

  • 成本低廉、可定制,
  • 易于开发、方便易用,
  • 安全和稳定

一、Apache网站服务:

1、Apache起源:

  • 源于A Pathy Server,著名的开源Web服务软件。
  • 1995年时,发布Apache服务程序的1.0版本
  • 由Apache软件基金会(ASF)负责维护
  • 最新的名称为“Apache HTTP Server”
  • 官方站点:http://httpd.apache.org/

2、主要的特点:

  • 开放源代码、跨平台应用(apr、apr-until)
  • 支持多种网页编程语言
  • 模块化设计、运行稳定、良好的安全性

3、软件版本:

  • 1.X
    目前最高版本是1.3,运行稳定
    向下兼容性较好,但缺乏一些较新的功能
  • 2.X
    目前最高版本是2.4
    具有更多的功能特性
    与1.X相比,配置管理风格存在较大的差异

二、编译安装http服务器:

1、编译安装的优点:

  • 具有较大的自由度,功能可定制
  • 可及时获得最新的软件版本
  • 普遍适用于大多数Linux版本,便于移植使用

2、获得Apache服务器的源码包:

  • 参考地址:http://httpd.apache.orp/download.cgi

3、编译安装httpd服务器的具体过程:
(1)准备工作:卸载httpd及相关依赖包

[root@localhost ~]# rpm -e httpd --nodeps(忽略软件依赖包关系)
[root@localhost ~]# yum install -y apr-util-devel pcre-devel

(2)源码编译安装:

[root@localhost ~]# tar zxf httpd-2.4.25.tar.gz -C /usr/src
[root@localhost ~]#cd /usr/src/httpd-2.4.25/
[root@localhost httpd-2.4.25]#
              ./congigure --prefix=/usr/local/httpd
              --enables-so
              --enabes-rewrite
              --enables-charset-lite
              --enables-cgi
[root@localhost httpd-2.4.25]# make&&make install

(3)确认安装结果:

[root@localhost ~]#ls /usr/local/httpd

(4)优化执行路径:

[root@localhost ~]#ln -s /usr/local/httpd/bin/* /usr/local/bin
 (命令文件能被系统识别)
[root@localhost ~]#ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
                   (系统启动脚本文件)

4、主要的目录和文件:

  • 服务目录:/usr/local/httpd/
  • 主配置文件:/usr/local/httpd/conf/httpd.conf
  • 网页目录:/usr/local/httpd/htdocs
  • 服务脚本:/usr/local/httpd/bin/apachectl
  • 执行程序:/usr/local/httpd/bin/httpd
  • 访问日志:/usr/local/httpd/log/acess_log
  • 错误日志:/usr/local/httpd/log/error_log

5、Web站点部署过程:

  • 确定网站的名字、ip地址
  • 配置并启动httpd服务
  • 部署网页文档
  • 在客户机中访问Web站点
  • 查看Web站点访问情况

6、常用的全局配置项及参数:

  • ServerRoot:服务目录
  • Listen:监控的ip地址、端口号
  • User:运行服务的用户身份
  • Group:运行服务的组身份
  • ServerAdmin:管理员邮箱
  • ServerName:网站服务器的域名
  • DocumentRoot:网页文档的根目录
  • Diretoryindex:默认的索引页文件
  • ErrorLog:设置错误日志文件的路径
  • LogLevel:记录日志的级别,默认为warn
  • CustomLog:访问日志文件的位置
  • PidFile:保存httpd进程PID号的文件
  • AddDefaultCharest:设置站点中网页默认的字符集编码utf-8
  • Timeout:网络连接超时,默认为300秒
  • KeepAlive:是否保持连接,可选on或off
  • MaxKeepAliveRequests:每次连接最多请求文件数
  • KeepAliveTimeout:保持连接状态时的超时时间
  • Include:需要包含进来的其他配置文件

7、常用的区域配置项及参数:

  • 使用一对组合标记,限定了配置项的作用范围
<Directory />
  Options FollowSymLinks
  AllowOverride none
  Require all denied
</Directory >
-------------------------------Apache------------------------------------------
[root@localhost ~]#iptables -F                                       ###关闭一切防火墙等安全机制
[root@localhost ~]#setenforce 0

[root@localhost ~]# cd /opt
[root@localhost opt]# mkdir apache mysql php              ####建立三个服务的站点     -C 安装到目标位置
[root@localhost opt]# cd apache/                                   ####将三个httpd相关的包直接通过xshell托进去
apr-util-1.6.0.tar.gz
apr-1.6.2.tar.gz
httpd-2.4.29.tar.bz2
[root@localhost apache]# tar xzvf apr-1.6.2.tar.gz
[root@localhost apache]# tar xzvf apr-util-1.6.0.tar.gz
[root@localhost apache]# tar xjvf httpd-2.4.29.tar.bz2 
[root@localhost apache]# mv apr-1.6.2 httpd-2.4.29/srclib/apr                   ####将两个组件放到httpd的srclib里面支持httpd文件正常运行
[root@localhost apache]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util      

[root@localhost apache]# yum -y install \                                                  ####安装环境
> gcc \
> gcc-c++ \
> make \
> pcre-devel \      正则表达式
> expat-devel \    解析xml格式文件
> perl                  perl语言

[root@localhost apache]# cd 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 httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl    /etc/init.d/httpd     ap里面的命令启动脚本,让环境识别
[root@localhost init.d]#cd /etc/init.d
[root@localhost init.d]# vim /etc/init.d/httpd    ###优化
# chkconfig: 35 85 21                                                   ###在开头添加
# description: Apache is a World Wide Web server

[root@localhost init.d]# chkconfig --add httpd   ###让server能够识别httpd里面的命令自动补全

[root@localhost init.d]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
[root@localhost init.d]# vim /etc/httpd.conf
1、 #ServerName www.kgc.com:80
2、Listen 192.168.100.100:80
     #Listen 80

[root@localhost init.d]# ln -s /usr/local/httpd/bin/* /usr/local/bin/  (系统环境变量$PATH)  为了让系统识别不用敲绝对路径
[root@localhost init.d]#ls /usr/local/httpd/bin/
[root@localhost init.d]#httpd -t                          >>>>Syntax OK既是成功

[root@localhost init.d]# service httpd start
[root@localhost init.d]#netstart -ntap | grep 80

三、安装数据库:

------------------------------------MySQL---------------------------------------
[root@localhost ~]# cd /opt/mysql/
[root@localhost mysql]# yum -y install ncurses-devel(终端包) autoconf(处理shell脚本包) cmake(configue)
mysql-5.6.26.tar.gz 
[root@localhost mysql]# tar xzvf mysql-5.6.26.tar.gz 
[root@localhost mysql]# cd mysql-5.6.26

[root@localhost 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       ####数据库的连接文件

[root@localhost mysql-5.6.26]# make && make install

[root@localhost mysql-5.6.26]# cp support-files/my-default.cnf /etc/my.cnf     #####系统配置文件
cp:是否覆盖"/etc/my.cnf"yes
[root@localhost mysql-5.6.26]# cp support-files/mysql.server /etc/init.d/mysqld     ####启动脚本
[root@localhost mysql-5.6.26]# chmod +x /etc/init.d/mysqld 
[root@localhost mysql-5.6.26]# chkconfig --add /etc/init.d/mysqld          ####让server管理
[root@localhost mysql-5.6.26]# chkconfig mysqld --level 35 on               ###开机自启动
[root@localhost mysql-5.6.26]# echo "PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
[root@localhost mysql-5.6.26]# source /etc/profile
[root@localhost mysql-5.6.26]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

[root@localhost mysql-5.6.26]# useradd -s /sbin/nologin mysql
[root@localhost mysql-5.6.26]# chown -R mysql.mysql /usr/local/mysql/
[root@localhost 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@localhost mysql-5.6.26]# vim /etc/init.d/mysqld 
 46 basedir=/usr/local/mysql
 47 datadir=/home/mysql

[root@localhost mysql-5.6.26]# service mysqld start

[root@localhost mysql-5.6.26]# netstat -anpt | grep 3306

[root@localhost mysql-5.6.26]# mysqladmin -u root -p password "abc123"

[root@localhost mysql-5.6.26]# mysql -u root -p
mysql> 
mysql> show databases;
mysql> exit

四、安装php:


---------------------------------------php-------------------------------------
[root@localhost mysql-5.6.26]# cd /opt/php/
[root@localhost php]# yum -y install \
> gd \
> libpng \             图片格式
> libpng-devel \
> pcre \
> pcre-devel \       正则表达式
> libxml2-devel \   识别xml
> libjpeg-devel
php-5.6.11.tar.bz2
[root@localhost php]# tar jxvf php-5.6.11.tar.bz2 
[root@localhost php]# cd php-5.6.11/

[root@localhost 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 \          ap识别数据库
> --enable-mbstring                                             多字符串的处理

[root@localhost php-5.6.11]# make && make install

[root@localhost php-5.6.11]# cp php.ini-development /usr/local/php5/php.ini         php配置文件
[root@localhost php-5.6.11]# ln -s /usr/local/php5/bin/* /usr/local/bin/                   使命令让系统识别

[root@localhost php-5.6.11]# vim /etc/httpd.conf          使得httpd适合php
382     AddType application/x-httpd-php .php
383     AddType application/x-httpd-php-source .phps
256     DirectoryIndex index.php index.html                    支持首页类型

[root@localhost php-5.6.11]# service httpd stop
[root@localhost php-5.6.11]# service httpd start
[root@localhost php-5.6.11]# vim /usr/local/httpd/htdocs/index.html 
<?php
phpinfo();
?>

[root@localhost php-5.6.11]# mv /usr/local/httpd/htdocs/index.html /usr/local/httpd/htdocs/index.php   覆盖来换文件格式

[root@localhost php-5.6.11]#cd /opt    加入论坛系统文件
[root@localhost opt]# unzip Discuz_X2.5_SC_UTF8.zip
[root@localhost opt]#cp -r upload/ /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/

[root@localhost bbs]# mysql -u root -p
mysql> create database bbs;
mysql> grant all on bbs.* to 'bbsuser'@'%' identified by '123';
mysql> flush privileges;                                #####刷新数据库
mysql> show databases;
mysql> quit

五、构建虚拟主机:

  • 1、基于域名的虚拟主机:
实验1 基于域名的虚拟主机:
实验前期准备:    添加两张网卡ip:192.168.100.100 192.168.100. 200。网关:192.168.100.2。DNS1:192.168.100.2(做网站服务器) 192.168.100 .50(win10测试机)
[root@localhost ~]# yum -y install httpd bind
[root@localhost ~]# vim  /etc/named.conf                                   修改any
[root@localhost ~]# vim  /etc/named.rfc1912.zones                     修改:kgc.com  kgc.com.zone   benet.com benet.com.zone
[root@localhost ~]# cd /var/named
[root@localhost ~]# cp -p named.localhost kgc.com.zone            两个网站的域名解析用的是同一个主机100. 100
[root@localhost ~]# vim kgc.com.zone
                              添加www IN A 192.168.100.100 
[root@localhost ~]# cp -p kgc.com.zone benet.com.zone
[root@localhost ~]# systemctl start named                                   到win10上nslookup www.kgc.com    nslookup www.benet.com   (要在win10的网卡上修改DNS解析的地址)

[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/httpd/        >>>conf conf.d  logs
[root@localhost ~]# cd  conf
[root@localhost ~]# mkdir extra            >>>extra httpd.conf  magic    自己创的文件后面要告诉httpd
[root@localhost ~]# cd extra/
[root@localhost ~]# vim vhost.conf
 <VirtualHost *:80>
        DocumentRoot "/var/www/html/kgc"
        ServerName www.kgc.com
        Errorlog "logs/www.kgc.com.error_log"
        CustomLog "logs/www.kgc.com.access_log" common
        <Directory> "/var/www/html">
                Require all granted
        </Directory>
</VirtualHost>

<VirtualHost *:80>
        DocumentRoot "/var/www/html/benet"
        ServerName www.benet.com
        Errorlog "logs/www.benet.com.error_log"
        CustomLog "logs/www.benet.com.access_log" common
        <Directory> "/var/www/html">
                Require all granted
        </Directory>
</VirtualHost>

[root@localhost ~]# cd /var/www/html/
[root@localhost ~]# mkdir kgc benet
[root@localhost ~]# cd benet/     kgc/               给两个网站添加站点
[root@localhost ~]# vim index.html                   自己添加相关文字
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
                               Include conf/extra/vhost.conf                    *********要对自己写的文件进行httpd的宣告!!!
                               Listen 192.168.100.100:80
	               #Listen 80
[root@localhost ~]# systemctl restart httpd           在浏览器上输入www.kgc.com www.benet.com

  • 2、基于端口的虚拟主机:
实验2 基于端口的虚拟主机:
[root@localhost ~]# cd /etc/httpd/conf/extra
[root@localhost ~]# vim vhost.conf

<VirtualHost *:80>
        DocumentRoot "/var/www/html/benet"
        ServerName www.benet.com
        Errorlog "logs/www.benet.com.error_log"
        CustomLog "logs/www.benet.com.access_log" common
        <Directory> "/var/www/html">
                Require all granted
        </Directory>
</VirtualHost>

<VirtualHost *:8080>
        DocumentRoot "/var/www/html/benet02"
        ServerName www.benet.com
        Errorlog "logs/www.benet02.com.error_log"
        CustomLog "logs/www.benet02.com.access_log" common
        <Directory> "/var/www/html">
                Require all granted
        </Directory>
</VirtualHost>
[root@localhost ~]# mkdir /var/www/html/benet02
[root@localhost ~]# vim /var/www/html/benet02/index.html               自己打字
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
                                 Listen 192.168.100.100:80
                                 Listen 192.168.100.200:8080              ******
	                #Listen 80
[root@localhost ~]# systemctl restart httpd          在浏览器上输入“www.benet.com:80 www.benet.com:8080 ”

  • 3、基于地址的虚拟主机:
实验3 基于ip地址的虚拟主机:
[root@localhost ~]# cd /etc/httpd/conf/extra
[root@localhost ~]# vim vhost.conf

 <VirtualHost 192.168.100.100:80>
        DocumentRoot "/var/www/html/kgc"
        Errorlog "logs/www.kgc.com.error_log"
        CustomLog "logs/www.kgc.com.access_log" common
        <Directory> "/var/www/html">
                Require all granted
        </Directory>
</VirtualHost>

 <VirtualHost 192.168.100.200:80>
        DocumentRoot "/var/www/html/kgc02"
        Errorlog "logs/www.kgc02.com.error_log"
        CustomLog "logs/www.kgc02.com.access_log" common
        <Directory> "/var/www/html">
                Require all granted
        </Directory>
</VirtualHost>

[root@localhost ~]# mkdir /var/www/html/kgc02
[root@localhost ~]# vim /var/www/html/kgc02/index.html                    自己敲字
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
                                 Listen 192.168.100.100:80
                                 Listen 192.168.100.200:80               ******
	                #Listen 80
[root@localhost ~]# systemctl restart httpd                                  在浏览器上输入“192.168.100.100   192.168.100. 200 ”
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐