源代码编译构建LAMP
1.什么是LAMP平台
LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境
LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言
LAMP的优势:成本低廉;可定制、易于开发;方便易用、安全和稳定
2.LAMP平台构建顺序
在构建LAMP平台时,各组件的安装顺序依次为Linux,Apache,MySQL,PHP
其中Apache和MySQL的安装并没有严格的顺序要求,而PHP环境的安装一般放到最后,负责沟通web服务器和数据库系统以协同工作
3.源代码编译安装的优点
具有较大的自由度,功能可定制
可及时获得最新的软件版本
普遍适用于大多数Linux版本,便于一直使用
4.源代码安装apache
apache简介
apache起源
源于A Patchy Server,著名的开源web服务软件
1955年时,发布Apache服务程序的1.0版本
由Apache软件基金会(ASF)负责维护(该基金会还包括了tomcat、kafka)
最新的名称为“Apache HTTP Server”
apache主要特点
开放源代码,跨平台(由apr软件包支持)应用
支持多种网页编程语言
模块化设计,运行稳定,良好的安全性
apache编译过程
注意:如果之前使用yum安装过,需要先卸载
yum -y remore httpd
1.将三个源码文件添加到/opt目录下
[root@server opt]# ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2
2.解压apr跨平台组件包和httpd源码包到当前目录下;并将跨平台组件包移动到源码包srclib目录下
[root@server opt]# tar zxf apr-1.6.2.tar.gz
[root@server opt]# tar zxf apr-util-1.6.0.tar.gz
[root@server opt]# tar jxf httpd-2.4.29.tar.bz2
[root@server opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@server opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
3.安装编译器和其他工具
[root@server opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \ ##gcc、gcc-c++、make为编译工具
> pcre-devel \ ##支持正则表达式的工具
> expat-devel \ ##使网站能解析xml标记语言的工具
> perl ##perl语言工具
4.configure配置
[root@server opt]# cd httpd-2.4.29/
[root@server httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \ ##指定路径
> --enable-so \ ##开启核心功能模块(Web服务)
> --enable-rewrite \ ##开启重写功能,如防盗链保护
> --enable-charset-lite \ ##字符集设定
> --enable-cgi ##开启通用网关接口,它定义了web服务器运行时外部程序的规范
5.make编译和make install安装
[root@server httpd-2.4.29]# make ##编译,将源码转换成计算机可以识别的二进制文件
[root@server httpd-2.4.29]# make install ##安装
6.配置启动脚本
[root@server bin]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd ##将启动脚本复制到/etc/init.d/初始化脚本文件中,并重命名为httpd
[root@server bin]# cd /etc/init.d/
[root@server init.d]# ls
functions httpd netconsole network README
[root@server init.d]# vim httpd
#!/bin/sh ##在行首插入下两行内容(前面就是有#的),并保存退出
#chkconfig: 35 85 21 ##3(字符界面)和5(图形化界面)级别自动运行 第85个启动 第21个关闭
#description: Apache is a World Wide Web server ##描述信息,可不加
#
#...省略内容
[root@server init.d]# chkconfig --add httpd ##将httpd加入到service管理器
7.编辑配置文件
[root@server ~]# vim /usr/local/httpd/conf/httpd.conf
...省略内容
Listen 20.0.0.30:80 ##设置ipv4监听地址和端口
#Listen 80 ##将ipv6格式的监听端口注释掉
#
ServerName www.test.com:80 ##设置域名地址
...省略内容
8.设置配置文件的软链接和httpd命令的软链接
[root@server bin]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
##设置配置文件的软链接,便于修改(原文件位置太长了)
[root@server bin]# httpd -t ##未设置命令的软链接时
bash: httpd: 未找到命令...
[root@server bin]# ls /usr/local/httpd/bin/
ab apxs envvars-std htdigest logresolve
apachectl checkgid fcgistarter htpasswd rotatelogs
apr-1-config dbmmanage htcacheclean httpd
apu-1-config envvars htdbm httxt2dbm
[root@server bin]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ ##设置httpd命令的软链接
[root@server bin]# httpd -t ##这时可以使用httpd命令了(httpd -t:检查配置文件语法)
Syntax OK
[root@server bin]# apachectl -t
Syntax OK
9.开启apache服务
[root@server bin]# iptables -F ##清空防火墙规则
[root@server bin]# setenforce 0 ##关闭核心防护
[root@server bin]# service httpd start ##利用service启动apache服务
[root@server bin]# netstat -napt |grep 80 ##查看httpd 80端口,开启成功
tcp 0 0 14.0.0.30:80 0.0.0.0:* LISTEN 44819/httpd
10.在浏览器中输入服务器地址验证。
5.源码编译安装mysql
1.准备安装环境
[root@server ~]# yum -y install \
> ncurses \
> ncurses-devel \ ##字符终端下屏幕控制的基本库
> bison \
> cmake ##跨平台编译安装工具
[root@server opt]# tar zxf mysql-boost-5.7.20.tar.gz
2.cmake配置
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定将mysql数据库安装到某目录下
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定套接字文件的存储路径,数据库连接的文件
-DSYSCONFDIR=/etc \ #指定初始化参数文件目录
-DSYSTEMD_PID_DIR=/usr/local/mysql \ #数据安装路径
-DDEFAULT_CHARSET=utf8 \ #指定默认使用的字符集编码,如 utf8。
-DDEFAULT_COLLATION=utf8_general_ci \ #指定默认使用的字符集校对规则,utf8_general_ci 是适用于 UTF-8 字符集的通用规则。
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #安装ARCHIVE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ #安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
3.make && make install 编译并且安装
4.建立调整配置文件
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
5.设置环境变量
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile
6.添加用户mysql,专门用来管理进程(程序型用户,禁止登录shell)
[root@server ~]# useradd -s /sbin/nologin mysql ##添加用户mysql,禁止用户登录系统
[root@server ~]# id mysql
uid=1001(mysql) gid=1001(mysql) groups=1001(mysql)
[root@server ~]# chown -R mysql.mysql /usr/local/mysql ##设置属主和数组
7.初始化数据库
cd /usr/local/mysql/
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
8.启动,设置密码
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
netstat -anpt | grep 3306
mysqladmin -u root -p password "abc123" //刚开始没密码是空的直接回车,然后输入密码abc123,在此确认abc123,这是在root账户下运行的
mysql -u root -p ##这个命令敲下,提示要输入密码,这个就是刚才设置的密码abc123
6.编译安装PHP
1.配置安装环境
yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
2.编译安装
cd /opt
tar xjvf php-7.1.10.tar.bz2
cd php-7.1.10
./configure \
--prefix=/usr/local/php \ #指定将 PHP 程序安装到哪个目录下
--with-mysql-sock=/usr/local/mysql/mysql.sock \ #指定mysql的mysql.sock位置
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
make && make install
3.将php.ini-development开发样板,复制到生产环境中去
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
/usr/local/php/bin/php -m //验证安装的模块
vi /etc/httpd.conf ####在合适位置新增
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
rm -f /usr/local/httpd/htdocs/index.html
vi /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>
systemctl restart httpd
http://192.168.32.21/
4.mysql授权
mysqladmin -uroot -p password 'abc123'
这个地方回车后,输入是初始密码,我们这边安装的初始密码是空的。回车即可
--------下面测试数据库工作是否正常-----
mysql -u root -p
CREATE DATABASE myadm;
GRANT all ON myadm.* TO 'myadm'@'%' IDENTIFIED BY 'admin123';
GRANT all ON myadm.* TO 'myadm'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
vi /usr/local/httpd/htdocs/index.php
<?php
$link=mysqli_connect('20.0.0.30','myadm','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
########http://20.0.0.30/测试下###
5.安装MySQL管理工具
---以下安装phpMyadmin------
cd /opt
unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/
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'] = '127.0.0.1'; //把localhost 改成IP 31行
http://20.0.0.30/myadm
使用root 以及前面为root配置的密码登录管理系统。可以对数据库进行管理操作了