LAMP介绍
LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和
相关软件,能够提供动态 Web 站点服务及其应用开发环境。LAMP 是一个缩写词,具
体包括 Linux 操作系统、Apache 网站服务器、MySQL 数据库服务器、PHP(或 Perl、
Python)网页编程语言。本章将以源码编译的方式搭建 LAMP 环境,能够满足企业定
制化的需求。
在构建 LAMP 平台时,各组件的安装顺序依次为 Linux、Apache、MySQL、PHP。
其中 Apache 和 MySQL 的安装并没有严格的顺序;而 PHP 环境的安装一般放到最后,
负责沟通 Web 服务器和数据库系统以协同工作。
安装Apache
将编译安装httpd的相关压缩包传到虚拟机
[root@localhost opt]# ls ##查看安装所需压缩包
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.bz2
解压到opt目录
[root@localhost ~]# tar zxf apr-1.6.2.tar.gz -C /opt
[root@localhost opt]# tar zxf /opt/apr-util-1.6.0.tar.gz -C /opt
[root@localhost opt]# tar jxf /opt/httpd-2.4.29.tar.bz2 -C /opt
[root@localhost opt]# ls
apr-1.6.2 apr-util-1.6.0 httpd-2.4.29
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2
将解压好的两个环境包放到httpd源码文件中
[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 \
zlib-devel
配置功能模块
[root@localhost httpd-2.4.29]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]# ls
ABOUT_APACHE BuildAll.dsp configure include LICENSE README test
……省略
[root@localhost httpd-2.4.29]# ./configure
–prefix=/usr/local/httpd \ ‘//指定路径’
–enable-so \ ‘//开启核心功能模块’
–enable-rewrite \ ‘//开启重写功能,如防盗链保护’
–enable-charset-lite \ ‘//开启字符集’
–enable-cgi \ ‘//开启通用网关接口’
–enable-cgid \
–enable-deflate ‘//开启deflate压缩模块’
make编译安装
[root@localhost httpd-2.4.29]# make -j3 && make install
配置启动脚本
[root@localhost ~]# cd /usr/local/httpd/bin/
[root@localhost bin]# ls
ab apr-1-config apxs dbmmanage envvars-std htcacheclean htdigest httpd logresolve
apachectl apu-1-config checkgid envvars fcgistarter htdb htpasswd httxt2dbm rotatelogs
优化httpd服务执行方式需要先优化路径
[root@localhost bin]# ln -s /usr/local/httpd/conf/httpd.conf /etc/ ##可以通过/etc/httpd.conf修改配置
[root@localhost bin]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
优化httpd服务执行方式
[root@localhost ~]# cd /lib/systemd/system/
[root@localhost system]# vim httpd.service 写入优化服务启动项配置
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[root@localhost system]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost system]# systemctl is-enabled httpd.service ###检查HTTP单元是否启动优化路径
enabled
[root@localhost bin]# systemctl start httpd
[root@localhost bin]# systemctl enable httpd
测试Apache服务
配置DNS服务器(DNS服务器IP:20.0.0.129)
[root@localhost named]# vi /etc/named.conf
options {
listen-on port 53 { 20.0.0.129; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
[root@localhost named]# vi /var/named/51xit.com.zone
$TTL 1D
@ IN SOA 51xit.com. admin.51xit.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minium
NS @
A 20.0.0.11
www IN A 20.0.0.11
[root@localhost named]# vi /var/named/kgc.com.zone
$TTL 1D
@ IN SOA kgc.com. admin.kgc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minium
NS @
A 20.0.0.11
www IN A 20.0.0.11
[root@localhost named]#chown named:named /var/named/kgc.com.zone
[root@localhost named]#chown named:named /var/named/51xit.com.zone
去另一台虚拟机测试网页
[root@localhost opt]# vi /etc/resolv.conf ##配置DNS
nameserver 20.0.0.129
安装MySQL数据库
[root@localhost opt]# ls //查看源码包是否准备好
mysql-boost-5.7.20.tar.gz
……省略部分
[root@localhost opt]# yum -y install \
ncurses \
ncurses-devel \
bison \
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 \ ##mysql需要用到cmake安装
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ ##指定安装目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ ##指定连接文件
-DSYSCONFDIR=/etc \ ##指定配置文件位置
-DSYSTEMD_PID_DIR=/usr/local/mysql \ ##指定PID文件位置
-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 \ ##加载底层一个支持C++的运行库
-DWITH_SYSTEMD=1 ##mysql编号,确定主从关系用
[root@localhost mysql-5.7.20]# make -j3 && make install
[root@localhost mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql/
[root@localhost mysql-5.7.20]# 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/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
[root@localhost mysql-5.7.20]# chown mysql:mysql /etc/my.cnf
设置环境变量
[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
[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]# systemctl enable mysqld
[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-09-05 18:54:09 CST; 7ms ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
……省略部分
[root@localhost ~]# netstat -ntap|grep 3306
tcp6 0 0 ::3306 ::: LISTEN 50925/mysqld
[root@localhost ~]# mysqladmin -u root -p password “abc123” ‘//给root用户设置密码’
##mysqladmin -u用户名 -p旧密码 password 新密码,初次设置时没有旧密码,因此直接回车就可以了,password后面跟的新密码
[root@localhost mysql]# mysqladmin -u root -p password ##password 后面不跟新密码,则需要进入交互模式中手动输入两次
安装PHP
[root@localhost opt]# ls ##查看压缩包
……省略部分
php-7.1.10.tar.bz2
[root@localhost php-7.1.10]# tar xf php-7.1.10.tar.bz2
安装依赖环境
[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 php-7.1.10]# cd php-7.1.10
配置php
[root@localhost php-7.1.10]# ./configure
–prefix=/usr/local/php \
–with-apxs2=/usr/local/httpd/bin/apxs \
–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
[root@localhost opt]# cp php.ini-development /usr/local/php/lib/php.ini
[root@localhost opt]# vi /usr/local/php/lib/php.ini
……省略部分
mysqli.default_socket = /usr/local/mysql/mysql.sock //后面填入数据库连接文件路径
……省略部分
date.timezone = Asia/Shanghai 后面写入上海时区(注意前面的”;”分号要删去)
……省略部分
[root@localhost opt]# /usr/local/php/bin/php -m //验证安装的模块,可以查看到各个模块
[PHP Modules]
Core
ctype
curl
date
……省略部分
[root@localhost opt]# vi /etc/httpd.conf
……省略部分
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php //插入这行文字(在此处插入方便后期寻找)
AddType application/x-httpd-php-source .phps //插入这行文字(方便后期寻找)
……省略部分
<IfModule dir_module>
DirectoryIndex index.html
DirectoryIndex index.php index.html //插入这行文字 (在此处插入方便后期寻找)
</IfModule>
……省略部分
[root@localhost opt]# rm -f /usr/local/httpd/htdocs/index.html //删去原来的首页文件
[root@localhost opt]# vi /usr/local/httpd/htdocs/index.php //新增php首页
<?php
phpinfo();
?>
测试
输入Apache服务器地址