理论+实验——源码编译安装LAMP

时间:2020-9-2 作者:admin


文章目录

前言

LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态 Web 站点服务及其应用开发环境。LAMP 是一个缩写词,具体包括 Linux 操作系统、Apache 网站服务器、MySQL 数据库服务器、PHP(或 Perl、Python)网页编程语言。本章将以源码编译的方式搭建 LAMP 环境,能够满足企业定制化的需求。
在构建 LAMP 平台时,各组件的安装顺序依次为 Linux、Apache、MySQL、PHP。
其中 Apache 和 MySQL 的安装并没有严格的顺序;而 PHP 环境的安装一般放到最后,负责沟通 Web 服务器和数据库系统以协同工作。

一、Apache 编译安装方法

1、Apache 简介

“Apache HTTP Server”是开源软件项目的杰出代表,基于标准的 HTTP 网络协议提供网页浏览服务,在 Web 服务器领域中长期保持着超过半数的份额。Apache 服务器可以运行在 Linux、UNIX、Windows 等多种操作系统平台中。
Apache 服务器是针对之前出现的若干个 Web 服务器程序进行整合、完善后形成的软件,其名称来源于“A Patchy Server”,意思是“基于原有 Web 服务程序的代码进行修改(补丁)后形成的服务器程序”。
1995 年, Apache 服务程序发布了 1.0 版本,之后一直由“Apache Group”负责该项目的管理和维护;直到 1999 年,在“Apache Group”的基础上成立了 Apache 软件基金会(Apache Software Foundation,ASF)。目前,Apache 项目一直由 ASF 负责管理和维护。
ASF 是非盈利性质的组织,最初只负责“Apache Web”服务器项目的管理,随着 Web应用需求的不断扩大,ASF 逐渐增加了许多与 Web 技术相关的开源软件项目,因此 Apache现在不仅仅代表着 Web 服务器,更广泛地代表着 ASF 管理的众多开源软件项目。ASF 基金会的官方网站是http://www.apache.org/。
“Apache HTTP Server”是 ASF 旗下著名的软件项目之一,其正式名称是“httpd”,也就是历史上的Apache 网站服务器。在后续内容中,若未作特殊说明,使用“Apache”或者“httpd”,均指的是“Apache HTTP Server”。

2、Apache 特点

(1)开放源代码: 这是 Apache 服务器的重要特性之一,也是其他特性的基础。
Apache 服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使
用,这充分体现了开源软件的精神。
(2)跨平台应用: 这个特性得益于 Apache 的源代码开放。Apache 服务器可以运
行在绝大多数软硬件平台上,所有 UNIX 操作系统都可以运行 Apache 服务
器,甚至 Apache 服务器可以良好地运行在大多数 Windows 系统平台中。
Apache 服务器的跨平台特性使其具有被广泛应用的条件。
(3)支持各种Web 编程语言: Apache服务器可支持的网页编程语言包括Perl、PHP、
Python、Java 等,甚至微软的 ASP 技术也可以在 Apache 服务器中使用。支
持各种常用的 Web 编程语言使 Apache 具有更广泛的应用领域。
(4)模块化设计: Apache 并没有将所有的功能集中在单一的服务程序内部,而是
尽可能地通过标准的模块实现专有的功能,这为 Apache 服务器带来了良好的
扩展性。其他软件开发商可以编写标准的模块程序,从而添加 Apache 本身
并不具有的其他功能。
(5)运行非常稳定: Apache 服务器可用于构建具有大负载访问量的 Web 站点,很
多知名的企业网站都使用 Apache 作为 Web 服务软件。
(6)良好的安全性: Apache 服务器具有相对较好的安全性,这是开源软件共同具
有的特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序,
为 Apache 的所有使用者提供尽可能安全的服务器程序。

3、实验

####编译安装HTTP服务####
#####安装Apache所需软件#####
apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.gz
####将上面3个包传到opt目录下####
[root@localhost ~]# cd /opt
[root@localhost opt]# ll
total 81636
-rw-r--r--  1 root root  1071074 Aug 31 15:32 apr-1.6.2.tar.gz
-rw-r--r--  1 root root   565507 Aug 31 15:32 apr-util-1.6.0.tar.gz
-rw-r--r--  1 root root  6567926 Aug 31 15:32 httpd-2.4.29.tar.bz2
-rw-r--r--  1 root root 48833145 Aug 31 15:32 mysql-boost-5.7.20.tar.gz
-rw-r--r--  1 root root 15069098 Aug 31 15:32 php-7.1.10.tar.bz2
-rw-r--r--  1 root root 11475526 Aug 31 15:32 phpMyAdmin-4.7.6-all-languages.zip
drwxr-xr-x. 2 root root        6 Oct 31  2018 rh
[root@localhost opt]# tar xf apr-1.6.2.tar.gz
[root@localhost opt]# tar xf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar xf 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
[root@localhost opt]# 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
###编译及安装###
[root@localhost httpd-2.4.29]# make -j3    ###先make -j3   然后make install   -j3是你核心数,最大不要超过虚拟机的核心数
[root@localhost httpd-2.4.29]# make install
####优化执行路径####
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[root@localhost httpd-2.4.29]# httpd -v    ###查看下HTTP版本
Server version: Apache/2.4.29 (Unix)
Server built:   Aug 31 2020 15:55:00
###建立[service].service 配置文件添加系统给服务####
在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件,
用于控制由 systemd 管理或监控的 httpd 服务
[root@localhost httpd-2.4.29]# 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
:wq
[root@localhost system]# systemctl start httpd.service
[root@localhost system]# systemctl enable httpd.service
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
enabled
####httpd.conf修改配置文件###
[root@localhost system]# vi /usr/local/httpd/conf/httpd.conf
ServerName www.51xit.top:80  ###更改下
[root@localhost system]# systemctl restart httpd
[root@localhost system]# netstat -anpt | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      42997/httpd

