lamp-720x340.jpg


 ##一、LAMP环境介绍
 
Web 服务器的主要功能是提供网上信息浏览服务。所有网页的集合被称为网站,网站也只有发布到网上才能被他人访问到。所以开发人员需要将写好的网站上传到一台Web服务器[Web Server,也称为 WWW(World Wide Web)服务器]上,并保存到 Web 服务器所管理的文档根目录中,才能完成对网站的发布。

/uploads/fox/29052744_0.png
服务器端编程语言是提供访问商业逻辑的途径以供客户端应用的程序,是需要通过安装应用服务器解析的,而应用服务器又是 Web 服务器的一个功能模块,需要和 Web 服务器安装在同一个系统中。所以服务器端编程语言是用来协助 Web 服务器工作的编程语言,也可以说是对 Web 服务器功能的扩展,并外挂在 Web 服务器上一起工作,用在服务器端执行并完成服务器端的业务处理功能。
 
当 Web 服务器收到一个 HTTP 请求时,就会将服务器下这个用户请求的文件原型响应给客户端浏览器,如果是HTML或是图片等浏览器可以解释的文件,浏览器将直接解释,并将结果显示给用户;如果是浏览器不认识的文件格式,则浏览器将解释成下载的形式,提示用户下载或是打开。如果用户想得到动态响应的结果,就要委托服务器端编程语言来完成了。

/uploads/fox/29052744_1.png
如果需要快速、安全地处理大量数据,则必须使用数据库管理系统。现在的动态网站都是基于数据库的编程,任何程序的业务逻辑实质上都是对数据的处理操作。数据库通过优化的方式,可以很容易地建立、更新和维护数据。数据库管理系统是 Web 开发中比较重要的构件之一,网页上的内容几乎都来自数据库。
 
数据库管理系统也是一种软件,可以和 Web 服务器安装在同一台机器上,也可以不在同一台机器上安装,但都需要通过网络相连接。数据库管理系统负责存储和管理网站所需的内容数据,例如,文字、图片及声音等。当用户通过浏览器请求数据时,在服务器端程序中接收到用户的请求后,在程序中使用通用标准的结构化查询语言(SQL)对数据库进行添加、删除、修改及查询等操作,并将结果整理成 HTML 发回到浏览器上显示。

/uploads/fox/29052744_2.png
LAMP 是 Linux + Apache + MySQL + PHP的标准缩写。Linux 操作系统、网站服务器 Apache、数据库 MySQL 和 PHP 程序模块的连接,形成一个非常优秀的网站数据库的开发平台,是开源免费的自由软件,与 JavaEE 和 ASP.NET 架构形成了三足鼎立的竞争态势,是较受欢迎的开源软件网站开发平台。 LAMP 组合具有简易性、低成本、高安全性、开发速度快和执行灵活等特点,使得其在全球发展速度较快、应用较广,越来越多的企业将平台架构在 LAMP 之上。不管是否是专业人士,都可以利用 LAMP 平台工具来设计和架设网站及开发应用程序,目前主流的网站都在使用 LAMP 作为自己的系统运行平台。

/uploads/fox/29052744_3.png
LAMP 这个特定名词最早出现在1998年,是 Linux 操作系统、Apache 网页服务器、MySQL 数据库管理系统和PHP程序模块4种技术名称开头字母缩写组成的。LAMP 并不是某一家公司的产品,而是一组经常用来搭建动态网站或者服务器的开源软件组合。它们本身都是各自独立的软件,但是因为经常被结合在一起使用,并拥有越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
 
随着开源潮流的蓬勃发展,开放源代码的LAMP组合在发展速度上超过了 JavaEE 和 ASP.NET 等同类开发平台的商业软件。在 LAMP 平台上开发的项目在软件方面的投资成本较低、运行稳定,因此受到整个IT界的关注。
 
二、课程内容介绍

