11.1 LAMP架构介绍
一、 LAMP架构介绍
Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组经常使用来搭建动态网站或者服务器的开源软件,自己都是各自独立的程序,可是由于常被放在一块儿使用,拥有了愈来愈高的兼容度,共同组成了一个强大的Web应用程序平台
php
Linux
Linux 是免费开源软件,这意味着源代码可用的操做系统。
Apache(httpd)
Apache 是使用中最受欢迎的一个开放源码的WEB服务器软件。
MySQL/MariaDB
MySQL 是多线程、多用户的SQL数据库管理系统。
MySQL 已由Oracle公司自 2010 年 1 月 27 日经过SUN购买。SUN 最初于 2008 年 2 月 26 日收购 MySQL。
PHP,Perl 或 Python
PHP 是一种编程语言最初设计生产动态网站。PHP 是主要用于服务器端的应用程序软件。Perl 和 Python 相似
html
二、LAMP的工做原理
浏览器向服务器发送http请求,服务器 (Apache) 接受请求,因为php做为Apache的组件模块也会一块儿启动,它们具备相同的生命周期。Apache会将一些静态资源保存,而后去调用php处理模块进行php脚本的处理。脚本处理完后,Apache将处理完的信息经过http response的方式发送给浏览器,浏览器解析,渲染等一系列操做后呈现整个网页
node
11.2 MySQL、MariaDB介绍
MySQL
一、MySQL是一个关系型数据库,由mysql ab公司开发
二、mysql在2008年被sun公司收购(10亿刀),2009年sun公司被oracle公司收购(74亿刀)
三、MySQL官网https://www.mysql.com
四、MySQL5.6变化比较大,5.7性能上有很大提高
Mariadb
一、Mariadb为MySQL的一个分支,
二、官网:https://mariadb.com/
三、MariaDB主要由SkySQL公司(现改名为MariaDB公司)维护,SkySQL公司由MySQL原做者带领大部分原班人马创立.
四、Mariadb5.5版本对应MySQL的5.5,10.0对应MySQL5.6
版本区别
一、Community 社区版本
二、Enterprise 企业版
三、GA(Generally Available)指通用版本,在生产环境中用的
四、DMR(Development Milestone Release)开发里程碑发布版
五、RC(Release Candidate)发行候选版本
六、Beta开放测试版本
七、Alpha内部测试版本
mysql
11.3/11.4/11.5 MySQL安装
一、安装前准备
##建立用户
linux
[root@localhost ~]#useradd -s /sbin/nologin mysql [root@localhost ~]# id mysql uid=1000(mysql) gid=1000(mysql) 组=1000(mysql)
##建立数据目录。c++
[root@localhost ~]mkdir -p /data/mysql [root@localhost ~]chown -R mysql.mysql /data/mysql [root@localhost ~]ll -d /data/mysql/ drwxr-xr-x 2 mysql mysql 6 6月 25 11:29 /data/mysql/
##安装mysql所需依赖包sql
[root@localhost ~]yum install -y gcc gcc-c++ make cmake ncurses-devel bison-devel autoconf libtool libXpm-devel libvpx-devel gmp-devel
注:若是缺乏这些依赖包,编译过程会保错,源码安装大部分报错为缺乏依赖包的引发的
二、安装mysql
方式1:源码编译安装MySQL
数据库
#进入软件源码存放目录 [root@localhost ~]cd /usr/local/src/ #下载源码包 [root@localhost src]wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36.tar.gz #解压源码包 [root@localhost src]tar xvf mysql-5.6.36.tar.gz #进入解压后的源码目录 [root@localhost src]cd mysql-5.6.36 #设置安装参数,cmake至关于configure ##下面的反斜杠是脱义字符,加上它咱们能够把一行命令写成多行 [root@localhost ~]cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \ #指定mysql安装目录 -DMYSQL_DATADIR=/data/mysql \ #指定数据存放的目录 -DSYSCONFDIR=/etc/ \ #指定配置文件所在目录 -DWITH_MYISAM_STORAGE_ENGINE=1 \ #安装启用myisam引擎支持 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装启用innodb引擎支持 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ #指定本地sock文件 -DMYSQL_TCP_PORT=3306 \ #指定TCP端口为3306 -DENABLED_LOCAL_INFILE=1 \ #启用本地数据导入支持 -DWITH_PARTITION_STORAGE_ENGINE=1 \ #安装数据库分区 -DEXTRA_CHARSETS=all \ #启用额外的字符集类型(默认为all) -DDEFAULT_CHARSET=utf8 \ #指定默认的字符集为utf8 -DDEFAULT_COLLATION=utf8_general_ci #设定默认排序规则(utf8_general_ci快速/utf8_unicode_ci准确) 此处省略cmake过程 [root@localhost mysql-5.6.36]echo $? ##检查是否有错误。 0 [root@localhost mysql-5.6.36]make && make install #编译 && 安装 ... 省略编译安装的过程 [root@localhost mysql-5.6.36]# echo $? ##再次检查安装是否有错误。若是是0就表示安装没问题。 0
方式2:二进制包安装MySQL
源代码方式和二进制包是软件包的两种形式。二进制包里面包括了已经通过编译,能够立刻运行的程 序。你只须要下载和解包(安装)它们之后,就立刻可使用。源代码包里面包括了程序原始的程序代码,须要在你的计算机上进行编译之后才能够产生能够运行程 序,因此从源代码安装的时间会比较长
apache
#进入软件源码存放目录 [root@localhost ~]cd /usr/local/src/ #下载二进制包 [root@localhost src]wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz #解压二进制包 [root@localhost src]tar xvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz #将解压好的目录移动到/usr/local/目录下重命名为mysql [root@localhost src]mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql #进入/usr/local/mysql目录 [root@localhost src]cd /usr/local/mysql ###到此安装成功
三、初始化配置编程
#初始化数据库 [root@localhost ~]cd /usr/local/mysql/ [root@localhost mysql]./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql #备份初始配置文件 [root@localhost mysql]cp /etc/my.cnf /etc/my.cnf.bak #清空配置文件 [root@localhost mysql]echo > /etc/my.cnf #编辑配置文件写入下面的内容后保存退出 [root@localhost mysql]vim /etc/my.cnf ################################### [mysqld] port = 3306 basedir=/usr/local/mysql datadir=/data/mysql/ socket=/tmp/mysql.sock user=mysql default-time-zone=system default-storage-engine=InnoDB log-error=/var/log/mysqld.log sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES ################################### ##将mysql启动脚本放入/etc/init.d/目录中重命名为mysqld [root@localhost ~]cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld ##编辑启动脚本 [root@localhost mysql]# vi /etc/init.d/mysqld 把下面两个修改一下,否则启动会报错 basedir=/user/local/mysql #修改为mysql的安装目录 datadir=/data/mysql #修改为mysql的数据目录 ##将mysql启动脚本加入chkconfig管理 [root@localhost ~]# chkconfig --add mysqld ##设置mysql开机自启动 [root@localhost ~]# chkconfig mysqld on
11.6 MariaDB安装
centos7系统自带mariadb
一、查询系统是否安自动装过mariadb
[root@localhost ~]# rpm -qa|grep mariadb-libs mariadb-libs-5.5.56-2.el7.x86_64
二、卸载系统自带的mariadb
[root@localhost ~]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps warning: /etc/my.cnf saved as /etc/my.cnf.rpmsave ###卸载时会自动备份/etc/my.cnf文件,这时的my.cnf文件是以前安装mysql的配置文件。
三、安装依赖包
[root@localhost ~]# yum install -y libevent [root@localhost ~]# yum groupinstall -y Development Tools [root@localhost ~]# yum install -y ncurses-devel openssl-devel openssl
四、安装mariadb
方式1:源码安装MariaDB
下载源码包
[root@localhost ~]# cd /usr/local/src [root@localhost src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/source/mariadb-10.2.6.tar.gz [root@localhost src]# ll -d mariadb-10.2.6.tar.gz -r--------. 1 root root 70531254 Jun 21 22:53 mariadb-10.2.6.tar.gz
解压源码包
[root@localhost ~]# tar zxf mariadb-10.2.6.tar.gz [root@localhost ~]# cd mariadb-10.2.6 [root@localhost mariadb-10.2.6]# pwd /usr/local/src/mariadb-10.2.6
cmake设置安装参数
[root@localhost mariadb-10.2.6]cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \ -DMYSQL_DATADIR=/data/mariadb \ #和mysql同样须要先建立数据存放目录再指定 -DSYSCONFDIR=/etc \ -DWITHOUT_TOKUDB=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STPRAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWIYH_READLINE=1 \ -DWIYH_SSL=system \ -DVITH_ZLIB=system \ -DWITH_LOBWRAP=0 \ -DMYSQL_UNIX_ADDR=/tmp/mariadb.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci [root@localhost mariadb-10.2.6]echo $? #检查是否出错 0
编译安装
[root@localhost mariadb-10.2.6]# make && make install [root@localhost mariadb-10.2.6]# echo $? 0
方式2:二进制包安装MariaDB
下载二进制包
[root@localhost src]wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
解压二进制包,而后移动到/usr/local/目录下重命名为mariadb
[root@localhost src]# tar zxf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz [root@localhost src]# mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb
三、初始化配置
建立mysql数据库用户 [root@localhost mariadb-10.2.6]# useradd mysql -s /usr/bin/nologin -M ##以前安装mysql时已经建立过了
建立数据库数据存放目录及赋予权限
root@localhost mariadb-10.2.6]# mkdir /data/mariadb -p root@localhost mariadb-10.2.6]# chown mysql.mysql /data/mariadb /usr/local/mariadb -R
初始化mariadb
[root@localhost mariadb-10.2.6]# cd /usr/local/mariadb/ [root@localhost mariadb]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mariadb
复制配置文件到/etc目录下
[root@localhost mariadb]# cd /usr/local/mariadb/support-files [root@localhost support-files]# cp my-small.cnf /etc/my.cnf
#在配置文件中 [mysqld] 标签下面一行添加如下内容
datadir = /data/mariadb
[root@localhost support-files]vi /etc/my.cnf [mysqld] datadir = /data/mariadb port = 3306
复制mariadb启动脚本到/etc/init.d/目录下,重命名为mariadbd
[root@localhost support-files]# cp mysql.server /etc/init.d/mariadbd 修改数据目录和主目录basedir和datadir [root@localhost support-files]vim /etc/init.d/mariadbd basedir=/usr/loacl/mariadb datadir=/data/mariadb
将mariadbd服务加入chkconfig管理
[root@localhost support-files]# chkconfig --add mariadbd [root@localhost support-files]# chkconfig mariadbd on
修改环境变量
[root@localhost mariadb]# vim /etc/profile export PATH=/usr/local/mariadb/bin/:$PATH
启动mariadbd服务
systemctl start mariadbd
或者
mysql_safe start --defaults-file=/etc/my.cn --datadir=/data/mariadb
11.7/11.8/11.9 Apache安装
简介:
Apache是一个基金会的名字,httpd才是咱们要安装的软件包,早期它的名字就叫apache
Apache官网www.apache.org
准备源码安装包
###1:进入存放源码的目录
[root@localhost ~]cd /usr/local/src
###2:下载源码安装包
[root@localhost src]wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz [root@localhost src]wget http://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz [root@localhost src]wget http://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.bz2 [root@localhost src]wget https://sourceforge.net/projects/expat/files/expat/2.2.3/expat-2.2.3.tar.bz2
##(注:apr和apr-util是一个通用的函数库,它让httpd能够不关心底层的操做系统平台,能够很方便地移植(从linux移植到windows))
###3:解压源码包
[root@localhost src]tar zxf httpd-2.4.33.tar.gz [root@localhost src]tar jxf apr-util-1.6.1.tar.bz2 [root@localhost src]tar zxf apr-1.6.3.tar.gz [root@localhost src]tar jxf expat-2.2.3.tar.bz2echo
编译安装
1:编译安装expat
####apr-util 1.6.0再也不捆绑安装 expat ,但又须要expat的支持,因此咱们得手动先安装expat。否则编译 apache 的时候会报错。
###进入expat-2.2.3源码目录
[root@localhost src]# cd expat-2.2.3
###设置安装参数
[root@localhost expat-2.2.3]# ./configure --prefix=/usr/local/expat
###编译安装
[root@localhost expat-2.2.3]# make && make install
#检查是否有错误。输出0表示安装成功
[root@loclhost apr-1.6.3]# echo $? 0
2:编译安装apr依赖包
###进入apr-util源码目录
[root@localhost src]# cd /usr/local/src/apr-1.6.3
###设置安装参数
[root@localhost apr-1.6.3]# ./configure --prefix=/usr/local/apr
###编译并安装
[root@localhost apr-1.6.3]# make -j4 && make -j4 install
#检查是否有错误。输出0表示安装成功
[root@localhost apr-1.6.3]# echo $? 0
3:编译安装apr-util
###进入apr-util源码目录
[root@localhost src]# cd /usr/local/src/apr-util-1.6.1
###设置安装参数
[root@localhost apr-util-1.6.1]# ./configure \ --prefix=/usr/local/apr-util \ --with-apr=/usr/local/apr \ --with-expat=/usr/local/expat
###编译并安装
[root@localhost apr-util-1.6.1]# make && make install
#检查是否有错误。输出0表示安装成功
[root@long0000 apr-util-1.6.1]# echo $? 0
4:编译安装httpd
###进入httpd源码目录
[root@localhost src]# cd /usr/local/src/httpd-2.4.33
###设置安装参数
[root@localhost httpd-2.4.33]# ./configure \ --prefix=/usr/local/apache2.4 \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util \ --enable-so \ --enable-mods-shared=most
###--enable-so 可让Apache支持动态扩展,
###--enable-mods-shared=most 让Apache加载大多数须要用到的模块。
#检查是否有错误。输出0表示没有错误
[root@localhost httpd-2.4.33]# echo $? 0
#####若是报错:
configure: error: pcre-config for libpcre not found.
#####解决办法:
yum install -y pcre-devel
###编译并安装
[root@localhost httpd-2.4.33]# make && make install
#检查是否有错误。输出0表示安装成功
[root@localhost httpd-2.4.33]# echo $? 0
Apache经常使用目录
./bin 存放Apache主要的二进制可执行文件,还有一些命令,httpd,apachectl等。 ./conf 存放配置文件的目录 ./logs 存放日志文件的目录 ./modules 存放模块的目录,一个文件就是一个模块,也就是一个功能
查看httpd加载了哪些模块
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_event_module (static) authn_file_module (shared) ...
(static) 表示静态的模块,已经编译到httpd主程序中,
(shared) 表示这个一个扩展的模块。
启动httpd服务
[root@localhost ~]/usr/local/apache2.4/bin/apachectl -t #检查配置文件是否有错误 ###AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fed3:3e41. Set the 'ServerName' directive globally to suppress this message
这个错误不会影响服务的启动,只是一个提示,没有定义ServerName
启动httpd服务
[root@localhost ~]/usr/local/apache2.4/bin/apachectl start 。
11.10/11.11/11.12 安装PHP5
简介:
PHP官网www.php.net
当前主流版本为5.6/7.1
安装PHP5
安装依赖包
[root@localhost ~]yum -y install libxml2-devel openssl-devel bzip2-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel
准备源码包
##进入存放源码包的目录
[root@localhost ~]cd /usr/local/src/
##下载源码包
[root@localhost src]wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
##解压源码包
[root@localhost src]tar zxf php-5.6.30.tar.gz
##进入源码目录
[root@localhost src]cd php-5.6.30
配置安装参数
[root@localhost php-5.6.30]./configure --prefix=/usr/local/php \ --with-apxs2=/usr/local/apache2.4/bin/apxs \ --with-config-file-path=/usr/local/php/etc \ --with-mysql=/usr/local/mysql \ --with-pdo-mysql=/usr/local/mysql \ --with-mysqli=/usr/local/mysql/bin/mysql_config \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-iconv-dir \ --with-zlib-dir \ --with-bz2 \ --with-openssl \ --with-mcrypt \ --enable-soap \ --enable-gd-native-ttf \ --enable-mbstring \ --enable-sockets \ --enable-exif
####重要安装参数说明:
--prefix 指定安装路径
--apxe2 apache的一个工具,能够自动将PHP生成的模块文件放到modules目录下,而且添加相关配置
--with-config-file 指定php配置文件所在的路径
--with-mysql 指定mysql的路径
--with-pdo-mysql、--with-mysqli : mysqli扩展技术不只能够调用MySQL的存储过程、处理MySQL事务,并且还可使访问数据库工做变得更加稳定。
##更多参数详细说明参考:https://www.cnblogs.com/52php/p/5668828.html
编译安装
[root@localhost php-5.6.30]make && make install
#检查是否有错误。输出0表示安装成功
[root@localhost php-5.6.30]# echo $? 0
##复制参考配置文件到安装PHP指定的配置文件目录下
[root@localhost php-5.6.30]cp php.ini-production /usr/local/php/etc/php.ini
11.13 安装PHP7
安装依赖包
[root@localhost ~]yum -y install libxml2-devel openssl-devel bzip2-devel libjpeg-devel libpng-dvel freetype-devel libmcrypt-devel
##进入存放源码包的目录
[root@localhost ~]cd /usr/local/src/
##下载源码包
[root@localhost src]wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
##解压源码包
[root@localhost src]tar jxf php-7.1.6.tar.bz2
##进入源码目录
[root@localhost src]cd php-7.1.6
设置安装参数
[root@localhost php-7.1.6]./configure --prefix=/usr/local/php7 \ --with-apxs2=/usr/local/apache2.4/bin/apxs \ --with-config-file-path=/usr/local/php7/etc \ --with-pdo-mysql=/usr/local/mysql \ --with-mysqli=/usr/local/mysql/bin/mysql_config \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-iconv-dir \ --with-zlib-dir \ --with-bz2 \ --with-openssl \ --with-mcrypt \ --enable-soap \ --enable-gd-native-ttf \ --enable-mbstring \ --enable-sockets \ --enable-exif
编译安装
[root@localhost php-7.1.6]make -j4 && make -j4 install
#检查是否有错误。输出0表示安装成功
[root@localhost php-7.1.6]# echo $? 0
##复制参考配置文件到安装PHP指定的配置文件目录下
[root@localhost php-7.1.6]# cp php.ini-production /usr/local/php7/etc/php.ini
11.14/11.15 Apache和PHP结合
检查apxs自动添加的配置
[root@localhost ~]# cat /usr/local/apache2.4/conf/httpd.conf | grep "LoadModule php" LoadModule php5_module modules/libphp5.so LoadModule php7_module modules/libphp7.so
##这就是apxs工具在编译PHP的时候,在配置文件中添加的两行配置
##同时加载了PHP5和PHP7,这样会有冲突,须要注释掉一条才能正常使用PHP解析
注释掉加载PHP7的那一行配置
#LoadModule php7_module modules/libphp7.so
还须要在配置文件中修改下面的内容
[root@localhost conf]# vim httpd.conf 找到: #ServerName www.example.com:80 去掉前面的#号,可解决安装完apache时,启动服务的那个警告 找到: <Directory /> AllowOverride none Require all denied </Directory> 将 Require all denied 修改成 Require all granted 找到: AddType application/x-gzip .gz .tgz 在下面添加一行:AddType application/x-httpd-php .php 找到: <IfModule dir_module> DirectoryIndex index.html index.php </IfModule> 在DirectoryIndex后面添加上 index.php
##index通常为索引页, 也就是默认页面
##当访问一个域名时,域名后面没有指定任何文件时,默认就会请求这个文件。
##好比访问www.baidu.com 实际就是访问的是 www.baidu.com/index.php
如须要在Windows下测试,还须要在防火墙中配置容许访问80端口,或者关闭防火墙
##用 Firewalld 添加容许访问80端口
[root@loclhost conf]# firewall-cmd --add-port=80/tcp success
或者 iptables 添加容许访问80端口
[root@localhost conf]# iptables -I INPUT -p tcp --dport=80 -j ACCEPT
##测试配置文件是否有语法错误
[root@localhost conf]# cd /usr/local/apache2.4/bin [root@localhost bin]# ./apachectl -t Syntax OK #输出Syntax OK 表示配置文件没有语法错误。
##启动服务
[root@localhost bin]# ./apachectl start
##若是已经启动过httpd服务,修改了配置文件须要从新加载配置文件
[root@localhost bin]# ./apachectl graceful
使用curl命令 测试访问默认页面,
##-I选项获取页面的头部信息,第一行的状态码是200表示能正常访问页面
[root@localhost bin]# curl -I localhost HTTP/1.1 200 OK Date: Sun, 26 Jun 2018 10:08:39 GMT Server: Apache/2.4.33 (Unix) PHP/5.6.30 Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT ETag: "2d-432a5e4a73a80" Accept-Ranges: bytes Content-Length: 45 Content-Type: text/html
测试访问PHP页面
[root@localhost bin]# vi /usr/local/apache2.4/htdocs/test.ph ##加入下面的内容 <?php echo hello php; ?>
##使用curl命令获取test.php页面的头部信息
[root@localhost bin]# curl -I localhost/test.php HTTP/1.1 200 OK Date: Sun, 26 Jun 2018 10:09:08 GMT Server: Apache/2.4.33 (Unix) PHP/5.6.30 X-Powered-By: PHP/5.6.30 Content-Type: text/html; charset=UTF-8
##测试解析PHP 显示以下为正常
[root@localhost bin]# curl localhost/test.php hello php