前言
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”
2.2:主要特点
- 开放源代码,跨平台应用
- 支持多种网页编程语言
- 模块化设计,运行稳定,良好的安全性
2.3:环境准备
- VMware软件
- centos7操作系统
- 准备Apache服务的源码包
- Apache跨平台组件包准备
2.4:源码编译安装过程
2.4.1:环境准备
-
挂载宿主机的共享文件夹,读取下载好的源码文件
[root@localhost ~]# smbclient -L //192.168.100.3 Enter SAMBA\root's password: Sharename Type Comment --------- ---- ------- ADMIN$ Disk 远程管理 C$ Disk 默认共享 ccc Disk ...省略内容 [root@localhost ~]# mount.cifs //192.168.100.3/ccc /mnt Password for root@//192.168.100.3/ccc: [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on ...省略内容 //192.168.100.3/ccc 444G 31G 413G 7% /mnt [root@localhost ~]# cd /mnt [root@localhost mnt]# ls LAMP-C7 LAMP-C7.rar [root@localhost mnt]# cd LAMP-C7/ [root@localhost LAMP-C7]# ls apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt php-5.6.11.tar.bz2 apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz
-
解压跨平台组件包和源码包
将跨平台组件包移动到源码包目录下
[root@localhost LAMP-C7]# tar zxvf apr-1.6.2.tar.gz -C /opt ...省略内容 [root@localhost LAMP-C7]# tar zxvf apr-util-1.6.0.tar.gz -C /opt ...省略内容 [root@localhost LAMP-C7]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt ...省略内容 [root@localhost LAMP-C7]# cd /opt [root@localhost opt]# ls apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh [root@localhost opt]# mv apr-1.6.2/ httpd-2.4.29/s server/ srclib/ support/ [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]# ls httpd-2.4.29/srclib/ apr apr-util Makefile.in
-
安装编译器和其他工具
[root@localhost opt]# yum -y install \ > gcc \ '//编译器' > gcc-c++ \ '//编译器' > make \ '//make工具' > pcre-devel \ '//支持正则表达式的工具' > expat-devel \ '//使网站能解析标签语言的工具' > perl '//Perl语言工具' ...省略内容
2.4.2:configure配置
-
[root@localhost opt]# cd httpd-2.4.29/ [root@localhost httpd-2.4.29]# ls ...省略内容 ap.d configure include Makefile.in ...省略内容 [root@localhost httpd-2.4.29]# ./configure \ > --prefix=/usr/local/httpd \ '//指定路径' > --enable-so \ '//开启核心功能模块' > --enable-rewrite \ '//开启重写功能,如防盗链保护' > --enable-charset-lite \ '//开启字符集' > --enable-cgi '//开启通用网关接口' ...省略内容
2.4.3:make编译和makeinstall
-
[root@localhost httpd-2.4.29]# make '//编译' ...省略内容 [root@localhost httpd-2.4.29]# make install '//安装'
2.4.4:配置启动脚本
-
[root@localhost bin]# cd /usr/local/httpd/ [root@localhost httpd]# ls bin build cgi-bin conf error htdocs icons include lib logs man manual modules [root@localhost httpd]# cd bin [root@localhost bin]# ls ab apu-1-config dbmmanage fcgistarter htdigest httxt2dbm apachectl apxs envvars htcacheclean htpasswd logresolve apr-1-config checkgid envvars-std htdbm httpd rotatelogs [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 httpd #!/bin/sh '//在行首插入下两行内容,并保存退出' # chkconfig: 35 85 21 '//35级别自动运行 第85个启动 第21个关闭' # description: Apache is a World Wide Web server # #...省略内容 [root@localhost init.d]# chkconfig --add httpd '//将httpd加入到SERVICE管理器'
2.4.5:编辑配置文件
-
[root@localhost init.d]# vim /usr/local/httpd/conf/httpd.conf '//搜索ServerName,修改#ServerName www.example.com:80,若使用域名,则必须修改' ...省略内容 ServerName www.abc.com:80 ...省略内容 '//搜索Listen,修改#Listen 12.34.56.78:80 Listen 80' ...省略内容 Listen 192.168.197.139:80 '//开启IPv4并监听自己的IP地址' #Listen 80 '//关闭IPv6监听' ...省略内容
2.4.5:创建配置文件的软链接
-
[root@localhost init.d]# ln -s /usr/local/httpd/conf/httpd.conf /etc '//创建httpd.conf配置文件的软链接到/etc下面' [root@localhost init.d]# vim /etc/httpd.conf '//发现可以通过软链接直接编辑配置文件,方便很多' [root@localhost init.d]# ln -s /usr/local/httpd/bin/* /usr/local/bin '//将httpd的命令文件都创建软链接到/usr/local/bin下' [root@localhost init.d]# ls /usr/local/httpd/bin ab apu-1-config dbmmanage fcgistarter htdigest httxt2dbm apachectl apxs envvars htcacheclean htpasswd logresolve apr-1-config checkgid envvars-std htdbm httpd rotatelogs [root@localhost init.d]# httpd -t '//发现httpd可以自动补全,-t检查语法错误' Syntax OK
2.4.6:关闭防火墙,开启服务
-
[root@localhost init.d]# systemctl stop firewalld.service [root@localhost init.d]# setenforce 0 [root@localhost init.d]# service httpd start [root@localhost init.d]# netstat -ntap | grep 80 tcp 0 0 192.168.197.139:80 0.0.0.0:* LISTEN 69155/httpd [root@localhost init.d]#
登录验证,Apache服务启动成功
三:MySQL服务源码编译安装
3.1:MySQL概述
- MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
- MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
- MySQL是一个真正的多线程,多用户的SQL数据库服务,凭借其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
3.2:源码编译安装过程
3.2.1:环境准备
-
[root@localhost htdocs]# yum install ncurses-devel autoconf cmake -y '//ncurses-devel是字符终端下屏幕控制的基本库' '//autoconf生成可以自动配置软件源代码' '//cmake跨平台编译安装工具' ...省略内容 [root@localhost mnt]# cd /mnt/LAMP-C7/ [root@localhost LAMP-C7]# ls apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt php-5.6.11.tar.bz2 apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz [root@localhost LAMP-C7]# tar zxvf mysql-5.6.26.tar.gz -C /opt [root@localhost LAMP-C7]# cd /opt [root@localhost opt]# ls httpd-2.4.29 mysql-5.6.26 rh [root@localhost opt]# cd mysql-5.6.26/ [root@localhost mysql-5.6.26]# ls '//发现 cmake 安装成功' ...省略内容
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/ \ '//指定数据文件目录,由mysql用户管理' > -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock '//指定通信文件,连接数据库的必要文件' ...省略内容
3.2.3:make编译和make install
-
[root@localhost mysql-5.6.26]# make ...省略内容 此处编译,大概需持续一个不到一个小时的时间 [root@localhost mysql-5.6.26]# make install ...省略内容
3.2.4:复制配置文件和脚本文件
-
[root@localhost mysql-5.6.26]# cp support-files/my-default.cnf /etc/my.cnf cp: overwrite ‘/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 total 56 '//发现mysqld文件没有执行权限' -rw-r--r--. 1 root root 17500 May 3 2017 functions -rwxr-xr-x. 1 root root 3503 Dec 11 19:01 httpd -rw-r--r--. 1 root root 10870 Dec 11 20:03 mysqld -rwxr-xr-x. 1 root root 4334 May 3 2017 netconsole -rwxr-xr-x. 1 root root 7293 May 3 2017 network -rw-r--r--. 1 root root 1160 Aug 5 2017 README [root@localhost init.d]# chmod +x mysqld [root@localhost init.d]# ls functions httpd mysqld netconsole network README [root@localhost init.d]# chkconfig --add /etc/init.d/mysqld '//将mysqld添加到service服务器中' [root@localhost init.d]# chkconfig --level 35 mysqld on '//设置mysqld在运行级别3和5都是开启的' [root@localhost init.d]# echo "PATH=$PATH:/usr/local/mysql/bin">> /etc/profile '//设置mysql命令到/etc/profile中寻找' [root@localhost init.d]# source /etc/profile '//使命令不需重启立即生效' [root@localhost init.d]# echo $PATH '//查看环境' /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
3.2.6:添加用户
-
[root@localhost init.d]# useradd -s /sbin/nologin mysql '//添加用户,指定shell,禁止用户登录系统' [root@localhost init.d]# id mysql uid=1001(mysql) gid=1001(mysql) groups=1001(mysql) [root@localhost init.d]# chown -R mysql.mysql /usr/local/mysql '//设置属主和数组' [root@localhost local]# cd /usr/local/mysql/ [root@localhost mysql]# ls -l total 152 drwxr-xr-x. 2 mysql mysql 4096 Dec 11 20:00 bin -rw-r--r--. 1 mysql mysql 17987 Jul 15 2015 COPYING drwxr-xr-x. 3 mysql mysql 18 Dec 11 20:00 data drwxr-xr-x. 2 mysql mysql 55 Dec 11 20:00 docs drwxr-xr-x. 3 mysql mysql 4096 Dec 11 20:00 include -rw-r--r--. 1 mysql mysql 104897 Jul 15 2015 INSTALL-BINARY drwxr-xr-x. 3 mysql mysql 4096 Dec 11 20:00 lib drwxr-xr-x. 4 mysql mysql 30 Dec 11 20:00 man drwxr-xr-x. 10 mysql mysql 4096 Dec 11 20:00 mysql-test -rw-r--r--. 1 mysql mysql 2496 Jul 15 2015 README drwxr-xr-x. 2 mysql mysql 30 Dec 11 20:00 scripts drwxr-xr-x. 28 mysql mysql 4096 Dec 11 20:00 share drwxr-xr-x. 4 mysql mysql 4096 Dec 11 20:00 sql-bench drwxr-xr-x. 2 mysql mysql 136 Dec 11 20:00 support-files [root@localhost mysql]#
3.2.7:初始化数据库
-
[root@localhost mysql]# /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]# vim /etc/init.d/mysqld '//搜索basedir' ...省略内容 '//修改这两段内容' basedir=/usr/local/mysql '//添加工作路径' datadir=/home/mysql '//添加数据路径' ...省略内容
3.2.9:启动服务并设置用户密码
-
[root@localhost mysql]# service mysqld start Starting MySQL.. SUCCESS! [root@localhost mysql]# netstat -ntap|grep 3306 tcp6 0 0 :::3306 :::* LISTEN 87565/mysqld [root@localhost mysql]# mysqladmin -u root -p password "abc123" '//给root用户设置密码' '//mysqladmin -u用户名 -p旧密码 password 新密码' Enter password: '//原本密码为空,直接回车即可' Warning: Using a password on the command line interface can be insecure. [root@localhost mysql]# mysql -u root -p Enter password: '//输入刚设置的密码abc123' ...省略内容 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) mysql> exit Bye
四: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]# yum -y install \ > gd \ '//安装GD库环境' > libpng \ > libpng-devel \ > pcre \ > pcre-devel \ > libxml2-devel \ > libjpeg-devel ...省略内容 [root@localhost mnt]# cd /mnt/LAMP-C7/ [root@localhost LAMP-C7]# ls apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt php-5.6.11.tar.bz2 apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz [root@localhost LAMP-C7]# tar jxvf php-5.6.11.tar.bz2 -C /opt ...省略内容
4.2.2:configure配置
-
[root@localhost LAMP-C7]# cd /opt [root@localhost opt]# ls httpd-2.4.29 mysql-5.6.26 php-5.6.11 rh [root@localhost opt]# cd php-5.6.11/ [root@localhost php-5.6.11]# ls ...省略内容 [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 ...省略内容 [root@localhost php-5.6.11]# 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]# ...省略内容 '//编辑php的默认首页' <IfModule dir_module> DirectoryIndex index.html index.php '//在此段文字后添加index.php' </IfModule> ...省略内容 '//搜索php5,查看是否有下面文字,若没有,之前配置有问题,需要重新配置LAMP' LoadModule php5_module modules/libphp5.so '//搜索AddType,在下段文字后添加两行文字' AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php '//添加此行' AddType application/x-httpd-php-source .phps '//添加此行'
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]# cd /usr/local/httpd/htdocs/ [root@localhost htdocs]# ls index.html [root@localhost htdocs]# vim index.html '//原本内容可以删除,添加以下字段' <?php phpinfo(); ?> [root@localhost htdocs]# mv index.html index.php [root@localhost htdocs]# ls index.php [root@localhost htdocs]#
4.3:检查PHP是否搭建成功
五:LAMP架构搭建论坛
5.1:创建MySQL数据库并添加用户
-
[root@localhost htdocs]# mysql -u root -p ...省略内容 mysql> create database bbq; '//创建数据库' 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 'bbquser '@'%' identified by 'admin123'; '//给用户bbquser设置密码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 LAMP-C7]# unzip Discuz_X2.5_SC_UTF8.zip -d /opt/dis [root@localhost opt]# ls dis httpd-2.4.29 mysql-5.6.26 php-5.6.11 rh [root@localhost opt]# cd dis [root@localhost dis]# ls readme upload utility [root@localhost dis]# cp -r upload/ /usr/local/httpd/htdocs/bbq '//将upload复制到Apache服务站点中' [root@localhost dis]# cd /usr/local/httpd/htdocs/ [root@localhost htdocs]# ls bbq index.php [root@localhost htdocs]# ls bbq admin.php config data home.php misc.php search.php uc_client api connect.php favicon.ico index.php plugin.php source uc_server api.php cp.php forum.php install portal.php static userapp.php archiver crossdomain.xml group.php member.php robots.txt template [root@localhost htdocs]# cd bbq [root@localhost bbq]# ls -l ...省略内容 [root@localhost bbq]# chown -R daemon ./config [root@localhost bbq]# chown -R daemon ./data [root@localhost bbq]# chown -R daemon ./uc_client/ [root@localhost bbq]# chown -R daemon ./uc_server/data/
5.3:论坛搭建网页设置
-
1.网址输入bbq后缀,点击我同意
-
2.点击下一步
-
3.选择全新安装,点击下一步
-
4.根据要求输入内容
-
重新输入网址打开即可
-
进入后台,网址后缀重新输入/bbq/admin.php
5.4:查看MySQL数据库
-
[root@localhost bbq]# mysql -uroot -p Enter password: ...省略内容 mysql> use bbq; ...省略内容 Database changed mysql> show tables; '//发现数据库有内容了' +-----------------------------------+ | Tables_in_bbq | +-----------------------------------+ | pre_common_admincp_cmenu | | pre_common_admincp_group | ...省略内容
1576082457437)]
-
重新输入网址打开即可
[外链图片转存中…(img-tU1oozn6-1576082457437)]
[外链图片转存中…(img-tMGAktWP-1576082457437)]
-
进入后台,网址后缀重新输入/bbq/admin.php
[外链图片转存中…(img-OeTpLN9y-1576082457438)]
[外链图片转存中…(img-kRZP6LWD-1576082457438)]
5.4:查看MySQL数据库
-
[root@localhost bbq]# mysql -uroot -p Enter password: ...省略内容 mysql> use bbq; ...省略内容 Database changed mysql> show tables; '//发现数据库有内容了' +-----------------------------------+ | Tables_in_bbq | +-----------------------------------+ | pre_common_admincp_cmenu | | pre_common_admincp_group | ...省略内容