理论
什么是LAMP
LAMP = Linux + Apache + MySQL +PHP
为什么使用LAMP
涵盖了整个web的开发流程
流行、免费、开源、轻量(新版的Apache只有7M)
Linux
开源的类Unix操作系统,可以免费使用和自由传播
Centos、Ubuntu、Redhat、红旗都是其他发行版本
Linux与Windows
Linux与Windows有质的不同
用户假设(面向的群体,Linux的用户明白自己做什么 想要什么 并会为此行为负责,Windows则恰恰相反,通俗来说就是高端与小白用户)、软件哲学
Linux的优势是完全免费、稳定高效(windows不能长时间不关机使用、软件卸载不干净等...)
PHP
不概述
MySQL
开源、免费、高性能的关系型数据库
Apache
apache是web服务器软件
运行大致流程:首先客户端通过浏览器访问一个IP 》 这个IP上肯定启动了服务器软件,且(apache)监听了某一个端口 》数据顺着端口进入了apache 》 apache拿到数据通过http/https协议等进行解析 整理数据,转发给PHP进行业务的处理 》 PHP业务处理完成之后再返回给apache 》 apache最后再返回给客户端 》客户端从浏览器展示给了用户
Nginx
Nginx与Apache一样,都是web服务器软件
目前最受欢迎的服务器软件
nginx与apache相比:Nginx拥有更好的前景、配置轻松、性能优越(对于性能的优越下面大致阐述)
性能优越:Apache采用的是select轮训机制,所谓的轮训打个比方说就是它可能监听了1000个链接,其中不论哪一个链接发生了变化或者新的动态,它会采用for循环一样的东西,进行循环来看,并且这个循环是个死循环。但是对于Nginx来说,它采用的是epoll,epoll是一个非常高效的事件监听机制,它不会主动的轮训,而是采用了监听 哪一个链接发生了变化,然后第一时间感知 然后将链接进行处理。
编译安装 及 如何进行编译安装(主要有两种方式)
编译安装是在Linux中安装软件的主要方式之一 (将下载的软件源代码进行编译 安装。方式二 源安装 (centos中使用的yum、debian系列中的apt-get等)
一、编译前的准备工作 ./configure
二、编译:make (将源码编译成二进制文件)
三、安装:make install
实战
本节是阐述在云服务器安装la/nmp环境 并没有从底层搭建开始,如果是虚拟机用户 后期会出相应教程
安装PHP
第一步:访问 php 官网,并且点击导航栏下载(download),在众多PHP版本中选择版本(我选择了 php-7.1.16)
第二步:点击php-7.1.16找到镜像下载站点(我选择了香港 'hk1.php.net'),右键 复制该下载链接
第三步:在远程命令窗口中输入以下命令 (其中http://hk1.php.net/get/php-7.1.16.tar.gz/from/this/mirror就是我们官网复制的链接)
wget http://hk1.php.net/get/php-7.1.16.tar.gz/from/this/mirror
以上命令行如果 显示未找到 wget 命令,说明没有这个小工具,需要安装,输入命令 sudo yum install wget 安装
第四步:输入命令,解压下载完成的tar包
tar -zxvf mirror
第五步:这一步只是一个小常识 单纯的安装PHP是不能与Nginx一起工作的,它只能与Apache一起工作,如果想安装Nginx来作为web server的话,需要安装一个软件 叫做phpfpm,phpfpm是以补丁的形势存在的,点击这里是对phpfpm安装的简介,其中有一句“编译 PHP 时需要 --enable-fpm 配置选项来激活 FPM 支持。”
第六步:因为是编译安装 所以我们要下载编译的软件工具 gcc 和其他一些组件,输入以下命令安装
sudo yum install gcc gcc++ libxml2-devel
用了root权限安装 (sudo)
第七步:cd /php-7.1.16 后 使用 ./configure 进行编译安装的第一步 (安装成功会在最后看到 Thank you for using PHP. )
./configure --prefix=/usr/local/php7 --enable-fpm
命令解释 :./configure 安装前的配置 --prefix= 安装的目录 --enable-fpm编译 PHP 时需要 --enable-fpm 配置选项来激活 FPM 支持。
注意:输入以上命令之后先不要着急去/usr/local/下找php7这个目录, 会不显示出来,要留在php-7.1.16目录中
第八步:在php-7.1.16目录中输入命令
make
由于此刻编译时间较久 先大致叙述一下什么是 phpfpm
phpfpm是fast CGI的管理器,只能适用于PHP。
什么是fastCGI 与 CGI?
fast CGI是与语言无关的CGI开放扩展,主要将CGI进程保持在内存当中,借此获得较高的性能,fastCGI每次都会执行着,不会每一次都去fork一个子进程。相对于CGI来说,每次fork一个子进程是CGI固定的模式。
CGI的全称是 公共网关接口 它是一个协议,约定web server与动态程序之间的数据传输
白话翻译什么是fastCGI与CGI
fastCGI:CGI在处理请求的时候会fork一个子进程,处理完成之后会释放,下一次请求的时候再fork再释放,这种方式比较没有效率。因此fastCGI诞生了,fastCGI是程序主动启用一个进程,这个进程下有多个子进程并且这些子进程都会常驻在内存当中,就避免了fork 与 释放。当然了,fastCGI在忙的时候也会启用新的进程来帮忙,在闲暇时又会将闲暇的进程结束保证了资源不被浪费。
CGI:是保证web server传输过来的数据是标准格式方便CGI程序的编写者(打个比方 在Nginx下访问 index.php,这时Nginx会启动CGI来处理,而我们的PHP解释器它就是一个CGI程序)
什么是phpfpm?
phpfpm就是实现了fastCGI这个协议的程序,是第三方的,后来被PHP官方购买了。所以现在我们就可以在官网下载并使用了。
第九步:编译完成后最后显示make test 表示编译成功,继续执行以下命令
sudo make install
第十步:执行安装之后我们可以创建一个测试用例 执行以下测试文件 看看是否安装成功了。
cd /
touch index.php
vim index.php
/usr/local/php7/bin/php index.php
以上如果执行结果是PHP的信息 说明PHP安装成功!
-- complate!
安装MySQL
源码安装MySQL比较费劲,追求效率点击这里去yum安装吧,但是还是建议没有试验过的试试源码安装的过程,感受一下。
第一步:和下载PHP步骤一样,打开mysql官网下载然后在最下面有一个下拉框,下拉选Source Code(源代码)下载
第二步:选择“Generic Linux (Architecture Independent), Compressed TAR Archive” (通用的Linux架构)点击 Download
第三步:此时会有页面表示登录/注册下载,左下角有No thanks... 我们鼠标放在Nothanks上复制这个a标签的链接
第四步:weget下载
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11.tar.gz
第五步:解压mysql
tar -zxvf mysql-8.0.11.tar.gz
第六步:安装mysql的依赖工具
sudo yum install cmake gcc-c++ ncurses-devel perl-Data_dumper boost boost-doc boost-devel
第七步:编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql\
-DMYSQL_DATADIR=/usr/local/mysql/data\
-DSYSCONFDIR=/etc\
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_DOWNLOADS=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=1 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/share/doc/boost-doc-1.41.0/
cmake命令是一个跨平台的安装工具 cmake安装命令的参数较多,如果运行 cmake 版本过低点击这里去升级自己cmake的版本
第八步:make
编译过程会比较慢,对于配置较低的服务器,可能会在编译中突然中断并error,百度一下error信息,如果是因为内存过小而中断,建议使用yum安装吧! 如果编译失败点击这里去yum源安装mysql (删除以上mysql所操作的所有相关文件、文件夹),成功编译的请忽略这段话,继续以下的步骤
第九步:sudo make install
--complate! 安装完成之后需要对数据库一个小小的配置 简要步骤如下
1. 配置mysql文件:
> cd /etc/my.cnf
# 加入配置参数
> character-set-server=utf8
2.登录mysql
>mysql -u root -p
3.允许远程连接
use mysql;
update user set Host='%', Password=PASSWORD('这里填写你设置的密码') where Host='127.0.0.1';
flush privileges;
exit;
4.最后重启
service mysqld resatrt
测试一下 时间较仓促 如果有问题 电邮我 [email protected]
安装Apache
第一步:和安装php与mysql一样 都是访问官网的下载地址 然后wget。apache的正确下载地址在 httpd.apache.org 中
wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.33.tar.gz
第二步:解压 并进入 使用configure
./configure --prefix=/usr/local/apache2
执行完成之后会
error: APR not found. Please read the documentation.
提示我们安装 APR
第三步:安装APR依赖 apr 访问地址http://archive.apache.org/dist/apr
cd /
wget http://archive.apache.org/dist/apr/apr-1.6.2.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.6.0.tar.gz
tar -zxvf apr-1.6.2.tar.gz
tar -zxvf apr-util-1.6.0.tar.gz
第四步:下载解压之后 要对这两个文件进行重命名 去掉各自的版本号
mv apr-util-1.6.0 apr-util
mv apr-1.6.2 apr
第五步:移动这两个依赖文件到 httpd的一个文件下
mv apr apr-util httpd-2.4.33/srclib/
第六步:下载最后一个依赖(一个正则pcre) 然后使用configure进行编译前的安装准备
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
tar -zxvf pcre-8.38.tar.gz
./configure --prefix=/usr/local/pcre-8.38
make
sudo make install
第七步:在安装了apache安装所需的 apr、apr-util、pcre 三个依赖之后 进入apache目录 进行apache安装
cd httpd-2.4.33
./configure --prefix=/usr/local/apache -with-pcre=/usr/local/pcre-8.38/bin/pcre-config -with-included-apr
# 以上步骤可能会报错 错误信息如下
error: Bundled APR-Util requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
# 解决办法
cd /usr/local/src/
wget http://apache.fayea.com/apr/apr-1.6.3.tar.bz2
wget http://apache.fayea.com/apr/apr-util-1.6.1.tar.bz2
tar -jxvf apr-util-1.6.1.tar.bz2
tar -jxvf apr-1.6.3.tar.bz2
cp -rf apr-1.6.3 /httpd-2.4.33/srclib/apr
cp -rf apr-util-1.6.1 /httpd-2.4.33/srclib/apr-util
# 然后再回到根目录 重复第七步
第八步:编译 安装
make
sudo make install
第九步:验证是否安装成功!
cd /usr/local/apache/bin/
sudo ./apachectl -k start
# 此时会有一或两个错误
# 错误 AH00558:
# 或 错误 AH00559:
# 上面的错误先不用管,那是配置虚拟主机的问题
第十步:依旧验证是否安装成功
因为是阿里云 所以在安全策略组的配置中已经开启了80端口,所以我们直接在本地浏览器访问云服务器公网的ip
如果显示
It works!
表示安装成功 请忽略以下步骤
如果显示拒绝访问或没有开启防火墙的80端口 可以输入以下命令,
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo systemctl restart firewalld.service
再次浏览器访问显示 it works! 正常
安装Nginx
待更新 .... 疑问email [email protected]