文章目录
1.LAMP架构
L:Linux
A:Apache
M:Mysql
P:PHP
即在Linux系统上部署三个服务配合搭建
2.Apache
起源:
- 源于 A Patchy Server,著名的开源Web服务软件
- 1995年时,发布Apache服务程序的1.0版本
- 由Apache软件基金会(ASF)负责维护
- 最新的名称为“Apache HTTP Server”
- 官方站点:http://httpd.apache.org/
主要特点: - 开放源代码、跨平台应用
- 支持多种网页编程语言
- 模块化设计、运行稳定、良好的安全性
软件版本:
1.x: - 目前最高版本1.3,运行稳定
- 向下兼容性较好,但缺乏一些较新功能
2.x: - 目前最高版本2.4
- 具有更多功能特性
- 与1.x相比,配置管理风格存在较大差异
2.1Apache部署
安装httpd服务器采用编译安装
优点:
具有较大的自由度,功能可定制
可机实获得最新的软件版本
普遍适用于大多数Linux版本,便于移植使用
2.1.1编译安装及环境准备
安装主程序
tar -jxvf httpd-2.4.29.tar.bz2
安装apr依赖包并放入主程序内
tar -zxvf apr-1.6.2.tar.gz
tar -zxvf apr-util-1.6.0.tar.gz
mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
apr、apr-util:为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库
安装其他依赖包
yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \ ##为了支持正则表达式
expat-devel \ ##用于解析XML文档的开发库
perl ##内部集成了正则表达式和第三方代码库CPAN,且和pcre-devel支持的正则表达式不一样
配置功能模块并安装
cd httpd-2.4.29
./configure \
--prefix=/usr/local/httpd \ ##指定apache程序安装目录
--enable-so \ ##启动动态加载模块支持,使httpd具备进一步扩展功能的能力
--enable-rewrite \ ##启用网页地址重写功能,用于网站优化及目录迁移
--enable-charset-lite \ ##启用字符集支持,以便支持使用字符集编码的网页
--enable-cgi ##启用CGI脚本程序支持,便于扩展网站的应用访问能力
make && make install ##编译安装
将httpd加入系统服务并开启
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd
# chkconfig: 35 85 21 ##35级别自动运行,第85个启动,第21个关闭
# description: Apache HTTP Server ##服务描述
chkconfig --add httpd ##将httpd加入到SERVICE管理器
systemctl start httpd ##开启httpd服务
修改主机域名(hosts域名方式)
vi /etc/hosts
192.168.20.10 www.aa.com
2.1.2优化,便于操作
ln -s /usr/local/httpd/conf/httpd.conf /etc
##将主配置文件链接至etc目录便于管理
ln -s /usr/local/httpd/bin/* /usr/bin/
##将httpd的bin目录下所有命令链接至/usr/bin下使用户可直接使用
2.1.3修改配置文件
主配置文件:
ServerRoot "/usr/local/httpd" ##apache的默认根目录
Listen 80 #监听的网络端口号
User daemon #设置运行httpd进程时的用户身份,daemon为守护进程
Group daemon #设置运行httpd进程时的组身份
ServerAdmin webmaster@qq.com #设置httpd服务器管理员的邮箱
ServerName www.aa.com #设置web站点的完整主机名(域名)
DocumentRoot "/usr/local/httpd/htdocs" #设置网站根目录,网页所在地
DirectoryIndex index.html index.php #设置网站的默认索引页,可以设置多个首页文件
ErrorLog "logs/error_log" Loglevel warn #设置错误日志路径,错误日志的级别
CustomLog "logs/access_log" common #设置访问日志的路径、日志类型,使用类型为common
PidFile logs/httpd.pid #设置用于保存httpd进程号的文件
AddDefaultCharset UTF-8 #设置站点中的网页默认使用的字符集编码
#Include conf/extra/httpd-default.conf #包含另一个配置文件内容,可以实现一些特殊功能的配置放到一个单独的文件夹中,这样便于独立配置功能的维护而不影响主配置文件(区域配置文件可不开,在需要时可去掉前方#打开)
2.2虚拟web主机
虚拟web主机指在同一台服务器中运行多个Web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”主机
httpd服务支持的虚拟主机类型包括以下三种:
1.基于域名:为每个虚拟主机使用不同域名,但各自对应的IP是相同的
2.基于IP地址:为每个虚拟主机使用不同的域名,且各自对应的IP地址也不同
3.基于端口:这种方式并不使用域名、IP地址来区分不同站点的内容,而是使用了不同的TCP端口号
2.2.1构建多个虚拟web主机
1.分别为多个虚拟主机准备不同的测试主页
2.添加虚拟主机配置
mkdir /opt/aa1
mkdir /opt/aa2
mkdir /opt/aa8080
vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
##基于域名的虚拟主机
<VirtuaHost 192.168.20.10:80>
DocumentRoot "/opt/aa1"
ServerName www.aa1.com
ErrorLog "logs/www.aa1.com._error_log"
Customlog "logs/www.aa1.com.access_log" common
</VirtuaHost>
<Directory "/opt/aa1">
Options Indexes MuliViews FollowSymlinks #控制选项,允许使用符号链接
AllowOverride None #不允许隐含控制文件中的覆盖配置
Order allow,deny
Allow from all
Require all granted #允许任何人访问此区域
</Directory>
##基于IP地址的虚拟主机
<VirtuaHost 192.168.20.11:80>
DocumentRoot "/opt/aa2"
ServerName www.aa2.com
ErrorLog "logs/www.aa2.com._error_log"
Customlog "logs/www.aa2.com.access_log" common
</VirtuaHost>
<Directory "/opt/aa2">
Options Indexes MuliViews FollowSymlinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
##基于端口号的虚拟主机
<VirtuaHost 192.168.20.10:8080>
DocumentRoot "/opt/aa8080"
ServerName www.aa.com
ErrorLog "logs/www.aa.com:8080_error_log"
Customlog "logs/www.aa.com:8080_access_log" common
</VirtuaHost>
<Directory "/opt/aa8080">
Options Indexes MuliViews FollowSymlinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
</Directory>
3.Mysql部署
3.1编译安装及环境准备
安装依赖包
yum -y install \
ncurses \
ncurses-devel \
##以上两种是字符终端下屏幕控制的基本库
bison \ #用于自动生成语法分析器程序
cmake 跨平台安装(编译)工具,可用简单的语句来描述所有平台的安装(编译过程)
创建用于控制mysql的程序用户
useradd -s /sbin/nologin mysql
安装mysql
tar -zxvf mysql-boost-5.7.20.tar.gz
cmake编译安装mysql功能模块配置
cd mysql-5.7.20
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
##安装目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql.sock \
##指定套接字文件的存储路径
-DSYSCONFDIR=/etc \
##指定my.cnf主配置文件的目录
-DSYSTEMD_PID_DIR=/usr/local/mysql \
##指定主服务进程所在的路径
-DDEFAULT_CHARSET=utf8 \
##默认字符集
-DDEFAULT_COLLATION=utf8_general_ci \
##默认编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
##启用InnoDB引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
##启用ARCHIVE引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
##启用BLACKHOLE引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
##启用perfschema引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \
##数据存储路径
-DWITH_BOOST=boost \
##boost库是为C++语言标准库提供扩展的一些C++程序库的总称
-DWITH_SYSTEMD=1
##Mysql5.7原生支持systemd的选项,如果要是用systemctl启动,就必须开启
make && make install
3.2修改配置文件
设置mysql应用程序及主配置文件属主属组
chown -R mysql:mysql /usr/local/mysql
chown mysql:mysql /etc/my.cnf
修改主配置文件
vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]y
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
##将模式配置写入配置文件
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
3.3初始化
将mysql程序加入服务并启动
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system
systemctl daemon-reload ##重启其守护进程才能重启主程序
systemctl start mysqld
将mysql命令加入环境变量以便于操作
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >>/etc/profile
echo 'export PATH' >> /etc/profile #设为全局变量
source /etc/profile
初始化
##若将命令加入环境变量,便可直接使用
mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
初始化密码
mysqladmin -u root -p password 123456
登录mysql
mysql -uroot -p123456
3.4修改密码及忘记密码操作
修改密码
方法一:
先登录mysql
mysql> set password=password('新密码');
方法二:
mysqladmin -u用户名 -p旧密码 password 新密码
方法三:
首先登录mysql
mysql> use mysql;
mysql> update mysql.user set authentication_string=password('新密码') where user='用户名' and host='localhost';
mysql> flush privileges;
忘记密码
vi /etc/my.cnf
[mysqld]
##末尾添加
skip_name_resolve
skip_grant_tables
bind-address=0.0.0.0
systemctl restart mysqld
3.5基本数据库管理命令
查看已存在数据库
mysql> SHOW DATABASES;
查看当前数据库中有哪些表
mysql> USE mysql;
mysql> SHOW TABLES;
查看表的结构
mysql> USE mysql;
mysql> DESCRIBE user; ##user为表
4.PHP部署
4.1编译安装及环境准备
安装依赖包
yum -y install \
libjpeg libjpeg-devel \
##jpeg图像压缩库
libpng libpng-devel \
##png图像压缩库
freetype freetype-devel \
##字体引擎,统一的接口访问多种字体格式文件
libxml2 libxml2-devel \
##xml程序库,用来对xml文件进行分析
zlib zlib-devel \
##数据压缩用的函式库,可相当轻松的通过把压缩数据写入到有gzip头的文件中
curl curl-devel \
##利用URL规则在命令行下工作的文件传输工具
openssl openssl-devel
##OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛应用在互联网的网页服务器上
安装主程序
tar -jxvf php-7.1.10.tar.bz2
开启配置功能并安装
cd php-7.1.10
./configure \
--prefix=/usr/local/php \ #安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \ #让apache支持php
--with-mysql-sock=/usr/local/mysql/mysql.sock \ #指明mysql的套接字路径
--with-mysqli \ #调用mysql的存储过程、处理mysql事务,而且还可以使访问数据库工作变得更加稳定
--with-zlib \ #打开zlib函式库
--with-curl \ #调用curl规则
--with-gd \ #打开gd库,gd库使为了创建新图像或处理已有的图像
--with-jpeg-dir \ #让gd库支持jpeg格式
--with-png-dir \ #让gd库支持png格式
--with-freetype-dir \ #打开字体引擎
--with-openssl \ #打开ssl安全套接字功能
--enable-mbstring \ #开启mbstring扩展,有了这个功能可设置其支持utf-8编码
--enable-xml \ #支持XML文件格式
--enable-session \ #开启会话保持功能
--enable-ftp \ #开启ftp扩展
--enable-pdo \ #PDO作用是统一各种数据库的访问接口
--enable-tokenizer \ #分词器,Tokenizer实际上只是生成了一个字典,并且统计了词频等信息
--enable-zip #打开对zip文件的支持
make && make install
4.2配置php
配置mysqli用于调用mysql
cd php-7.1.10
cp php.ini-development /usr/local/php/lib/php.ini
vi /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai
验证php安装的模块完整
/usr/local/php/bin/php -m
配置apache配置用于使apache支持php模块
vi /etc/httpd.conf
##在合适位置新增
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
##添加php格式主页,写在前面的打开网页默认打开,后面的打开网页时需添加格式后缀,如:/php
DirectoryIndex index.php index.html
4.2.1测验apache支持php
配置php格式网页主页
cd /usr/local/httpd/htdocs
vi index.php
<?php
phpinfo() ##php默认主页
?>
4.2.2测验php可以调用mysql
配置mysql数据库内容
登录mysql
mysql> CREATE DATABASE myadm; ##添加数据库命名myadm
mysql> GRANT all privileges ON myadm.* TO 'myadm'@'%' IDENTIFIED BY ‘admin123’;
mysql> GRANT all privileges ON myadm.* TO 'root'@'www.aa.com' IDENTIFIED BY ‘123456’;
mysql> flush privileges;
配置php格式网页主页
vi /usr/local/httpd/htdocs/index.php
<?php
$link=mysqli_connect('192.168.20.10','myadm','admin123');
if($link) echo "<h1>Success!</h1>";
else echo "Fail!";
?>
4.3图形化界面管理mysql数据库
安装phpMyadmin软件
unzip phpMyAdmin-4.7.6-all-languages.zip
配置
mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm
cd /usr/local/httpd/htdocs/myadm
cp config.sample.inc.php config.inc.php
vi config.inc.php
$cfg['Servers'][$i]['host'] = '192.168.20.10';
4.3.1登录图形化界面mysql数据库
http://192.168.20.10/myadm