• ubuntu18.04 编译安装 apache php


    1. apache

      apache 需要依赖几个模块:apr, apr-util, pcre,也分别源码安装。

    1.1 编译安装

    1.1.1 apr apr-util

      下载地址:http://apr.apache.org/download.cgi

      分别下载解压,然后在源码目录下 ./configure --prefix=xxx(apr-util 需要设置 --with-apr=[apr的安装路径]),然后 make && make install 即可。

    1.1.2 pcre

      下载地址:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

      可以下载一个最新版的,然后同样也是在源码目录下 ./configure --prefix=xxx && make && make install 即可。

    1.1.3 httpd

      官网下载地址:http://httpd.apache.org/

      下载解压后在源码目录下 ./configure --with-apr=[apr安装路径] --with-apr-util=[apr-util安装路径] --with-pcre=[pcre安装路径] --prefix=[httpd安装路径] && make && make install 完成安装。

    1.2 httpd服务配置启动

      cd [httpd安装路径]/conf,修改以下两个配置文件:

    1.2.1 httpd.conf

      (1) Listen 2080 (因为我是安装在用户目录下且不打算以root身份启动,所以默认的80端口需要改为其它的)

      (2) ServerName localhost (这行是为了在 httpd -k start 时不出现 warning 的提示,可以不加)

      (3) 把 Include conf/extra/httpd-vhosts.conf 前的注释去掉 (后面需要配置这个文件)

    1.2.2 extra/httpd-vhosts.conf

      去掉文件里原有的两个 example 主机配置,改为如下:

    <VirtualHost *:2080>
        DocumentRoot "/home/xxx/domain_name/"
        ServerName domain_name.com
        DirectoryIndex index.php index.html
        ScriptAlias /cgi_bin/ "/home/xxx/domain_name/cgi_bin/"
        AddHandler cgi-script .cgi .sh .py 
    
        <Directory />
            AllowOverride none
            #allow from all
            Require all granted
        </Directory>
    
        <FilesMatch .php$>
            SetHandler "proxy:fcgi://127.0.0.1:9000"
        </FilesMatch>
    
        ErrorLog "/home/xxx/domain_name/error.log"
        CustomLog "/home/xxx/domain_name/access.log" common
    </VirtualHost>

      这个是最后更改的文件,其中有一些是 cgi 和 php 相关的配置,现阶段可以省略。

    1.2.3 启动服务器

      ../bin/httpd -k start

      然后在浏览器地址栏里输入 domain_name.com:2080 看到 It works 的字眼就表示已经成功了。

    1.3 cgi 配置

    1.3.1 cgi module 编译安装

      使用 apache 自带的 apxs 工具,可以在不重新编译 apache 的前提下,给 apache 添加模块。apache 运行 cgi 程序需要用到2个模块:mod_cgi.so 与 mod_cgid.so,步骤如下:

      cd [httpd源码路径]/modules/generators

      [httpd安装路径]/bin/apxs -i -a -c mod_cgi.c

      [httpd安装路径]/bin/apxs -i -a -c mod_cgid.c

      此时查看 [httpd安装目录]/conf/httpd.conf 文件,可以发现 LoadModule cgid_module modules/mod_cgid.so 这一行被取消了注释,同时增加了 LoadModule cgi_module modules/mod_cgi.so 这一行。

    1.3.2 虚拟主机配置文件更改

      修改 extra/httpd-vhosts.conf 文件,在 <VirtualHost > 标签下加入:

      ScriptAlias /cgi_bin/ "/home/xxx/domain_name/cgi_bin/"

      AddHandler cgi-script .cgi .sh .py

      然后重启 httpd 服务器:[httpd安装路径]/bin/httpd -k restart(或者先stop再start)

    在浏览器地址栏里访问对应的cgi程序:http://domain_name.com/cgi_bin/hello.cgi 即可看到输出信息。

    2. php7

      官网下载地址:http://www.php.net/downloads.php

      下载最新版本(我下载的是7.2.9)的源码并解压,然后准备安装。

    2.1 前置准备

      php 的编译安装稍微复杂一点,因为依赖到的库很多,首先需要安装一些基础的库,这些库有一部分我同样是下载源码编译安装,其它的因为不太常见,同时为了避免手动编译安装的繁琐就直接使用 apt install 的方式:

      sudo apt install zlib1g-dev  libpng-dev  libjpeg-dev  libfreetype6-dev

      curl libxml2 openssl 这几个库我使用源码来编译安装(因为考虑到以后也会在开发中用到)

      实际上依赖到的库可能不只这几个,需要看后面 ./configure 的配置参数以及系统是否自带了对应的库。

    2.1 编译安装

      cd [php源码目录]

      ./configure --prefix=/home/xxx/php/php-7.2.9/install --with-mcrypt --with-mhash --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-fpm --with-fpm-user=mywww --with-fpm-group=mywww --with-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-jpeg-dir --with-freetype-dir --enable-opcache --with-libxml-dir=/home/xxx/libxml2/libxml2-2.9.8/install --with-openssl-dir=/home/xxx/openssl/1.1.0i/install --with-curl=/home/xxx/curl/7.61.1/install  && make && make install

      注意把命令里各个库的路径替换成实际的路径。

    2.2 fpm 配置启动  

      cd [php源码目录]

      cp php.ini-production [php安装目录]/etc/php.ini

      cp sapi/fpm/init.d.php-fpm [php安装目录]/sbin/ && chmod u+x [php安装目录]/sbin/init.d.php-fpm

      cd [php安装目录]/etc/

      cp php-fpm.conf.default php-fpm.conf

      cp php-fpm.d/www.conf.default php-fpm.d/mywww.conf

    把mywww.conf文件中第4行的[www]改为[mywww]

      ./init.d.php-fpm start

    netstat -antp | grep php 即可看见 php-fpm 进程在运行(fpm进程默认使用 9000 端口):

    2.3 apache 的 php 配置

       好了,终于来到最后也是最重要的这一步了。也是更改这两个配置文件:

    2.3.1 httpd.conf

      把 LoadModule proxy_module modules/mod_proxy.so

      和 LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

    前面的注释去掉,这两个是 apache 使用 fpm 方式解释 php 文件需要打开的模块扩展。

    2.3.2 extra/httpd-vhosts.conf

      添加以下几行:

      <FilesMatch .php$>
        SetHandler "proxy:fcgi://127.0.0.1:9000"
      </FilesMatch>

      具体位置如 1.2.2 所示。

    2.3.3 重启 httpd 服务

      重启 httpd 服务,访问网站根目录下任何一个 php 文件可以看到对于的解释输出。

  • 相关阅读:
    sql server 中 bit 字段的 查询方法
    C# 4.0新特性"协变"与"逆变"以及背后的编程思想
    marginleft是做边距,是宽度 left是定位盒子左上角左边位置的一个点
    什么是企业库 怎么使用企业库 企业库的好处 企业库的目标
    SQL各种Join用法(Full,Left,Out,Inner)
    JavaScript计算两个文本框内数据的乘积(四舍五入保留两位小数)
    SQL VIEW(视图)
    Sql ISNULL() 函数
    left join 和 left outer join 有什么区别
    18个不常见的C#关键字,您使用过几个?
  • 原文地址:https://www.cnblogs.com/Newdawn/p/9614867.html
Copyright © 2020-2023  润新知