1.安装Apache

Centos 编译安装 Apache 2.4.6 准备,进入/urs/local目录:

[root@VM-0-10-centos local]#yum groupinstall "Development tools"

之前服务器是 yum install httpd 安装的 Apache,所以可能解决了部分依赖关系,在我编译安装的过程中,只需要再格外 yum 两个 devel 包:

[root@VM-0-10-centos local]#yum install zlib-devel pcre-devel


 


 下载安装包

[root@VM-0-10-centos local]#wget https://archive.apache.org/dist/httpd/httpd-2.4.6.tar.gz
[root@VM-0-10-centos local]#wget https://archive.apache.org/dist/apr/apr-1.4.8.tar.gz
[root@VM-0-10-centos local]#wget https://archive.apache.org/dist/apr/apr-util-1.5.2.tar.gz

解压缩:

[root@VM-0-10-centos local]#tar -xvf httpd-2.4.6.tar.gz
[root@VM-0-10-centos local]#tar -xvf apr-1.4.8.tar.gz
[root@VM-0-10-centos local]#tar -xvf apr-util-1.5.2.tar.gz

将apr和apr-util复制到httpd-2.4.6/srclib目录下:

[root@VM-0-10-centos local]#mv apr-1.4.8 httpd-2.4.6/srclib/apr
[root@VM-0-10-centos local]#mv apr-util-1.5.2 httpd-2.4.6/srclib/apr-util
[root@VM-0-10-centos local]#cd httpd-2.4.6

进入 httpd-2.4.6目录,编译命令(已指定php工作模式为prefork。笔者下载的php7.0.33版本不是线程安全版本,因此无法使用worker):

[root@VM-0-10-centos httpd-2.4.6]#./configure --with-included-apr --enable-nonportable-atomics=yes --with-mpm=prefork --with-z

默认安装的是 event mpm,如果要用 worker ,就需要  --with-mpm=worker,或者  --enable-mpms-shared-all,这样event、worker和prefork就会以模块化的方式安装,在httpd.conf里配置即可

编译完成后:

[root@VM-0-10-centos httpd-2.4.6]#make && make install

安装完毕后, 所有的东西都在 /usr/local/apache2 这个目录下,可根据业务需求自行配置 conf/httpd.conf

列一下支持php部分

#添加ServerName,选择本地即可
ServerName localhost:80

#添加PHP模块
LoadModule php7_module modules/libphp7.so

#添加PHP解析
AddType application/x-httpd-php .php

#添加PHP index.php解析
DirectoryIndex index.php index.htm index.html

#调整php项目文件夹权限
chmod -R 777 default

还有很多配置文件在 /usr/local/apache2/conf/extra 下面,在 httpd.conf 中按需加载:

配置 timeout, keepalive 的
httpd-default.conf
配置 apache mpm 的
httpd-mpm.conf
这个很重要,性能优化基本上就靠这个文件了
配置网站目录的
httpd-userdir.conf
配置虚拟主机的
httpd-vhosts.conf

设置自启动

[root@VM-0-10-centos conf]#cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd

编辑 /etc/init.d/httpd 文件,在首行 #!/bin/sh 下面加入两行:

# chkconfig: 35 85 15
# description: Activates/Deactivates Apache 2.4.6

将 Apache 加入开机自动启动:

[root@VM-0-10-centos conf]#chkconfig --add httpd
[root@VM-0-10-centos conf]#chkconfig httpd on

最后一步,启动编译好的 Apache 2.4.6:

[root@VM-0-10-centos conf]#service httpd start

2.安装PHP

新机器需要先删除自带的httpd服务

安装依赖库

若无需要的可以省略(当时迁移项目需要支持cropper图片裁剪插件,因此加上图片处理模块)

图片处理模块

  • yum -y install libjpeg-devel
  • yum install libpng
  • yum install libpng-devel
  • yum install freetype-devel

前置模块

  • yum -y install gcc automake autoconf libtool make
  • yum -y install gcc gcc-c++ glibc
  • yum -y install libmcrypt-devel mhash-devel libxslt-devel
  • yum -y install openssl-devel libicu-devel
  • yum install httpd-devel

进入目录/usr/local,下载php

[root@VM_0_3_centos local]#wget http://cn2.php.net/distributions/php-7.0.33.tar.gz
[root@VM_0_3_centos local]#tar php-7.0.33.tar.gz
[root@VM_0_3_centos local]#cd php-7.0.33

部署PHP应用需要加上--with-apxs2生成libphp.so文件

支持图片需要模块 --with-gd

检查依赖库

[root@VM-0-10-centos httpd-2.4.6]#./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/conf.d --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-opcache --enable-intl --with-xsl --enable-mysqlnd --enable-exif --with-gd

编译

        若无报错执行

[root@VM-0-10-centos httpd-2.4.6]#make && make install

安装成功后,会提示libphp.so生成对应apache目录,和设置环境变量

centos7 zabbix6编译 centos7编译安装apache_centos

修改/etc/profile文件即可。

[root@VM-0-10-centos httpd-2.4.6]#vim /etc/profile

在文件末尾加上如下两行代码,目录是./configure语句中--prefix=/usr/local/php

PATH=$PATH:/usr/local/php/bin
export PATH

 

3.部署常见问题

 1.无法访问,报500错误 

文件夹权限,设置PHP项目文件夹权限 chomd -R 777 文件夹名称

2.找不到密钥问题 

错误描述:

RuntimeException: No supported encrypter found. The cipher and / or 
key length are invalid. in /data/www/default/vendor/laravel/framework
/src/Illuminate/Encryption/EncryptionServiceProvider.php:29

整理之前的.env文件存放项目根目录下

或在php项目根目录下执行

php -r "copy('.env.example', '.env');"
php artisan clear-compiled
php artisan optimize
php artisan key:generate

或 在public下新建一个文件 【.htaccess】

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>


    RewriteEngine On


    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]


    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]


    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

3. 首页index.php可以访问,其他路由无法访问,可能是apache下rewrite.so模块未打开

编辑http.conf 搜索mod_rewrite.so解除注释

LoadModule rewrite_module modules/mod_rewrite.so