zoukankan      html  css  js  c++  java
  • Centos7.2源码编译安装LA(N)MP

    LAMP环境中php是作为apache的模块安装的,所以安装顺序是php放在apache的后面安装,这样便于安装php时可以在apache的模块目录生成对应的php模块。

    apache版本:2.4.37

    mysql版本:5.7.24

    php版本:7.3.0

    nginx版本:nginx-1.14.2

    注意:这里是使用的root用户安装,如果是其他用户,相应的操作前需要加上sudo。

    1、安装apache

    需要安装的依赖 apr、apt-util、pcre,pcre是一个正则表达式库,apache在路由匹配和路由重写时需要用到。

    注意:这里不要使用pcre2,否则编译apache时会报错。

    下载软件源码压缩包并解压

    cd /usr/local/src
    wget http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.37.tar.gz
    wget http://mirrors.hust.edu.cn/apache/apr/apr-1.6.5.tar.gz
    wget http://mirrors.hust.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
    wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
    tar -zxvf httpd-2.4.37.tar.gz
    tar -zxvf apr-1.6.5.tar.gz
    tar -zxvf apr-util-1.6.1.tar.gz
    tar -zxvf pcre-8.42.tar.gz

    将apr-1.6.5重命名为apr并移动到apache的源码包的srclib目录中

    将apr-1.6.5重命名为apr并移动到apache的源码包的srclib目录中

    mv apr-1.6.5 httpd-2.4.37/srclib/apr
    mv apr-util-1.6.1 httpd-2.4.37/srclib/apr-util

    编译安装pcre

    cd pcre-8.42
    ./configure --prefix=/usr/local/pcre-8.42
    make && make install

    编译安装apache

    cd /usr/local/src/httpd-2.4.37
    ./configure --prefix=/usr/local/apache --with-pcre=/usr/local/pcre-8.42 --with-included-apr
    make && make install

    注:如果make过程报 fatal error: expat.h: No such file or directory,运行 yum install -y expat-devel 安装expat,然后重新执行以上操作,如果还报错,先执行make distclean后重新执行以上操作。

    启动apache

    /usr/local/apache/bin/apachectl start

    这里会出现错误提示信息,是因为没有配置虚拟主机的缘故,这里忽略它。

    在浏览器中访问本机ip,如果是虚拟机则需要使用虚拟机的ip地址

    显示It works! 代表启动成功,apache安装完成。

    2、安装mysql

    准备工作(安装依赖、新建用户和目录)

    yum install -y cmake gcc-c++ ncurses-devel perl-Data-Dumper
    groupadd mysql
    useradd -s /sbin/nologin -g mysql mysql
    mkdir -p /home/mysql/{data,log}
    mkdir  /home/mysql/log/error.log
    chown -R mysql:mysql /home/mysql

    下载并解压mysql源码压缩包

    cd /usr/local/src
    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24.tar.gz
    tar -zxvf mysql-5.7.24.tar.gz

    进入mysql源码包目录

    cd /usr/local/src/mysql-5.7.24

    执行cmake

    cmake 
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
    -DMYSQL_DATADIR=/home/mysql/data 
    -DSYSCONFDIR=/etc 
    -DENABLED_LOCAL_INFILE=1 
    -DENABLE_DOWNLOADS=1 
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 
    -DWITH_PARTITION_STORAGE_ENGINE=1 
    -DDEFAULT_CHARSET=utf8 
    -DDEFAULT_COLLATION=utf8_general_ci 
    -DDOWNLOAD_BOOST=1 
    -DWITH_BOOST=/usr/local/boost

    执行make

    make

    这里需要等待很长的时间,可能由于电脑性能和在虚拟机里面的原因,我这里等了将近三个小时,然后安装

    make install

    安装完成后将mysql的bin目录加入环境变量

    echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
    source /etc/profile

    接下来初始化数据库数据目录

    mysqld --initialize --user=mysql

    注意:这里终端会输出root的初始密码,把它记录下来。

    接下来配置一下/etc/my.cnf

    [client]
    port=3306
    socket=/tmp/mysql.sock
    
    [mysqld]
    port=3306
    basedir=/usr/local/mysql
    datadir=/home/mysql/data
    log_error=/home/mysql/log/error.log
    socket=/tmp/mysql.sock
    key_buffer_size=16M
    max_allowed_packet=8M
    
    [mysqldump]
    quick

    上面只列出了基本的配置项,更多配置项请查看官方文档。配置项根据自己的机器做好调整。

    然后将启动脚本添加到服务中,实现开机自启动

    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    chmod +x /etc/init.d/mysqld
    chkconfig --add mysqld

    接下来启动mysqld

    service mysqld start

    mysqld服务启动起来以后,连接mysqld服务,修改root初始密码

    mysql -uroot -p
    输入密码进入mysql命令行
    alter user 'root'@'localhost' identified by '新密码';

    mysql安装配置完成。

    3、安装php

    安装libxml2

    yum install -y libxml2 libxml2-dev

    下载源码压缩包并解压

    cd /usr/local/src
    wget http://www.zlib.net/zlib-1.2.11.tar.gz
    wget http://www.ijg.org/files/jpegsrc.v9c.tar.gz
    wget https://download.sourceforge.net/libpng/libpng-1.6.36.tar.gz wget https://download.savannah.gnu.org/releases/freetype/freetype-2.4.0.tar.gz
    wget http://cn2.php.net/get/php-7.3.0.tar.gz/from/this/mirror

    安装zlib

    tar -zxf zlib-1.2.11.tar.gz
    cd zlib-1.2.11
    ./configure #这里不要加安装路径,否则后面安装libpng时会找不到zlib
    make && make install

    安装libpng

    tar -zxf libpng-1.6.36.tar.gz
    cd libpng-1.6.36
    ./configure --prefix=/usr/local/libpng
    make && make install

    安装jpeg

    tar -zxf jpegsrc.v9c.tar.gz
    cd jpeg-9c
    ./configure --prefix=/usr/local/jpeg --enable-shared
    make && make install

     安装freetype

    tar -zxf freetype-2.4.0.tar.gz
    cd freetype-2.4.0
    ./configure --prefix=/usr/local/freetype2
    make && make install

    接下来进入php源码目录编译安装

    tar -zxvf mirror
    cd php-7.3.0
    ./configure --prefix=/usr/local/php --enable-fpm --with-apxs2=/usr/local/apache/bin/apxs --with-mysqli --with-pdo-mysql --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/local/libpng --with-freetype-dir=/usr/local/freetype2 --with-gd --with-config-file-path=/usr/local/etc/php --with-config-file-scan-dir=/usr/local/etc/php/conf.d
    make && make install

    注:配置文件位置编译选项说明

    --with-config-file-path=/usr/local/etc/php               将php.ini文件的读取目录设为/usr/local/etc/php
    --with-config-file-scan-dir=/usr/local/etc/php/conf.d    设置额外的ini配置文件读取目录,此目录一般存放扩展的开启配置文件,如文件swoole.ini内容为extension=swoole

    安装成功后会在/usr/local/apache/modules目录下生成一个libphp7.so的模块文件

    编辑 httpd.conf 文件以调用 PHP 模块

    vi /usr/local/apache/conf/httpd.conf

    LoadModule php7_module modules/libphp7.so

    先检查是否已经自动生成,没有则手动加入

    让apache将扩展名.php解析成php

    <FilesMatch .php$>

      SetHandler application/x-httpd-php

    </FilesMatch>

    这里我们指定的php的配置文件目录为/usr/local/etc/php,也可以在httpd.conf文件中用PHPIniDir指令指定,如:PHPIniDir /etc/php.ini

    从php源码包复制配置文件到我们指定的配置文件目录

    cp /usr/local/src/php-7.3.0/php.ini-development /usr/local/etc/php/php.ini

    新建php文件测试

    rm -rf /usr/local/apache/htdocs/index.html
    echo "<?php phpinfo(); ?>" > /usr/local/apache/htdocs/index.php

     重启apache

    /usr/local/apache/bin/apachectl restart

    在浏览器中访问http://主机ip/index.php,显示phpinfo()的内容代表配置正确。

    LAMP环境到此搭建完成。

    4、安装nginx

    下载源码压缩包并解压

    cd /usr/local/src
    wget http://nginx.org/download/nginx-1.14.2.tar.gz
    tar -zxvf nginx-1.14.2.tar.gz

    进入源码包目录进行编译前的准备工作

    cd nginx-1.14.2
    ./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/src/pcre-8.42

    注意:pcre的路径为源码包的路径

    编译和安装

    make && make install

    完成以后,先检查apache是否在启动状态

    ps aux | grep httpd

    如果apache在启动状态则先将其退出

    /usr/local/apache/bin/apachectl stop

    启动php-fpm

    新建用户用于启动php-fpm

    groupadd www-data
    useradd -s /sbin/nologin -g www-data www-data

    修改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
    cp /usr/local/php/sbin/php-fpm /usr/local/bin
    vi /usr/local/php/etc/php-fpm.d/www.conf

    找到以下内容并修改

    ; Unix user/group of processes
    ; Note: The user is mandatory. If the group is not set, the default user's group
    ;       will be used.
    user = www-data
    group = www-data

    然后启动php-fpm

    php-fpm

    配置nginx使其支持php应用

    vi /usr/local/nginx/conf/nginx.conf

    修改默认的 location 块,使其支持 .php 文件

    location / {
        root   html;
        index  index.php index.html index.htm;
    }

    下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块,取消默认的 PHP 配置块的注释,并修改为下面的内容:

    location ~ .php$ {
        fastcgi_index   index.php;
        fastcgi_pass    127.0.0.1:9000;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }

    启动nginx

    /usr/local/nginx/sbin/nginx 

    创建测试文件

    rm -rf /usr/local/nginx/html/index.html
    echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/index.php

    在浏览器中访问http://主机ip,显示phpinfo()的内容代表配置成功。

    到这里LA(N)MP环境搭建完成。 

  • 相关阅读:
    Blank page instead of the SharePoint Central Administration site
    BizTalk 2010 BAM Configure
    Use ODBA with Visio 2007
    Handling SOAP Exceptions in BizTalk Orchestrations
    BizTalk与WebMethods之间的EDI交换
    Append messages in BizTalk
    FTP protocol commands
    Using Dynamic Maps in BizTalk(From CodeProject)
    Synchronous To Asynchronous Flows Without An Orchestration的简单实现
    WSE3 and "Action for ultimate recipient is required but not present in the message."
  • 原文地址:https://www.cnblogs.com/liyuchuan/p/10226630.html
Copyright © 2011-2022 走看看