Web服务器集群--源码编译安装部署LAMP平台,搭建论坛(Apache、Mysql和Php源码编译安装实验)
前言
Linux操作系统之所以能够在十余年的时间里发展壮大以至于风靡全球,其开放源代码的特性是很重要的原因之一,及Linux操作系统中包括内核在内的所有软件都可以获得源代码,并且可以经过定制修改后编译安装。
虽然现代的Linux发行版本大部分采用包管理机制对软件进行打包安装,可以省去软件的编译安装过程,但是还有些情况需要使用源代码编译的方式为系统安装新的应用程序。
- L:Linux
- A:Apache
- M:MySQL
- P:PHP
一:LAMP平台与编译安装
1.1:LAMP平台概述
- LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境
- LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言
1.2:构建LAMP平台顺序
- 在构建LAMP平台时,各组件的安装顺序依次为Linux,Apache,MySQL,PHP
- 其中Apache和MySQL的安装并没有严格的顺序要求,而PHP环境的安装一般放到最后,负责沟通web服务器和数据库系统以协同工作
1.3:编译安装的优点
- 具有较大的自由度,功能可定制
- 可及时获得最新的软件版本
- 普遍适用于大多数Linux版本,便于一直使用
1.4:编译安装的基本过程
解包
- 开源软件的源代码包一般为TarBall形式,扩展名为“.tar.gz”或“.tar.bz2”,都可以使用tar命令进行解压。
- 在Linux系统中,通常将各种软件的源代码目录保存到“/sur/src”目录中,便于集中管理。
解包 |
---|
习惯上将软件包解压到/sur/src/目录中 |
解包后源代码文件位置:/usr/src/软件名-版本号/ |
配置
- 在编译应用程序之前,需要进入源代码目录,对软件的安装目录,功能选择等参数进行配置。
- 在Linux系统中通过源代码方式安装软件时,也可以将所有程序文件安装到同一个文件夹,当需要卸载软件时,只需将该文件夹删除即可。
配置 |
---|
配置工作通常使用源码目录中的configure脚本完成 |
执行“./configure --help”可查看帮助 |
典型的配置选项:–prefix=软件安装目录(指定软件包安装的目标文件夹) |
编译
- 编译的过程主要是根据Makefile文件内的配置信息(若上一步的配置操作失败,将无法进行编译),将源代码文件进行编译而生成二进制的程序模块,动态链接库,可执行文件等。
- 配置完成后,只需要在源代码目录中执行“make”命令即可执行编译操作
安装
- 编译完成后,就可以执行“make install”命令将软件的执行程序,配置文件,帮助文档等相关文件复制到Linux系统中了,也就是应用程序的最后“安装”过程。同样是在源代码目录中执行命令。
二:Apache网站服务源码编译安装
2.1:Apache起源
- 源于A Patchy Server,著名的开源web服务软件
- 1955年时,发布Apache服务程序的1.0版本
- 由Apache软件基金会(ASF)负责维护
- 最新的名称为“Apache HTTP Server”
- 官方站点:http://httpd.apache.org/
2.2:主要特点
- 开放源代码,跨平台应用
- 支持多种网页编程语言
- 模块化设计,运行稳定,良好的安全性
2.3:环境准备
- VMware软件
- centos7操作系统
- 准备Apache服务的源码包
- Apache跨平台组件包准备
2.4:软件版本
●1.X
◆目前最高版本是1.3, 运行稳定
◆向下兼容性较好,但缺乏- -些较新的功能
●2.X
◆目前最高版本是2.4
◆具有更多的功能特性
◆与1 .X相比,配置管理风格存在较大差异
2.5:编译安装的优点
●具有较大的自由度,功能可定制
●可及时获得最新的软件版本
●普遍适用于大多数Linux版本,便于移植使用
获得Apache服务器的源码包
●参考地址: htp://ttpd.apache.org/download.cgi
2.6:httpd服务的目录结构
- 主要目录和文件
●服务目录: /usr/local/httpd/
●主配置文件: /usr/local/httpd/conf/httpd.conf
●网页目录: /usr/local/httpd/htdocs/
●服务脚本: /usr/local/httpd/bin/apachectl 中
●执行程序: /usr/local/httpd/bin/httpd
●访问日志: /usr/local/httpd/log/access_log
●错误日志: /usr/local/httpd/log/error_log
2.7:httpd.conf配置文件
■常用的全局配置参数
●ServerRoot:服务目录
●Listen:监听的IP地址、端口号
●User:运行服务的用户身份
●Group:运行服务的组身份
●ServerAdmin:管理员邮箱
●ServerName:网站服务器的域名
●DocumentRoot:网页文档的根目录
●DirectoryIndex:默认的索弓|页文件
●ErrorLog:设置错误日志文件的路径
●LogLevel:记录日志的级别,默认为warn
●CustomLog:访问日志文件的位置
●PidFile:保存httpd进程PID号的文件
●AddDefaultCharset:设置站点中网页默认的字符集编码
●Timeout:网络连接超时,默认为300秒
●KeepAlive:是否保持连接,可选On或Off
●MaxKeepAliveRequests:每次连接最多请求文件数
●KeepAliveTimeout:保持连接状态时的超时时间
●Include:需要包含进来的其他配置文件
2.8:源码编译安装过程
2.8.1:环境准备
- 准备所需的三个软件包
[root@localhost /]# cd /opt
[root@localhost opt]# mkdir apache mysql php
[root@localhost opt]# cd apache/
apr-util-1.6.0.tar.gz
apr-1.6.2.tar.gz
httpd-2.4.29.tar.bz2
- 解压跨平台组件包和源码包
[root@localhost apache]# tar xzvf apr-1.6.2.tar.gz
[root@localhost apache]# tar xzvf apr-util-1.6.0.tar.gz
[root@localhost apache]# tar -xjvf httpd-2.4.29.tar.bz2
[root@localhost apache]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost apache]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
- 安装编译器和其他工具
[root@localhost opt]# yum -y install \
> gcc \ '编译器'
> gcc-c++ \ '编译器'
> make \ 'make工具'
> pcre-devel \ '支持正则表达式的工具'
> expat-devel \ '使网站能解析标签语言的工具'
> perl 'Perl语言工具'
2.8.2:configure配置
[root@localhost apache]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \ '指定路径'
> --enable-so \ '开启核心功能模块'
> --enable-rewrite \ '开启重写功能,如防盗链保护'
> --enable-charset-lite \ '开启字符集转换'
> --enable-cgi '开启通用网关接口'
2.8.3:make(编译)和make install(安装)
[root@localhost httpd-2.4.29]# make && make install
2.8.4:配置启动脚本
[root@localhost httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd '将启动脚本复制到/etc/init.d/初始化脚本文件中,并重命名为httpd'
[root@localhost httpd-2.4.29]# vim /etc/init.d/httpd
#!/bin/bash '在行首下一行插入以下内容,保存退出'
# chkconfig: 35 85 21 '35级别自动运行 第85个启动 第21个关闭 '
# description: Apache is a World Wide Web server
[root@localhost httpd-2.4.29]# chkconfig --add httpd '将httpd加入到SERVICE管理器'
2.8.5:编辑配置文件
[root@localhost httpd-2.4.29]# vim /usr/local/httpd/conf/httpd.conf
'搜索ServerName,修改#ServerName www.example.com:80,若使用域名,则必须修改'
ServerName www.peace.com:80
'搜索Listen,修改'
Listen 20.0.0.48:80 '开启IPv4并监听自己的IP地址'
#Listen 80 '关闭IPv6监听'
2.8.6:创建配置文件的软链接
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/ '创建httpd.conf配置文件的软链接到/etc下面'
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ '将httpd的命令文件都创建软链接到/usr/local/bin下'
[root@localhost httpd-2.4.29]# systemctl stop firewalld.service
[root@localhost httpd-2.4.29]# iptables -F
[root@localhost httpd-2.4.29]# setenforce 0 '关闭安全核心防护'
[root@localhost httpd-2.4.29]# httpd -t '发现httpd可以自动补全,-t检查语法错误'
[root@localhost httpd-2.4.29]# apachectl -t
[root@localhost httpd-2.4.29]# service httpd start
[root@localhost httpd-2.4.29]# netstat -ntap | grep 80 '查看80端口是否起来'
2.8.7:登录验证,Apache服务启动成功
三:MySQL服务源码编译安装
3.1:MySQL概述
- MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
- MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
- MySQL是一个真正的多线程,多用户的SQL数据库服务,凭借其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
3.2:源码编译安装过程
3.2.1:环境准备
[root@localhost httpd-2.4.29]# cd /opt/mysql/
[root@localhost mysql]# yum -y install ncurses-devel autoconf cmake
mysql-5.6.26.tar.gz
'ncurses-devel是字符终端下屏幕控制的基本库'
'autoconf生成可以自动配置软件源代码 '
'cmake跨平台编译安装工具'
[root@localhost mysql]# tar xzvf mysql-5.6.26.tar.gz
[root@localhost mysql]# cd mysql-5.6.26
3.2.2:cmake配置
[root@localhost mysql-5.6.26]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DEXTRA_CHARSETS=all \
> -DSYSCONFIDIR=/etc \
> -DMYSQL_DATADIR=/home/mysql/ \
> -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock
3.2.3:make编译和make install
[root@localhost mysql-5.6.26]# make && make install
此处编译过程大概需要等10分钟左右,取决于你的CPU,也有可能等待一个小时
3.2.4:复制配置文件和脚本文件
[root@localhost mysql-5.6.26]# cp support-files/my-default.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
[root@localhost mysql-5.6.26]# cp support-files/mysql.server /etc/init.d/mysqld
3.2.5:配置脚本文件和命令环境
[root@localhost mysql-5.6.26]# cd /etc/init.d/
[root@localhost init.d]# ls
functions httpd mysqld netconsole network README
[root@localhost init.d]# ls -l
'发现mysqld文件没有执行权限'
[root@localhost mysql-5.6.26]# chmod +x /etc/init.d/mysqld
[root@localhost mysql-5.6.26]# chkconfig --add /etc/init.d/mysqld '将mysqld添加到service服务器中'
[root@localhost mysql-5.6.26]# chkconfig mysqld --level 35 on '设置mysqld在运行级别3和5都是开启的'
[root@localhost mysql-5.6.26]# echo "PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
'设置mysql命令到/etc/profile中寻找'
[root@localhost mysql-5.6.26]# source /etc/profile '使命令不需重启立即生效'
[root@localhost mysql-5.6.26]# echo $PATH '查看环境'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
3.2.6:添加用户
[root@localhost mysql-5.6.26]# useradd -s /sbin/nologin mysql '添加用户,指定shell,禁止用户登录系统'
[root@localhost mysql-5.6.26]# chown -R mysql.mysql /usr/local/mysql/ '设置属主和数组'
3.2.7:初始化数据库
[root@localhost mysql-5.6.26]# /usr/local/mysql/scripts/mysql_install_db \
> --user=mysql \
> --ldata=/var/lib/mysql \
> --basedir=/usr/local/mysql \
> --datadir=/home/mysql
3.2.8:编辑启动脚本
[root@localhost mysql-5.6.26]# vim /etc/profile
[root@localhost mysql-5.6.26]# source /etc/profile
[root@localhost mysql-5.6.26]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin:/usr/local/mysql/bin
[root@localhost mysql-5.6.26]# vim /etc/init.d/mysqld
'搜索basedir,修改这两段内容'
basedir=/usr/local/mysql 添加工作路径
datadir=/home/mysql 添加数据路径
3.2.9:启动服务并设置用户密码
[root@localhost mysql-5.6.26]# service mysqld start
Starting MySQL. SUCCESS!
[root@localhost mysql-5.6.26]# netstat -anpt | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 42478/mysqld
[root@localhost mysql-5.6.26]# mysqladmin -u root -p password "abc123" '设置数据库用户的密码'
Enter password: '原本密码为空,直接回车即可'
Warning: Using a password on the command line interface can be insecure.
[root@localhost mysql-5.6.26]# mysql -uroot -p '连接并登陆到MYSQL操作环境'
Enter password: '输入刚刚设置的密码abc123'
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.26 Source distribution
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit '退出MYSQL操作环境'
四:PHP代码源码编译安装
4.1:PHP概述
- PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域
- PHP支持绝大多数流行的数据库,在数据库层面的操作功能十分强大,而且能够支持Unix,Windows,Linux等多种操作系统
4.2:源码编译过程
4.2.1:准备环境
[root@localhost mysql-5.6.26]# cd /opt/php/
[root@localhost php]# yum -y install \
> gd \
> libpng \
> libpng-devel \
> pcre \
> pcre-devel \
> libxml2-devel \
> libjpeg-devel
php-5.6.11.tar.bz2
[root@localhost php]# tar xjvf php-5.6.11.tar.bz2
[root@localhost php]# cd php-5.6.11/
4.2.2:configure配置
[root@localhost php-5.6.11]# ./configure \
> --prefix=/usr/local/php5 \ '指定安装路径'
> --with-gd \ '指定GD库'
> --with-zlib \ '支持数据压缩函数库'
> --with-apxs2=/usr/local/httpd/bin/apxs \ '设置Apache服务提供的apxs模块支持程序的文件位置'
> --with-mysql=/usr/local/mysql \ '设置MySQL数据库服务程序的安装位置'
> --with-config-file-path=/usr/local/php5 \ '设置PHP配置文件存放的位置'
> --enable-mbstring '启用多字节字符串功能,以便支持中文等代码'
4.2.3:make编译和make install
[root@localhost php-5.6.11]# make && make install
4.2.4:编辑配置文件
[root@localhost php-5.6.11]# cp php.ini-development /usr/local/php5/php.ini
[root@localhost php-5.6.11]# ln -s /usr/local/php5/bin/* /usr/local/bin/
[root@localhost php-5.6.11]# vim /etc/httpd.conf
'搜索php5,查看是否有下面文字,若没有,之前配置有问题,需要重新配置LAMP'
LoadModule php5_module modules/libphp5.so
'搜索AddType,在下段文字后添加两行文字'
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php '在此段文字后添加index.php'
</IfModule>
4.2.5:重启Apache服务,配置PHP首页
[root@localhost php-5.6.11]# service httpd stop
[root@localhost php-5.6.11]# service httpd start
[root@localhost php-5.6.11]# vim /usr/local/httpd/htdocs/index.html
原本内容可以删除,添加以下字段
<?php
phpinfo();
?>
[root@localhost php-5.6.11]# mv /usr/local/httpd/htdocs/index.html /usr/local/httpd/htdocs/index.php
4.3:检查PHP是否搭建成功
五:LAMP架构搭建论坛
5.1:创建MySQL数据库并添加用户
[root@localhost htdocs]# mysql -u root -p
...省略内容
mysql> create database bbs; '创建数据库'
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bbq |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> grant all on bbq.* to 'bbsuser '@'%' identified by 'admin123'; '给用户bbsuser设置密码admin123并设置所有权限,所有终端都可登录'
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges; '刷新数据库'
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
5.2:解压论坛压缩包,设置权限
[root@localhost php-5.6.11]# cd /opt
Discuz_X2.5_SC_UTF8.zip
[root@localhost opt]# unzip Discuz_X2.5_SC_UTF8.zip -d /opt/dis
[root@localhost opt]# cd /opt/dis
[root@localhost opt]# cp -r upload/ /usr/local/httpd/htdocs/bbs
'将upload复制到Apache服务站点中'
[root@localhost opt]# cd /usr/local/httpd/htdocs/bbs
[root@localhost bbs]# chown -R daemon ./config/
[root@localhost bbs]# chown -R daemon ./data/
[root@localhost bbs]# chown -R daemon ./uc_client/
[root@localhost bbs]# chown -R daemon ./uc_server/data/
5.3:论坛搭建网页设置
1.输入20.0.0.48/bbs,并点击我同意
2.直接点击下一步
3.选择全新安装,点击下一步
4.根据要求输入内容
5.正在安装和安装完成
6.重新输入网址打开即可
7.注册会员用户
8.进入后台,网址后缀重新输入/bbq/admin.php
5.4:查看MySQL数据库
[root@localhost bbs]# mysql -uroot -p
Enter password:
...省略内容
mysql> use bbs;
...省略内容
Database changed
mysql> show tables; '发现数据库有内容了'
+-----------------------------------+
| Tables_in_bbq |
+-----------------------------------+
| pre_common_admincp_cmenu |
| pre_common_admincp_group |