目标: 为PHP项目部署最佳环境(可以使用 Laravel 框架,可以使用 Redis 做缓存,使用 Memcache 存储临时会话,可以使用 Composer 安装常用的代码库)。
要求: 环境部署中的所有软件都是目前最高的稳定版本。
真实: 不用 Window,不用虚拟机安装,使用云服务器(阿里云)部署安装。
 
LinuxCentOS 8.0-19052019-9-24https://www.centos.org/
Apache2.4.412019-08-14http://www.apache.org/
MySQL8.0.172019-7-22https://www.mysql.com/
PHP7.3.102019-9-26https://www.php.net/
集成环境(宝塔,PHPStudy 等)安装超简单,几个命令搞定。可以通过Web图形操作管理自己定义性差,存在安全风险yum 安装安装部署便捷,快速软件版本固定,且版本较低源码安装版本可自选,可自定义性强难度较大,维护相对困难

采用源码包安装,不仅仅是为了搭建完美环境, 对学习也是很有帮助, 可以深入了解自己的环境架构, 对开发有了全局了解。对Apache、MySQL和PHP 等软件有更深刻的认识。
 
三、阿里云环境准备
  1. 访问 https://www.aliyun.com, 注册登录。
  2. 选择云服务器ECS/uploads/fox/29052744_4.png
  3. 点击立即购买/uploads/fox/29052744_5.png
  4. 选择服务器的基础配置

/uploads/fox/29052744_6.png
 按量付费,选择华北3(张家口)有优惠的服务器。




/uploads/fox/29052744_7.png
实验环境可以先选择CPU1核, 内存2GB即可, 项目运行后期可增加。




/uploads/fox/29052744_8.png
/uploads/fox/29052744_9.png
网络不用改默认即可, 因为是按流量付费,所以带宽可以选择最高。




/uploads/fox/29052744_10.png
5. 系统配置, 选择自己定义密码, 设置root密码, 要记住,不然还要在控制台重置密码。
/uploads/fox/29052744_11.png
6. 设置释放时间, 根据自己的项目和学习需求指定。
/uploads/fox/29052744_12.png
7. 进入管理控制台。
/uploads/fox/29052744_13.png
8.可以查看到自己购买的服务器实例
/uploads/fox/29052744_14.png
9.下载Xshell连接通过公网IP连接,远程管理。
可以在学习猿地(www.lmonkey.com)的“猿材料”中下载最新的XSHELL中文版。四、LAMP环境软件之间的关系图谱及下载
/uploads/fox/29052744_15.pngapr-1.6.5.tar.gzApache高一点的版本将这些通用的函数独立出来并发展成为一个新的项目。APR的开发就从Apache中独立出来,Apache仅仅是使用APR而已。主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。apr-util-1.6.1.tar.gzapr-util也是Apache获立出来的一个开发包,该文件中也是包含了一些常用的开发组件。这些组件与apr目录下的相比,它们与apache的关系更加密切一些。比如存储段和存储段组,加密等等。pcre-8.43.tar.gzPCRE是一个用C语言编写的正则表达式函数库,被广泛使用在许多开源软件之中,最著名的莫过于Apache HTTP服务器和PHP脚本语言。zlib-1.2.11.tar.xzzlib 是通用的压缩库,提供了一套 in-memory 压缩和解压函数,并能检测解压出来的数据的完整性(integrity)。zlib 也支持读写 gzip (.gz) 格式的文件。httpd-2.4.41.tar.gzApache最新版源源码包mcrypt-2.6.8.tar.gzmcrypt 是php里面重要的加密支持扩展库。libmcrypt-2.5.8.tar.gz多密码加密库(在PHP中使用),libmcrypt是一个密码库,可以方便地将各种密码组合在一起以方便使用。mhash-0.9.9.9.tar.gzMhash是基于离散数学原理的不可逆向的php加密方式扩展库。mhash的可以用于创建校验数值,消息摘要,消息认证码,以及无需原文的关键信息保存(如密码)等。freetype-2.10.0.tar.gzfreetype库是一个开源的字体引擎,支持多种字符集编码(utf-8等).libpng-1.6.7.tar.gzlibpng是官方的PNG参考库。它支持几乎所有PNG功能,具有可扩展性jpegsrc.v9c.tar.gzjpeglib是处理文件后辍名为".jpg"或".jpeg"图片的库php-7.3.10.tar.gzPHP软件的源码包pecl-memcache-4.0.4.tar.gzPHP的memcache扩展模块源码libevent-2.1.11-stable.tar.gzlibevent作为轻量级的网络库,势必要处理多个事件的请求,若只有几个事件的发生,简单的多线程就可以实现。memcached-1.5.19.tar.gzmemcache服务器软件源码包phpredis-develop.zipPHP的redis扩展库源码redis-5.0.6.tar.gzRedis服务器软件源码包ncurses-6.1.tar.gz提供字符终端处理库,MySQL安装的依赖包mysql-8.0.17.tar.gzMySQL服务器的源码包phpMyAdmin-5.0.0.zipPHP项目,Web方式管理远程服务器的MySQL数据库。
主体采用源码包安装即可, 一些需要的库可直接使用 yum 安装。
在 Linux 服务器中使用 wget 直接在学习猿地的“猿材料”中下载需要的最新源码包。
# wget https://cdn2.lmonkey.com/e7977 ... 0.zip




