编译安装LAMP

编译安装LAMP

一、相关概念:
1、LAMP = (Linux,Apache,MySQL,PHP(Python,Perl))
2、httpd 运行在Apache 提供的 Apache Portable Runtime(APR)中,以兼容不同的操作系统
3、Apache的三种工作模式:

Apache 是基于模块化进行设计的,其中最核心的组件是MPM(Multi Processing Module )多重处理模块,而Apache就是通过此模块来进行对操作系统进程线程的管理。它包含多种工作模式,其中最主要的三种工作模式分别是:

  • 1.profork(预派生)
  • 2.worker(工作模式)
  • 3.event(事件模式)
4、多版本共存安装
  • rpm包的安装位置:

    • /bin /sbin /usr/bin /usr/bin
    • /lib /usr/lib
    • /etc
    • /usr/share/{doc,man}
  • 编译安装:
    • usr/local
      • /bin /sbin
      • /lib
      • /etc
      • share/{doc,man}
        eg: /usr/local/apr
             bin sbin lib includes etc share/man
4、安装顺序 apr-->libxml2-devel -->apr-util-->httpd--> MySQL -->php-->XCache
  • 若要使用新版1.6.1的apr-util须要提前安装好libxml2-devel包,否则会报如下错误:

编译安装LAMP
可以参照:https://blog.51cto.com/castiel/2051440

二、安装

1、安装apr和apr-util
  • 1.1下载源码包

    wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.7.0.tar.gz
    wegt http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
  • 1.2 编译源码并安装
    make && make install
    apr-uitl 编译
    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

    编译apr-util时有如下报错:
    编译安装LAMP

  • 使用rpm -qa|grep expat
    编译安装LAMP
    发现已经安装了expat,于是猜想是不是缺少相关的子包(-util 程序接口包, -devel程序开发包)包。但是expat并没有util包,于是便安装了expat-devel包。错误消失。
    编译安装LAMP

  • PS:apr 仅为了运行httpd而使用,对系统无其他用处。
    2、安装httpd
  • 2.1 下载httpd源码包
    wget http://www.apache.org/dist/httpd/httpd-2.4.38.tar.bz2

    httpd编译参数:

    --enable-so  支持共享模块
    --enable-ssl 启用ssl
    --enable-deflate 将HTML页面压缩发送
    --enable-proxy-fcgi  工作在FCIG模式
    --enable-mpms-shared
    --with-mpm  设置默认的工作模式
    --enable-rewrite 支持HTML重写
    --enable-cigd work event 模式依赖
  • 编译安装httpd
./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd --enable-so --enable-rewrite --enable-ssl --enable-cigd --enable-cig --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --with-apr=/usr/local/apr --wirh-apr-util=/usr/local/apr-util
  • PCRE 报错
    编译安装LAMP
    使用命令查看相关的包,并安装pcre-devel即可
    yum provides pcre-config 

    编译安装LAMP

  • openssl 版本报错
    编译安装LAMP
    一开始以为真是版本的问题,后来才发现是没有安装openssl-devel 包,安装一下就不会报错了。
  • 编译完成:
    编译安装LAMP
    3、MySQL 由于编译时间较长,这里使用通用二进制格式安装。
  • 3.1 下载通用二进制压缩包
    wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
  • 3.2 将压缩包解压至/usr/local 目录下,这是官方指定的目录,必须是此目录。
    tar xf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
  • 3.3 创建msyql 系统用户及用户组(默认会创建) 。
    useradd -r mysql
  • 3.4 切换到/usr/local/mysql 目录,然后顺序执行一下命令。
    
    * bin/mysqld --initialize --defaults-file=/etc/my.cnf --user=mysql # 初始化数据库
    * bin/mysql_ssl_rsa_setup # 创建密钥对
    my.cnf 简单配置如下:
 [client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
basedir=/usr/local/mysql
datadir=/mydata/mysqldata
socket=/tmp/mysql.sock
  • 3.5 使用MySQL官方提供的脚本启动 mysqld 服务
support-files/mysql.server start
  • 3.6 将msyqld 服务添加到 systemd 管理
    • 启动mysqld 服务后,默认会在/run/systemd/generator.late/ 下生成一个mysql.service 脚本,
    • 将此脚本复制到 /usr/lib/systemd/system 下,并追击两行:
[Install]
WantedBy=multi-user.target

整体内容如下:

  #Automatically generated by systemd-sysv-generator
[Unit]
Documentation=man:systemd-sysv-generator(8)
SourcePath=/etc/rc.d/init.d/mysqld
Description=LSB: start and stop MySQL
Before=runlevel2.target
Before=runlevel3.target
Before=runlevel4.target
Before=runlevel5.target
Before=shutdown.target
After=network-online.target
After=remote-fs.target
After=ypbind.service
After=nscd.service
After=ldap.service
After=ntpd.service
After=xntpd.service
After=network-online.target
Wants=network-online.target
Conflicts=shutdown.target

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/etc/rc.d/init.d/mysqld start
ExecStop=/etc/rc.d/init.d/mysqld stop
ExecReload=/etc/rc.d/init.d/mysqld reload

[Install]
WantedBy=multi-user.target
4、安装PHP,工作在FastCGI模式
  • 4.1 安装所须的依赖包

    yum install bzip2-devel libpng-devel libjpeg-turbo-devel libxslt-devel freetype-devel libzip 
    
  • 4.2 编译参数
    ./configure --prefix=/usr/local/php --with-fpm-user=webu --with-fpm-group=webu --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip --enable-fpm
  • 4.3 安装完后添加相应的系统用户和组 webuuseradd -r webu
  • 4.4 将fpm-php 服务添加到systemd 管理
    cp /data/LAMP/php-7.3.8/sapi/fpm/php-fpm.service /usr/lib/systemd/system/
    systemctl daemon-reload #重新加载 systemd 服务
  • 4.5 配置php及fpm-php相关配置文件

    cp /data/LAMP/php-7.3.8/php.ini-production /usr/local/php/etc/php.ini     #源码目录下
    cp /data/LAMP/php-7.3.8/sapi/fpm/php-fpm /usr/local/php/etc/php-fpm   #源码目录下
    cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf   #安装目录下
    cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf    #安装目录下
    
  • 4.6 修改httpd.conf 及index.php文件。
    • 增加如下字段:
      <FilesMatch \.php$>
      SetHandler "proxy:fcgi://127.0.0.1:9000"
      </FilesMatch>
      # 添加对php页面的支持(可不加)
      AddType application/x-httpd-php .php
      AddType application/x-httpd-php-source .phps
    • 修改去掉以下行的注释
      LoadModule proxy_module modules/mod_proxy.so
      LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
      # 首页默认文件 可以写多个
      <IfModule dir_module>
      DirectoryIndex index.html index.php
      </IfModule>
    • 将DocumentRoot 目录下的index.html 改名为index.php 并追加:
      <?
      phpinfo()
      ?>
  • 4.7 重启httpd服务,在浏览器访问就能看到php版本的相关信息了。
  • 4.8 测试PHP与MySQL的连通性,修改index.php代码为:
         <?php
            $conn=mysqli_connect("localhost","用户","密码");
            if($conn)
                    echo "Success...";
            else
                    echo "Failure...";
        ?>

    编译安装LAMP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值