Bootstrap

源码编译安装LAMP

前言

Linux操作系统之所以能够在十余年的时间里发展壮大以至于风靡全球,其开放源代码的特性是很重要的原因之一,及Linux操作系统中包括内核在内的所有软件都可以获得源代码,并且可以经过定制修改后编译安装。

虽然现代的Linux发行版本大部分采用包管理机制对软件进行打包安装,可以省去软件的编译安装过程,但是还有些情况需要使用源代码编译的方式为系统安装新的应用程序。

  • L:Linux

  • A:Apache

  • M:MySQL

  • P:PHP

一:LAMP平台与编译安装

1.1LAMP平台概述

  • LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境

  • LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言

1.2构建LAMP平台顺序

  • 在构建LAMP平台时,各组件的安装顺序依次为Linux,Apache,MySQL,PHP

  • 其中Apache和MySQL的安装并没有严格的顺序要求,而PHP环境的安装一般放到最后,负责沟通web服务器和数据库系统以协同工作

1.3编译安装的优点

  • 具有较大的自由度,功能可定制
  • 可及时获得最新的软件版本
  • 普遍适用于大多数Linux版本,便于一直使用

二:Apache网站服务源码编译安装

2.1Apache起源

  • 源于A Patchy Server,著名的开源web服务软件
  • 1955年时,发布Apache服务程序的1.0版本
  • 由Apache软件基金会(ASF)负责维护
  • 最新的名称为“Apache HTTP Server”

2.2Apache特点

  • 开放源代码,跨平台应用
  • 支持多种网页编程语言
  • 模块化设计,运行稳定,良好的安全性

2.3环境准备

  • VMware软件
  • centos7操作系统
  • 准备Apache服务的源码包
  • Apache跨平台组件包准备

2.4编译安装过程

2.4.1环境准备

  • 挂载宿主机的共享文件夹,读取下载好的源码文件
  • 解压跨平台组件包和源码包

将跨平台组件包移动到源码包目录下

[root@localhost opt]# tar zxvf apr-1.6.2.tar.gz 
...省略内容
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
...省略内容
[root@localhost ]# tar jxvf httpd-2.4.29.tar.bz2 
...省略内容
[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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 安装编译器和其他工具
[root@localhost opt]# yum -y install \
> gcc \			  '//编译器'
> gcc-c++ \		  '//编译器'
> make \		  '//make工具'
> pcre-devel \	  '//支持正则表达式的工具'
> expat-devel \	  '//使网站能解析标签语言的工具'
> perl			  '//Perl语言工具'

    2.4.2confingure配置

    [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.3make编译和make install

      [root@localhost httpd-2.4.29]# make		'//编译'
      ...省略内容
      [root@localhost httpd-2.4.29]# make install  '//安装'
      
       
       

        2.4.4配置启动脚本

        [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.wukong.com:80
          	...省略内容
          '//搜索Listen,并修改
              ...省略内容
          Listen 20.0.0.95:80	'//开启IPv4并监听自己的IP地址'
          #Listen 80		'//关闭IPv6监听'
          	...省略内容
          
           
           

            2.4.6创建配置文件的软链接

            [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.7开启服务

              [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 20.0.0.95:80      0.0.0.0:*               LISTEN      52578/httpd         
              
               
               

                登录验证,Apache服务启动成功
                在这里插入图片描述

                三:MySQL源码编译安装

                3.1MySQL概述

                • MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
                • MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
                • MySQL是一个真正的多线程,多用户的SQL数据库服务,凭借其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择

                3.2MySQL编译安装过程

                3.2.1环境准备

                [root@localhost htdocs]# yum install ncurses-devel autoconf cmake -y
                    '//ncurses-devel是字符终端下屏幕控制的基本库'
                    '//autoconf生成可以自动配置软件源代码'
                    '//cmake跨平台编译安装工具'
                

                .省略内容
                [root@localhost]# cd /opt/
                [root@localhost opt]# 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 opt]# tar zxvf mysql-5.6.26.tar.gz
                [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.2cmake配置

                  [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.3make编译和make install

                    [root@localhost mysql-5.6.26]# make
                        ...省略内容
                        此处编译等待时间稍长(根据电脑CPU视情况)
                    [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 -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
                              ...省略内容
                          
                           
                           

                            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.1PHP概述

                                  • PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域
                                  • PHP支持绝大多数流行的数据库,在数据库层面的操作功能十分强大,而且能够支持Unix,Windows,Linux等多种操作系统

                                  4.2PHP编译安装过程

                                  4.2.1配置环境

                                  [root@localhost mysql]# yum -y install \
                                  > gd \	'//安装GD库环境'
                                  > libpng \
                                  > libpng-devel \
                                  > pcre \
                                  > pcre-devel \
                                  > libxml2-devel \
                                  > libjpeg-devel
                                  ...省略内容
                                  [root@localhost]# cd /opt
                                  [root@localhost opt]# 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 opt]# tar jxvf php-5.6.11.tar.bz2 -C /opt
                                  ...省略内容
                                  
                                   
                                   

                                    4.2.2confingure配置

                                    [root@localhost ]# 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.3make编译和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服务

                                          [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
                                          
                                           
                                           

                                            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 |
                                            | bbs |
                                            | mysql |
                                            | performance_schema |
                                            | test |
                                            ±-------------------+
                                            5 rows in set (0.00 sec)
                                            mysql> grant all on bbq.* to ‘bbsuser ‘@’%’ 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 opt]# unzip Discuz_X2.5_SC_UTF8.zip -d /opt/dis(最小安装没有unzip 需要yum -y install unzip)
                                              [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/bbs	'//将upload复制到Apache服务站点中'
                                              [root@localhost dis]# cd /usr/local/httpd/htdocs/
                                              [root@localhost htdocs]# ls
                                              bbq  index.php
                                              [root@localhost htdocs]# ls bbs
                                              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 bbs
                                              [root@localhost bbs]# ls -l
                                              ...省略内容
                                              [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论坛搭建网页设置

                                                在这里插入图片描述
                                                .网址输入bbq后缀,点击我同意
                                                然后根据提示一步步来
                                                在这里插入图片描述
                                                在这里插入图片描述

                                                ;