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目录,和设置环境变量
修改/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