直接下载到 /root 目录下即可, 使用 unzip 解压到当前目录, 如果没有安装 unzip 工具,可以使用 yum 安装。
编译安装
注意:每个源码包配置编译安装完成后,确认安装目录下是否生成安装文件(并确定目录是否正确)
建议将安装路径指定为[--prefix=/usr/local/软件名]格式
源码软件包安装报错确认与解决方案
echo $?         #安装软件过程中由于频繁刷屏,建议在每个步骤结束后执行此命令
./configure #此步骤报错多是依赖关系没解决或是编译工具未安装(注意关键词提示)
make #此步骤多是编译时选项参数书写错误、不存在、漏写等问题
#一般需要检查上一个步骤:./configure --help




注意:若遇到报错,最简答的办法是,找到问题解决后重新解压软件,重新安装,步骤最简洁。
安装 gcc、gcc-c++、make等编译工具
# yum -y install gcc gcc-c++ make

安装c++ 编译器:yum -y install gcc-c++ ,再次编译通过。




安装libxml进行安装测试
# tar -xf libxml2-2.9.9.tar.gz
# cd /root/lamp/libxml2-2.9.9

# ./configure --prefix=/usr/local/libxml2/
# make
# make install



五、安装 Apache
1. 解压安装Apache需要的所有软件和依赖包到当前目录下,即/root/lamp/下
# tar -xf httpd-2.4.41.tar.gz 
# tar -xf apr-1.6.5.tar.gz
# tar -xf apr-util-1.6.1.tar.gz
# tar -xf pcre-8.43.tar.gz
# tar -xf zlib-1.2.11.tar.xz




2. 源码包 2.4.*版本中默认没有集成 apr的依赖包,所以需要提前解决依赖问题
# cp -a /root/lamp/apr-1.6.5 /root/lamp/httpd-2.4.41/srclib/apr
# cp -a /root/lamp/apr-util-1.6.1 /root/lamp/httpd-2.4.41/srclib/apr-util
缺少 expat库, 需要先安装否则在编译apr时会出错。apr-util致命错误:expat.h:没有那个文件或目录
#yum install -y expat-devel




解压 apr和 apr-util,复制整个目录并取消目录上的版本号到指定位置,./configure时会检测
3. Apache默认需要依赖 pcre软件,但由于 Apache软件版本较高,则系统预安装的 pcre无法使用,所以需要人为手动安装适合版本
# cd /root/lamp/pcre-8.43
# ./configure
# make
# make install




4. 安装 zlib
# cd /root/lamp/zlib-1.2.11
# ./configure
# make
# make install




5. Apache的加密传输模块 mod_ssl,需要安装此软件产生
# yum -y install openssl-devel