网页验证,出现以下界面,则显示成功
理论+实验——源码编译安装LAMP

二、MySQL 数据库编译安装方法

###安装mysql###
[root@localhost ~]# cd /opt
[root@localhost opt]# ll
total 81640
-rw-r--r--   1 root root   1071074 Aug 31 15:32 apr-1.6.2.tar.gz
-rw-r--r--   1 root root    565507 Aug 31 15:32 apr-util-1.6.0.tar.gz
drwxr-xr-x  12  501 games     4096 Aug 31 15:55 httpd-2.4.29
-rw-r--r--   1 root root   6567926 Aug 31 15:32 httpd-2.4.29.tar.bz2
-rw-r--r--   1 root root  48833145 Aug 31 15:32 mysql-boost-5.7.20.tar.gz
-rw-r--r--   1 root root  15069098 Aug 31 15:32 php-7.1.10.tar.bz2
-rw-r--r--   1 root root  11475526 Aug 31 15:32 phpMyAdmin-4.7.6-all-languages.zip
drwxr-xr-x.  2 root root         6 Oct 31  2018 rh
[root@localhost opt]# yum -y install \
> ncurses \
> ncurses-devel \
> bison \
> cmake
[root@localhost opt]# useradd -s /sbin/nologin  mysql
[root@localhost opt]# tar xf 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
###编译安装###
[root@localhost mysql-5.7.20]# make -j3
[root@localhost mysql-5.7.20]# 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

:wq
[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
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
[root@localhost mysql]# systemctl start mysqld
[root@localhost mysql]# systemctl status mysqld    ### 出现 Active:active(running) 表示成功开启
[root@localhost mysql]# netstat -anpt | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      114516/mysqld
[root@localhost mysql]# mysqladmin -u root -p password
Enter password:      ### 回车
New password: ******    ###自己输入密码,123456
Confirm new password: ******
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

三、构建 PHP 运行环境的方法

####################安装PHP环境#####
[root@localhost opt]# ll
total 81644
-rw-r--r--   1 root root   1071074 Aug 31 15:32 apr-1.6.2.tar.gz
-rw-r--r--   1 root root    565507 Aug 31 15:32 apr-util-1.6.0.tar.gz
drwxr-xr-x  12  501 games     4096 Aug 31 15:55 httpd-2.4.29
-rw-r--r--   1 root root   6567926 Aug 31 15:32 httpd-2.4.29.tar.bz2
drwxr-xr-x  38 7161 31415     4096 Aug 31 16:25 mysql-5.7.20
-rw-r--r--   1 root root  48833145 Aug 31 15:32 mysql-boost-5.7.20.tar.gz
-rw-r--r--   1 root root  15069098 Aug 31 15:32 php-7.1.10.tar.bz2
-rw-r--r--   1 root root  11475526 Aug 31 15:32 phpMyAdmin-4.7.6-all-languages.zip
drwxr-xr-x.  2 root root         6 Oct 31  2018 rh
[root@localhost opt]# 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 opt]# tar xjvf php-7.1.10.tar.bz2
[root@localhost opt]# cd php-7.1.10
[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 php-7.1.10]# make -j3
[root@localhost php-7.1.10]# make install
[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
[root@localhost php-7.1.10]# vi /usr/local/php/lib/php.ini
mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai
[root@localhost php-7.1.10]# /usr/local/php/bin/php -m     ###验证安装的模块
[PHP Modules]
Core
ctype
curl
date
dom
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]

[root@localhost php-7.1.10]# vi /etc/httpd.conf   ###在合适的位置新增
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

DirectoryIndex index.php index.html
:wq
[root@localhost php-7.1.10]# rm -f /usr/local/httpd/htdocs/index.html
[root@localhost php-7.1.10]# vi /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>
:wq
[root@localhost php-7.1.10]#systemctl restart httpd 

网页验证,出现以下界面,则显示成功
理论+实验——源码编译安装LAMP
下面测试数据库工作是否正常:

[root@localhost php-7.1.10]# mysql -u root -p
Enter password: ******    ###密码,123456
###输入以下内容飞权限账号、密码###
CREATE DATABASE myadm;
GRANT all ON myadm.* TO 'myadm'@'%' IDENTIFIED BY 'admin123';
GRANT all ON myadm.* TO 'myadm'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
exit     ###退出mysql
[root@localhost php-7.1.10]# vi /usr/local/httpd/htdocs/index.php
<?php
$link=mysqli_connect('20.0.0.21','myadm','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
:wq

网页验证,出现以下界面,则显示成功
理论+实验——源码编译安装LAMP
如果有一点错误,则显示失败
IP地址错误如下图:
理论+实验——源码编译安装LAMP
理论+实验——源码编译安装LAMP

四、部署及使用 phpMyAdmin 系统的方法

[root@localhost ~]# cd /opt
[root@localhost opt]# unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/
[root@localhost opt]# mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm
[root@localhost opt]# cd /usr/local/httpd/htdocs/myadm
[root@localhost myadm]# cp config.sample.inc.php config.inc.php
[root@localhost myadm]# vi config.inc.php
$cfg['Servers'][$i]['host'] = '127.0.0.1';    ###把localhost 改成IP 31行
:wq

网页验证,出现以下界面,则显示成功
理论+实验——源码编译安装LAMP
使用root 以及前面为root配置的密码登录管理系统。可以对数据库进行管理操作了
理论+实验——源码编译安装LAMP

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。