教程:
http://www.imooc.com/learn/703
什么是LAMP?
LAMP = Linux + Apache + MySQL + PHP
为什么使用LAMP?
涵盖整个Web开发流程。
流行( 全球70%网站在使用),免费(LAMP组成部分都是免费的),开源,轻量(最新Apache只有7M大小)。
Linux:
开源的类Unix操作系统,可以免费使用和自由传播。
CentOS,RedHat,Ubantu,红旗等都是其发行版本。
Linux和Windows:
质量的不同。
用户假设,软件哲学。
Linux优势:完全免费,稳定高效
PHP:
MySQL:
开源,免费,高性能的数据库。
Apache:
Web服务器软件。
监听端口,接受请求,解析HTTP协议,转发给PHP。
没有apache也就没有我们的网站开发。
Nginx:
与apache一样,都是服务器软件。
Nginx比apache:前景好,配置轻松,性能更加优秀。
apache是采用的轮询机制,nginx是一种高效的监听方式。
如何编译安装软件?
编译安装是在Linux安装软件的重要方式之一。
在linux中安装软件有两种主要的方式:
1)编译安装
对软件的源代码进行编译安装。
2)源安装
比如在CentOS中使用yum安装。
编译安装:
1)编译前的准备工作:
在命令行敲:
./configure
编译为二进制文件:
make
安装:
make install
实战环节:
我们使用Oracle公司的VirtualBox这个软件做一个虚拟机。
网站:virtualbox.org
创建centos虚拟机,启动。(https://www.imooc.com/video/12897)
启动的时候需要下载系统镜像。
安装好重启之后,配置网卡:
注意还要添加DNS和网关:
DNS1=8.8.8.8
GATEWAY=10.10.10.1 # 这些都是和自己的内网一个网段的才行,包括上面的10.10.10.150。
http://www.jb51.net/os/RedHat/189963.html
重启网卡:
systemctl restart network.service
使防火墙运行22端口(ssh)连接:
firewall-cmd --zone=public --add-port=22/tcp --permanent
systemctl restart firewalld.service
在VirtualBox上面的网卡需要对虚拟机选择桥接网卡(设置->网络):
将其在VirtualBox中重新启动。之后,我们就可以重新登录了。
LAMP之安装PHP:
我们可以在我们自己的mac上面使用ssh去连接虚拟机了。
# 先安装vim和wget
yum install -y vim wget # 安装vim可以安装它以及它的一系列依赖
我们选择安装7.0.26版本的PHP:
http://php.net/downloads.php#v7.0.26
php-7.0.26.tar.gz 点击,进入,选择:Hong Kong
邮件拷贝连接(http://hk1.php.net/get/php-7.0.26.tar.gz/from/this/mirror):
注意:
我们拷贝的地址,是(http://hk1.php.net/get/php-7.0.26.tar.gz.asc/from/this/mirror)
我们要删除掉.asc
:
http://hk1.php.net/get/php-7.0.26.tar.gz/from/this/mirror
然后:
wget http://hk1.php.net/get/php-7.0.26.tar.gz/from/this/mirror
我们解压.tar.gz文件:
tar -zxvf mirror
我们使用ll
,可以看到解压之后的文件:
-rw-------. 1 root root 1454 Dec 4 14:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 18824456 Nov 21 20:20 mirror.1
drwxr-xr-x. 15 liaodalin01 liaodalin01 4096 Nov 21 19:57 php-7.0.26
php解压以后有一个问题,就是我们单纯的安装PHP,不能和nginx一起工作,只能和apache一起工作。
如果想和nginx一起工作作为webserver,我们需要安装一个软件(也是php的一个组件),叫作:FPM。
需要我们配置./configure的时候添加 --enable-fpm
用来激活FPM。
我们使用:
yum install -y gcc gcc++ libxml2-devel
我们来编译安装PHP:
1)configure。进入解压后的php-7.0.26根目录,先configure
# 指定安装路径(一般来说是装在/usr/local/下)
./configure --prefix=/usr/local/php7/ --enable-fpm
2)make编译(会比较慢,编译的时间长)
make
3)安装
make install
安装完成之后,我们在家目录下去测试:
cd ~
vim test.php
然后执行:
/usr/local/php7/bin/php test.php
我们可以看到php的info的打印结果。
了解:
php-fpm是什么?
fastcgi的管理器,只能适用于php.
fastcgi是与语言无关的开放扩展,主要讲cgi的解释器进程保持在内存中,借此以获取较高的性能。
fastcgi一直执行着,不过每一次都要花时间去fork一个子进程。
cgi,全称是公共网关接口。是一个协议。
再顺序理一下:
CGI:是一个协议,能够保证webserver传递过来的数据是标准格式,方便CGI程序的编写者。
eg:我们访问index.php的时候,这个时候,nginx会根据配置文件,知道这个不是一个静态文件二直接返回,需要执行php解释器来处理,nginx会发送数据给解释器本次请求的url,以及请求参数等。总之,nginx给php传递什么数据都是由cgi这个协议来决定的。
访问index.php,nginx要启动cgi来处理,而我们的php解释器就是一个cgi程序,现在再来看下fastcgi。
cgi在处理程序的时候会fork一个子进程, 处理完成后释放,下次来请求的时候,再fork,再释放。这样的方式大家会觉得很笨,效率不高,所以fastcgi诞生了。
fastcgi是程序主动启动一个进程,这个进程有n个子进程,然后子进程都会常驻在内存中,避免了fork和释放。当然,fastcgi在忙的时候也会自己启动新的子进程来帮助,在比较闲的时候又会将这些子进程销毁,保证资源不浪费。
PHP-FPM(FastCGI Process Manager) 是实现了fastcgi这个协议的程序,之前是三方的,现在被PHP官网买了。(协议是用于被实现,自己只有标准,没有具体的实现)。所以现在我们就可以直接在官方下载和使用了。
安装mysql
我们进入:
dev.mysql.org
DOWNLOADS - > Community -> MySQL Community Server -> Generally Available(GA) releales 下选择Source Code, 和Generic Linux (Architecture Independent), 通用的linux架构(Compressed TAR Archive)。
我们选择下载,我们是下载到虚拟机上,我们右键,拷贝链接。在:No thanks, just start my download那里:
(https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz)
我们在虚拟机中下载:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz
使用tar解压:
tar -zxvf mysql
我们安装一些依赖包:
yum install -y cmake gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel
我们进入到解压后的mysql根目录,然后cmake 编译:
注意:cmake是一个跨平台的安装工具。
最新版的mysql都使用cmake命令来进行安装,cmake的命令参数较多:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mydata/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_DOWNLOADS=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSET=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled
注意:
如果有错的话重新下载这个版本安装:( wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz)
安装:
make install
我们就安装好了mysql,使用:
mysqld
启动Mysql。
启动之后,我们输入:mysql
就可以进入mysql了。
安装Apache
打开Apache官网:httpd.apache.org
Download -> Apache HTTP Server 2.4.29 (httpd): 2.4.29 is the latest available version 2017-10-05
我们点击右键,拷贝链接(http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.29.tar.gz)。
在命令行,下载到虚拟机用户根目录:
wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.29.tar.gz
使用tar解压:
tar -zxvf httpd
cd进入解压apache解压目录.
./configure --prefix=/usr/local/apache2
就在进行编译前的准备工作。
如果有错误说APR没有被发现,我们就安装APR。
我们在用户根目录下载APR以及APR-Util:
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
并解压:
tar -zxvf apr
tar -zxvf apr-util
我们对apr和apr-util重命名。
mv apr-1.4.5 apr
mv apr-util-1.3.12 apr-util
我们要把这两个文件夹(apr,apr-util)丢到httpd-2.4.20这个目录中。
mv apr apr-utl httpd-2.4.20/srclib/
处理好apr和apr-util之后,我们下载一个依赖pcre(正则):
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
下载好安装它(下载完之后它被命名为download文件夹),它是最后一个依赖。
mv download pcre.tar.bz2
tar -jxvf pcre.tar.bz2
在解压完成后,进入解压目录:
cd pcre-8.37/
配置:
./configure --prefix=/usr/local/pcre-8.37
然后编译:
make
安装:
make install