LAMP架构编译
- LAMP架构简介
- LAMP工作原理:
- 1.编译安装Apache
- 准备工作
- 编译及安装
- 访问测试
- 2.编译安装MySQL数据库
- 准备工作
- 编译及安装
- 测试验证
- 3.编译安装PHP
- 准备工作
- 配置模块说明
- 编译及安装
- 测试验证
- 4.编译安装phpMyadmin
- 编译及安装
- 数据库与php的联通
- 测试验证
LAMP架构简介
LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和
相关软件,能够提供动态 Web 站点服务及其应用开发环境。LAMP 是一个缩写词,具
体包括 Linux 操作系统、Apache 网站服务器、MySQL 数据库服务器、PHP(或 Perl、
Python)网页编程语言。
LAMP工作原理:
1.编译安装Apache
- 安装Apache所需软件
准备工作
首先准备Apache源码包,安装apr和prel,是Apache支持跨平台应用和正则必不可少的
安装依赖包:
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.gz
解压apr跨平台组件包和httpd源码包到当前目录下;并将跨平台组件包移动到源码包srclib目录下
[root@localhost opt]# tar zxvf apr-1.6.2.tar.gz
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar jxvf httpd-2.4.29.tar.bz2
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
安装环境:
[root@localhost opt]# yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl
- 依赖环境包说明:
gcc ###C语言的编译器
gcc-c++ ###C++的编译器
make ###源代码编译(源代码转换成二进制文件)
pcre-devel ###支持正则表达式
expat-devel ###网站解析HTML文件
perl ###perl编译器
configure配置
[root@localhost ~]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
- 配置模块说明
–prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd
–enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。
–enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
–enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码
–enable-cgi:启用 CGI 脚本程序支持,便于扩展网站的应用访问能力。
编译及安装
[root@localhost ~]# make && make install
优化执行路径:
[root@localhost ~]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
设置系统服务:
[root@localhost bin]# cp apachectl /etc/init.d/httpd '//将启动脚本复制到/etc/init.d/初始化脚本文件中,并重命名为httpd'
[root@localhost bin]# cd /etc/init.d/
[root@localhost init.d]# ls
functions httpd netconsole network README
[root@localhost init.d]# vim /etc/init.d/httpd
#!/bin/sh '//在行首插入下两行内容,并保存退出'
\# chkconfig: 35 85 21 '//35级别自动运行 第85个启动 第21个关闭' (85和21数字可以自定义,35指字符和图形终端)
\# description: Apache is a World Wide Web server
[root@localhost init.d]# chkconfig --add httpd '//将httpd加入到SERVICE管理器'
[root@localhost init.d]# chmod +x /etc/init.d/httpd
[root@localhost init.d]# service httpd start
[root@localhost init.d]# netstat -anutp |grep 80
tcp6 0 0 :::80 :::* LISTEN 127730/httpd
修改主配置文件:
[root@localhost bin]# vi /etc/httpd.conf
ServerName www.aa.com:80 ##要想域名访问,这里需要修改
[root@localhost bin]# apachectl -t //-t检查语法错误做过启动服务优化后httpd -t同样效果
Syntax OK
[root@localhost bin]# systemctl restart httpd
访问测试
2.编译安装MySQL数据库
准备工作
依赖包:
mysql-boost-5.7.20.tar.gz
安装:
[root@localhost opt]# yum -y install \
ncurses \ ##字符终端的处理库,是一种计算机语言
ncurses-devel \
bison \
cmake ##mysql只支持cmake安装
创建程序账号:
[root@localhost opt]# useradd -s /sbin/nologin mysql //新增mysql作为禁止登入的程序账号
[root@localhost opt]# tail -1 /etc/passwd //查看新增用户
mysql:x:1001:1001::/home/mysql:/sbin/nologin
[root@localhost opt]# tar xf mysql-boost-5.7.20.tar.gz //解压源码包
[root@localhost opt]# ls 查看解压后目录文件
mysql-5.7.20 mysql-boost-5.7.20.tar.gz
[root@localhost opt]# cd /opt/mysql-5.7.20
[root@localhost mysql-5.7.20]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
配置模块说明
1、DCMAKE_INSTALL_PREFIX:指定将 mysql 数据库程序安装到某目录下,如目录/usr/local/ mysql。
2、DMYSQL_UNIX_ADDR:指定套接字文件的存储路径,数据库连接的文件
3、DSYSCONFDIR:指定初始化参数文件目录
3、DDEFAULT_CHARSET:指定默认使用的字符集编码,如 utf8。
5、DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci 是适用于 UTF-8 字符集的通用规则。
6、DWITH_INNOBASE_STORAGE_ENGINE=1 :安装INNOBASE存储引擎
7、DWITH_ARCHIVE_STORAGE_ENGINE=1 :安装ARCHIVE存储引擎
8、DWITH_BLACKHOLE_STORAGE_ENGINE=1 :安装ARCHIVE存储引擎
9、DWITH_PERFSCHEMA_STORAGE_ENGINE :安装FEDERATED存储引擎
编译及安装
[root@localhost mysql-5.7.20]# make && make install
数据库目录进行权限调整
[root@localhost mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/ ##将mysql下的所有目录及文件属主和属组改为mysql
建立调整配置文件:
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] #程序
user = mysql #运行用户
basedir = /usr/local/mysql #根目录
datadir = /usr/local/mysql/data #用户目录
port = 3306
character_set_server = utf8 #服务器设置字符
pid-file = /usr/local/mysql/mysql.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
设置环境变量:
[root@localhost mysql-5.7.20]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@localhost mysql-5.7.20]# echo 'export PATH' >> /etc/profile
[root@localhost mysql-5.7.20]# source /etc/profile
初始化MySQL数据库:
[root@localhost mysql-5.7.20]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld \
--initialize-insecure \ ##初始化的命令
--user=mysql \ ##指明用户
--basedir=/usr/local/mysql \ ##指定了工作目录
--datadir=/usr/local/mysql/data ##在指定了数据存放的位置
编译启动文件:
[root@localhost mysql]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /lib/systemd/system/mysqld.service //将服务文件拷贝到系统服务目录下
[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# systemctl start mysqld
[root@localhost ~]# netstat -ntap|grep 3306
tcp6 0 0 ::3306 ::: * LISTEN 50925/mysqld
[root@localhost ~]# mysqladmin -u root -p password "123123" '//给root用户设置密码'
##mysqladmin -u用户名 -p旧密码 password 新密码,初次设置时没有旧密码,因此直接回车就可以了, password后面跟的新密码
[root@localhost mysql]# mysqladmin -u root -p password
##password 后面不跟新密码,则需要进入交互模式中手动输入两次
登录:
[root@localhost ~]# mysql -u root -p
Enter password:
测试验证
3.编译安装PHP
准备工作
依赖包:
php-7.1.10.tar.bz2
phpMyAdmin-4.7.6-all-languages
安装:
[root@localhost ~]# yum -y install \
gd \ ##gd图像处理库
libjpeg \ ##jepg图像识别
libjpeg-devel \
libpng \ ##png图像识别,截图格式
libpng-devel \
freetype \ ##字体识别
freetype-devel \
libxml2 \ ##xml文件识别
libxml2-devel \
zlib \ ##压缩库
zlib-devel \
curl \
curl-devel \
openssl \ ##安全链接,即身份验证
openssl-devel
[root@localhost ~]# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel
[root@localhost ~]# ls -lh
[root@localhost ~]# tar jxvf php-7.1.10.tar.bz2
[root@localhost php-7.1.10]# cd php-7.1.10
[root@localhost php-7.1.10]# ./configure \
--prefix=/usr/local/php \ ##指定安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \ #apx2可以让PHP功能模块加载给Apache使用,若不配置这条,Apache将不显示PHP的图像
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
配置模块说明
./configure
–prefix=/usr/local/php #安装路径
–with- apxs2=/usr/ local/ht tpd/bin/apxs#让apache支持php,
–with-mysql-sock=/usr/ local/mysql/mysql. sock \ #指明mysq1的套接字路径
–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 \ #打开ss1安全套接字功能
–enable-mbstring \ #开启mbstring扩展,有了这个功能可设置其支持utf-8编码
–enable-xml \ #支持XML文件格式
–enable-session \ #开启会话保持功能
–enable-ftp #开启ftp扩展
–enable-pdo#PD0作用是统–各种数据库的访问接口
–enable- tokenizer \ #分词器,Tokenizer实际上只是生成了一个字典,并且统计了词频等信息
–enable-zip #打开对zip文件的支持
编译及安装
[root@localhost php-7.1.10]# make && make install
[root@localhost php-7.1.10]# ls -lh
复制php.ini-development开发样板:
[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
修改php.ini-development开发样板:
[root@localhost php-7.1.10]# vi /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/musql.sock
date.timezone = Asia/Shanghai
修改Apache配置文件:
[root@localhost opt]# vi /etc/httpd.conf
AddType application/x-httpd-php .php //插入这两行文字 ,是Apache支持PHP
AddType application/x-httpd-php-source .phps //插入这行文字
<IfModule dir_module>
DirectoryIndex index.html
DirectoryIndex index.php index.html //插入这行文字 ,添加支持index.php格式的首页文件
</IfModule>
修改主页内容:
[root@localhost opt]# vi /usr/local/httpd/htdocs/index.php //新增php首页
<?php
phpinfo(); ##一种PHP底层的函数
?>
重启Apache服务
[root@mysql3 htdocs]# service httpd stop
[root@mysql3 htdocs]# service httpd start
测试验证
4.编译安装phpMyadmin
编译及安装
上传phpMyadmin压缩包至/opt目录下并解压缩:
[root@localhost ~]# cd /opt
[root@localhost opt]# unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/
将内容拷贝至Apache服务站点主页:
[root@localhost opt]# mv /opt/phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm
修改服务站点:
[root@localhost ~]# mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm
[root@localhost ~]# cp /usr/local/httpd/htdocs/myadm/config.sample.inc.php /usr/local/httpd/htdocs/myadm/config.inc.php
[root@localhost ~]# vi /usr/local/httpd/htdocs/myadm/config.inc.php
$cfg['Servers'][$i]['host'] = '20.0.0.10';
数据库与php的联通
[root@localhost ~]# mysql -uroot -p123123
mysql> create database myadm; 创建一个数据库
mysql> grant all privileges on myadm.* to 'myadm'@'localhost' identified by 'admin123'; 本地授权
mysql> grant all privileges on myadm.* to 'myadm'@'%' identified by 'admin123'; 远程授权
%:表示范围,任意
[root@localhost ~]# mysql -uroot -pabc123
mysql> grant all privileges on *.* to 'root'@'www.aa.com' identified by '123123';
mysql> flush privileges; 刷新
mysql> exit
修改php的网页:
[root@localhost ~]# vi /usr/local/httpd/htdocs/index.php
<?php
$link=mysqli_connect('192.168.200.60','myadm','admin123');
if($link) echo "<h1>Success!</h1>";
else echo "Fail!";
?>
'192.168.200.60':本机地址
'myadm':数据库登录名
'admin123': 登录密码
测试验证
登录