6. httpd软件安装
# cd /lamp/httpd-2.4.41
# ./configure \
--prefix=/usr/local/apache2 \
--sysconfdir=/usr/local/apache2/etc \
--with-included-apr \
--enable-so \
--enable-deflate=shared \
--enable-expires=shared \
--enable-rewrite=shared \
--enable-ssl

# make
# make install




--enable-ssl选项是为了后期实现 https提前设置的参数。
7. 启动 Apache测试
# /usr/local/apache2/bin/apachectl start
# ps aux | grep httpd




使用进程查看命令确认 Apache是否启动,是否产生进程
# netstat -tlun




使用网络进程查看命令确认 Apache是否启动,是否开启了 80监听端口
注意事项: 在 CentOS 7操作系统上 Apache默认监听了 Ipv6地址的 80端口,没有监听 Ipv4的地址,所以需要修改下配置文件使其监听。
Listen 0.0.0.0:80




报错提示: 若启动时提示/usr/local/apache2/modules/mod_deflate.so无权限,可关闭 SELinux解决,类似此类.so文件不能载入或没有权限的问题,都是 SELinux问题,MySQL和 Apache都可能有类似问题。
警告提示: 发现启动服务提示:AH00558: httpd: Could not reliably determine the server's fully
qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally
to suppress this message
解决办法: 打开主配置文件 httpd.conf
搜索 ServerName
(约在 200行左右)
改为 ServerName localhost:80(并且去掉前面的#注释)




验证: 通过浏览器输入地址访问:http://服务器 ip,若显示“It works”即表明 Apache正常工作。六、安装 MySQL1. 安装 ncurses
# yum -y install ncurses-devel
# cd /root/lamp/ncurses-6.1
# ./configure --with-shared --without-debug --without-ada --enable-overwrite
# make
# make install




若不安装 ncurses编译 MySQL时会报错2. 安装 cmake3
CMake是一个非常强大的编译自动配置工具,支持各种平台, MySQL被Oracle收了以后版本改为Cmake取代configure。 而新版的MySQL8以后需要使用新版的cmake3来编译自动配置。
yum -y install cmake3 bison




最好加上文本语法分析器bison这个作为依赖一起安装。3. 升级gcc
升级gcc,MySQL的8.0.17最新版本,需要最新的版的gcc, CentOS7中默认的版本太低,不能编译新版的MySQL。
# yum -y install centos-release-scl
yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils
scl enable devtoolset-8 bash
echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile

export CC=/opt/rh/devtoolset-8/root/usr/bin/gcc export
CPP=/opt/rh/devtoolset-8/root/usr/bin/cpp export
CXX=/opt/rh/devtoolset-8/root/usr/bin/c++

以下为替换系统GCC
ln -s /opt/rh/devtoolset-8/root/usr/bin/* /usr/local/bin/
hash -r
gcc --version



4. 加大交换分区,需要最少1G
mkdir -p /var/cache/swap/
dd if=/dev/zero of=/var/cache/swap/swap0 bs=1M count=1024
chmod 0600 /var/cache/swap/swap0
mkswap /var/cache/swap/swap0
swapon /var/cache/swap/swap0

但是这样并不能在系统重启的时候自动挂载交换分区, 这样我们就需要修改 fstab.
修改 /etc/fstab 文件, 新增如下内容:


/var/cache/swap/swap0 none swap sw 0 0



#free -m 最后一行就是交换分区



5. 安装 MySQL
# tar -xf mysql-8.0.17.tar.gz
#useradd -r -s /sbin/nologin mysql




为 MySQL 软件创建运行用户,创建为系统用户,并限制此用户登录操作系统
#cd /root/lamp/mysql-8.0.17/
#cmake3 \
#cd /root/lamp/mysql-8.0.17/
#cmake3 \

-DDOWNLOAD_BOOST=1 #使用BOOST库,
-DWITH_BOOST=/boot/ \ #使用BOOST库的位置
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安装位置
-DCMAKE_C_COMPILER=/opt/rh/devtoolset-8/root/usr/bin/gcc #用指定的gcc编译器
-DCMAKE_CXX_COMPILER=/opt/rh/devtoolset-8/root/usr/bin/g++ \ 用指定的g++编译器
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \ #指定 socket(套接字)文件位置
-DDEFAULT_CHARSET=utf8 \ #扩展字符支持
-DDEFAULT_COLLATION=utf8_general_ci \ #默认字符集
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \ #默认字符校对
-DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装 myisam存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装 innodb存储引擎
-DWITH_MEMORY_STORAGE_ENGINE=1 \ #安装 memory存储引擎
-DWITH_READLINE=1 \ #支持 readline库
-DFORCE_INSOURCE_BUILD=1 \ #启用加载本地数据
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data/mysql \ #指定数据文件的位置
-DMYSQL_USER=mysql \ #指定 mysql运行用户
-DMYSQL_TCP_PORT=3306 #指定 mysql端口

# make
# make install




MySQL安装后需要调整相应配置文件和参数才能正常运行


a. 修改 MySQL 目录的用户归属
#chown -R mysql:mysql /usr/local/mysql




b. 初始化数据库
#mkdir -p /data/mysql/
#chown -R mysql:mysql /data/mysql/
#/usr/local/mysql/bin/mysqld --initialize --user=mysql \
--basedir=/usr/local/mysql --datadir=/data/mysql




注意:在初始化数据时,有一个初始秘密一要记下来, 要通过个密码进行第一次登录。
[Server] A temporary password is generated for root@localhost: v.Mf c. 修改配置文件,并初始化授权表
#vi /etc/my.cnf
[mysqld]
datadir=/data/mysql
basedir=/user/local/mysql
socket=/tmp/mysqld.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d




d. 创建并授权[mysqld_safe]的两个选项目录和文件
# mkdir /var/log/mariadb
# touch /var/log/mariadb/mariadb.log
# chown -R mysql:mysql /var/log/mariadb/

# mkdir /var/run/mariadb/ 最好改个目录,重启这个目录会消失,就不能启动 mysql
# chown -R mysql:mysql /var/run/mariadb/




e. 启动 MySQL 服务
用原本源代码的方式去使用和启动 mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql &




f. 登录 MySQL
# /usr/local/mysql/bin/mysql -u root -p
Enter password: v.Mf mysql>

进入之后必须先更改密码才能操作
mysql>alter user root@'localhost' identified by "123456";

mysql>show databases;
mysql>use test;
mysql>show tables;
mysql>exit




g. 关闭 MySQL服务
关闭 mysql, 最好别用killall方式
# /usr/local/mysql/bin/mysqladmin -uroot -p shutdown
Enter password:123456



七、安装 PHP1. 安装 libxml2
# tar -xf libxml2-2.9.9.tar.gz
# cd /root/lamp/libxml2-2.9.9

# ./configure --prefix=/usr/local/libxml2/
# make
# make install



2. 安装 libmcrypt
# tar -xf libmcrypt-2.5.8.tar.gz
# cd /root/lamp/libmcrypt-2.5.8
# ./configure --prefix=/usr/local/libmcrypt/
# make
# make install




安装 libltdl,也在 libmcrypt源码目录中,非新软件
# cd /root/lamp/libmcrypt-2.5.8/libltdl
# ./configure --enable-ltdl-install
# make
# make install



3. 安装 mhash
# tar -xf mhash-0.9.9.9.tar.gz
# cd /root/lamp/mhash-0.9.9.9
# ./configure
# make
# make install



4. 安装 mcrypt
# tar -xf  mcrypt-2.6.8.tar.gz 
# cd /lamp/mcrypt-2.6.8
# export LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib




变量:LD_LIBRARY_PATH用于指定 libmcrypt和 mhash的库的位置
# ./configure --with-libmcrypt-prefix=/usr/local/libmcrypt
# make
# make install



5. 安装 libpng
# tar -xf libpng-1.6.7.tar.gz 
# cd /root/lamp/libpng-1.6.7
# ./configure --prefix=/usr/local/libpng
# make
# make install



6. 安装 jpeg6
#tar -xf jpegsrc.v9c.tar.gz
# cd /root/lamp/jpeg-9c/
# ./configure --prefix=/usr/local/jpeg9/ --enable-shared --enable-static
# make
# make install




--enable-shared与--enable-static参数分别为建立共享库和静态库使用的 libtool7. 安装 freetype
# tar -xf freetype-2.10.0.tar.gz 
# cd /root/lamp/freetype-2.10.0
# ./configure --prefix=/usr/local/freetype/
# make
# make install

#yum install freetype-devel




PHP 会出现Configure: error: freetype.h not found 错误解决方法如下:
使用:yum install freetype-devel补充依赖包即可8. 安装 PHP
# tar -xf php-7.3.10.tar.gz
# cd /root/lamp/php-7.3.10

# ./configure \
--prefix=/usr/local/php/ \ #指定配置文件目录
--with-config-file-path=/usr/local/php/etc/ \
--with-apxs2=/usr/local/apache2/bin/apxs \ #指定 apache动态模块位置
--with-libxml-dir=/usr/local/libxml2/ \ #指定 libxml位置
--with-jpeg-dir=/usr/local/jpeg9/ \ #指定 jpeg位置
--with-png-dir=/usr/local/libpng/ \ #指定 libpng位置
--with-freetype-dir=/usr/local/freetype/ \ #指定 freetype位
--with-mcrypt=/usr/local/libmcrypt/ \ #指定 libmcrypt位置
--with-gd \ #启用 gd库
--enable-soap \ #支持 soap服务(api)
--enable-mbstring=all \ #支持多字节,字符串
--enable-sockets \ #支持套接字
--with-pdo-mysql=/usr/local/mysql \ #启用 mysql的 pdo模块支持
--with-pdo-mysql=mysqlnd \ Mysql Native Driver 简称:mysqlnd
--with-gd --without-pear #不安装 pear(Composer代替)

# make
# make install




PHP安装后需要调整相应配置文件和参数才能正常运行。
1. 生成 php配置文件
# mkdir /usr/local/php/etc
# cp /root/lamp/php-7.3.10/php.ini-production /usr/local/php/etc/php.ini




2.修改 Apache配置文件,使其识别*.php文件,并能通过 php模块调用 php进行页面解析
# vim /usr/local/apache2/etc/httpd.conf
AddType application/x-httpd-php .php




3.重启 Apache服务
# /usr/local/apache2/bin/apachectl stop
# /usr/local/apache2/bin/apachectl start




4.测试 php页面是否能正常解析(即 apache和 php连通性)
# vim /usr/local/apache2/htdocs/test.php
phpinfo();
?>




通过浏览器输入地址访问:http://Apache服务器地址/test.php9.为 PHP安装 openssl模块
#cd /root/lamp/php-7.3.10/ext
# cd openssl/
#mv config0.m4 config.m4
# /usr/local/php/bin/phpize
# ./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config
# make
# make install




phpize 是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块。
yum -y install autoconf 执行phpize时生成configure文件。
Autoconf是一个用于生成shell脚本的工具,可以自动配置软件源代码以适应多种类似POSIX的系统。为了让你的软件包在所有的不同系统上都可以进行编译。10. 为 PHP安装 memcache扩展模块
#tar -xf pecl-memcache-4.0.4.tar.gz 
# cd pecl-memcache-4.0.4
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make
# make install



11.修改 php配置文件
使其识别并调用 openssl 和 memcache 两个模块
# vi /usr/local/php/etc/php.ini
extension_dir="/usr/local/php/lib/php/extensions/no-debug-zts-20180731/"




取消分号注释,并添加以上路径(此路径来自于模块安装命令的结果)
extension="openssl.so";
extension="memcache.so";




添加以上两个库文件的调用。
重启 apache,刷新 phpinfo 页面,并查看是否有两个新增的模块12. 安装 memcached服务
/uploads/fox/29052744_16.png
MemCache 用到了 libevent 库,libevent 是安装 MemCache 的唯一前提条件,是一套跨平台的事件处理接口的封装,memcached使用 libevent 来进行网络并发连接的处理,能够在很大并发的情况下,仍旧保持快速的响应能力。
# tar -xf memcached-1.5.19.tar.gz 

# yum -y install libevent-devel
# cd /root/lamp/memcached-1.5.19
# ./configure --prefix=/usr/local/memcache
# make
# make install
# useradd -r -s /sbin/nologin memcache




添加 memcache 用户,此用户不用登录,不设置密码
# /usr/local/memcache/bin/memcached -umemcache &




启动 memcache 服务,并设置为后台运行
# netstat -an | grep :11211




检查 memcache 是否正常启动,并监听了 11211 端口
可以安装 yum -y install telnet 连接测试 telnet localhost 11211
成功连接memcached服务器后,与memcached通信的客户端命令并不多,并且使用方法都非常简单。仅有5个常用的命令(区分大小写),如下所示。
  • stats:当前所有memcached服务器运行的状态信息。
  • add:添加一个数据到服务器。
  • set:替换一个已经存在的数据。如果数据不存在,则和add命令相同。
  • get:从服务器端提取指定的数据。
  • delete:删除指定的单个数据。如果要清除所有数据,可以使用flush_all指令。如果以上命令执行发生错误,MemCache协议会对错误部分做出提示。主要有3个错误提示的指令,如下所示。
  • ERROR:普通的错误信息,如指令错误。
  • CLIENT_ERROR <错误信息>:客户端错误。
  • SERVER_ERROR <错误信息>:服务器端错误。

13. 安装 Redis服务
/uploads/fox/29052744_17.png
# tar -xf redis-5.0.6.tar.gz 
# cd /root/lamp/redis-5.0.6




安装
# make
#cd src
#make install PREFIX=/usr/local/redis




移动配置文件到安装目录下
# cd  /root/lamp/redis-5.0.6
# mkdir /usr/local/redis/etc
#mv redis.conf /usr/local/redis/etc




配置redis为后台启动
# vi /usr/local/redis/etc/redis.conf

//将daemonize no 改成daemonize yes




开启redis
#/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf




同样可以使用 telnet 连接测试14. 为 PHP 安装 redis 扩展模块
#unzip phpredis-develop.zip 
#cd /root/lamp/phpredis-develop
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make
# make install



# vi /usr/local/php/etc/php.ini
extension_dir="/usr/local/php/lib/php/extensions/no-debug-zts-20180731/"



extension="openssl.so";
extension="memcache.so";
extension="redis.so";



15. 安装 PHP 依赖管理工具 Composer
/uploads/fox/29052744_18.png
在一般情况下,安装包的数据多数是从 https://githu.com 上下载的,安装包的元数据是从 http://packagist.org 上下载的。国内镜像服务器所做的就是缓存所有安装包和元数据到国内的机房并通过国内的 CDN 进行加速,这样下载安装代码和更新加速的过程更加稳定。国内镜像服务器 URL 为 https://pkg.phpcomposer.com。项目中常用的 Composer 代码包如表24-1所示。
项目中常用的 Composer 代码包guzzlehttp/guzzle功能强大的HTTP请求库https://packagist.org/packages/guzzlehttp/guzzlehashids/hashids数字ID转字符串,支持多语言https://packagist.org/packages/hashids/hashidsintervention/image图片处理,获取图片信息、上传、格式转换、缩放、裁剪等https://packagist.org/packages/intervention/imagephpmailer/phpmailer邮件发送https://packagist.org/packages/phpmailer/phpmailerphpoffice/phpexcelexcel操作类https://packagist.org/packages/phpoffice/phpexcelmonolog/monolog日志操作, composer官方就是用它做例子的https://packagist.org/packages/monolog/monologcatfan/medoo简单易用的数据库操作类,支持各种常见数据库https://packagist.org/packages/catfan/medooleague/route路由调度https://packagist.org/packages/league/routeCarbon/Carbon时间操作https://packagist.org/packages/nesbot/carbon
//下载composer压缩包 
#wget https://getcomposer.org/composer.phar
//移动到全局
#cp composer.phar /usr/local/bin/composer
//更改权限
#chmod u+x /usr/local/bin/composer




因为 Composer 是命令行的操作工具,所以安装完成后,在命令行中输入“composer-V”命令,或直接输入“composer”命令回车执行成功。
Composer 设置国内镜像加速命令:
# /usr/local/bin/composer  \
config -g repo.packagist composer https://packagist.phpcomposer.com
查看Composer全局设置命令
# /usr/local/bin/composer config -gl




在使用 composer install、composer update、composer require 这3个命令时,都会下载 PHP 类库。也都有可能要经过以下几个步骤。
/uploads/fox/29052744_19.png
Composer 执行命令需要经历的步骤
(1)Composer 读取 composer.json 文件,这个 json 在当前执行项目的目录下。
(2)Composer 通过读取的 json 数据去 Packagist.org 获取各个包的包名、作者、下载 URL 等信息。
(3)将从 Packagist.org 获取的元数据存放到当前目录下的 composer.lock 中。
(4)Composer 读取 composer.lock 中的元数据,根据元数据下载包,并且放到当前目录下的 vendor 目录里面。其中, composer update 会将步骤1、步骤2、步骤3、步骤4都执行一遍,所以下载的类库是 composer.json 配置中匹配搭配的最新类库,而 composer install 只执行步骤4。 composer require 会将配置写入 composer.json,然后执行步骤1、步骤2、步骤3、步骤4。如果想了解不同的包的配置是怎么写的,可以在 Packagist.org 中找到,因为每个开源项目都有安装和使用方法。15. 安装 phpMyAdmin
phpMyAdmin 是通过 PHP 代码连接 MySQL 数据库进行管理的。使用 PHP 的 mysqli 扩展模块,如果环境中没有安装,请先使用 phpize 安装。

进入MySQL数据库: \s 或 status
UNIX socket: /tmp/mysqld.sock


# vi /usr/local/php/etc/php.ini 
mysqli.default_socket = /tmp/mysqld.sock




两个改成一样。
由于新版本的mysql账号密码解锁机制不一致导致的
解决办法:
删除创建的用户和授权,
找到 mysql 配置文件并加入
default_authentication_plugin=mysql_native_password
变为原来的验证方式,然后从新创建用户并授权即可
mysql -uroot -p

use mysql;

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';




# unzip phpMyAdmin-5.0.0-alpha1-all-languages.zip
# cp -a /root/lamp/phpMyAdmin-5.0.0-alpha1-all-languages
/usr/local/apache2/htdocs/phpmyadmin
# cd /usr/local/apache2/htdocs/phpmyadmin
# cp -a config.sample.inc.php config.inc.php

# vim config.inc.php (可改,可不改)
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['auth_type'] = 'http';
#设置 auth_type为 http ,即设置为 HTTP身份认证模式(新增即可)




通过浏览器输入地址访问:http://Apache服务器地址/phpmyadmin/index.php
用户名为 root ,密码为 MySQL 设置时指定的 root 密码 12345616. 设置 Apache、MySQL、Memcache、Redis开机自启
借助系统自带脚本 /etc/rc.local(CentOS7,以上改下执行权限,不然开机不执行),此脚本开机后会自动加载,我们可以将源码安装的服务启动命令写入该脚本,间接实现开机自启动。
# vi /etc/rc.local
/usr/local/apache2/bin/apachectl start
/usr/local/mysql/bin/mysqld_safe --user=mysql &
/usr/local/memcache/bin/memcached -umemcache &
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf



17. 项目安装上线:
1、 把 php项目拷贝到网站默认目录下:/usr/local/apache2/htdocs/**
2、 使用 phpMyAdmin创建网站所需数据库
注意事项:注意目录权限和归属,防止权限过大或者权限过小
切记:修改配置文件之前一定要备份一个版本。