php+nginx自动编译安装脚本

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

#由于需要安装到nginx_http_concat_module和phalcon模块,需要安装git工具下载模块

#/bin/bash

#源码下载目录

SoftDir='/usr/local/src'

#定义安装日志路径

LOG_INS='/var/log/install.log'

#define make

function MAKE(){

if [ `echo $?` -eq 0 ];then

make >> $LOG_INS 2>&1

else

exit

fi

}

#define make install

function MAKE_INS(){

if [ `echo $?` -eq 0 ];then

make install >> $LOG_INS 2>&1

else

exit

fi

}

#安装系统运维包:

yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses curl openssl-devel gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel readline-devel libxslt-devel expat-devel xmlrpc-c xmlrpc-c-devel libmcrypt libmcrypt-devel libaio >> $LOG_INS 2>&1

#替换selinux 配置:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

#=======================================        安装PHP 7.1.7          ====================================

#下载PHP 7.1.7

cd $SoftDir &&  wget http://cn2.php.net/distributions/php-7.1.7.tar.gz

#解压PHP:

tar -zxvf php-7.1.7.tar.gz

#添加php-fpm 用户,不允许登陆系统

useradd -s /sbin/nologin php-fpm

#进入PHP解压目录,配置编译参数:

cd /usr/local/src/php-7.1.7

./configure '--prefix=/usr/local/php' '--with-config-file-path=/usr/local/php/etc' '--with-config-file-scan-dir=/usr/local/php/etc/conf.d' '--enable-fpm' '--with-fpm-user=php-fpm' '--with-fpm-group=php-fpm' '--enable-soap' '--with-openssl' '--with-openssl-dir' '--with-mcrypt' '--with-pcre-regex' '--with-zlib' '--with-iconv' '--with-bz2' '--enable-calendar' '--with-curl' '--with-cdb' '--enable-dom' '--enable-exif' '--with-pcre-dir' '--enable-ftp' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-gettext' '--with-gmp' '--with-mhash' '--enable-mbstring' '--with-libmbfl' '--with-onig' '--enable-pdo' '--with-pdo-mysql=mysqlnd' '--with-zlib-dir' '--with-readline' '--enable-session' '--enable-shmop' '--enable-simplexml' '--enable-sockets' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-wddx' '--with-libxml-dir' '--with-xsl' '--enable-zip' '--enable-mysqlnd' '--with-mysql-sock=/tmp/mysql.sock' '--with-mysqli=/usr/local/mysql/bin/mysql_config' '--without-pear'  >> $LOG_INS 2>&1

#编译及安装

MAKE && MAKE_INS

#复制Php 主配置:

cp php.ini-production /usr/local/php/etc/php.ini

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

#创建php-fpm 主配置文件:

sed -i '1,$s#;pid = run/php-fpm.pid#pid = /usr/local/php/var/run/php-fpm.pid#g' /usr/local/php/etc/php-fpm.conf

sed -i '1,$s#;error_log = log/php-fpm.log#error_log = /usr/local/php/var/log/php-fpm.log#g' /usr/local/php/etc/php-fpm.conf

echo "include=/usr/local/php/etc/php-fpm.d/*.conf" >> /usr/local/php/etc/php-fpm.conf

cat <<EOF > /usr/local/php/etc/php-fpm.d/www.conf

[global]

pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log

[www]

listen = 127.0.0.1:9000

user = php-fpm

group = php-fpm

listen.owner = nginx

listen.group = nginx

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

EOF

#测试php-fpm 配置:

/usr/local/php/sbin/php-fpm -t

if [ `echo $?` -eq 0 ];then

echo "php-fpm installed successfully"

else

exit

fi

#拷贝php-fpm 启动脚本:

#cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

#centos 7 systemctl启动php-fpm

cp /usr/local/src/php-7.1.7/sapi/fpm/php-fpm.service /usr/lib/systemd/system/

systemctl enable php-fpm.service

systemctl start php-fpm.service

#赋予脚本可执行权限:

#chmod 755 /etc/init.d/php-fpm

#关闭php 版本信息:

sed -i 's/expose_php = On/expose_php = Off/g' /usr/local/php/etc/php.ini

#将php-fpm 写入随机启动:

#chkconfig --add php-fpm && chkconfig php-fpm on

#启动php-fpm

#service php-fpm start

#下载phalcon模块

cd $SoftDir && git clone https://github.com/dreamsxin/cphalcon7.git

cd cphalcon7/ext

#准备环境,配置编译参数

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config >> $LOG_INS 2>&1

#编译及安装

MAKE && MAKE_INS

#修改php.ini,增加扩展模块

mkdir /usr/local/php/etc/conf.d

echo "extension = phalcon.so" >> /usr/local/php/etc/conf.d/phalcon.ini

#重新加载配置

/usr/local/php/sbin/php-fpm -t

systemctl restart php-fpm.service

#/etc/init.d/php-fpm restart

#=======================================        安装nginx 1.12.1          ====================================

#下载

cd $SoftDir && wget http://nginx.org/download/nginx-1.12.1.tar.gz && git clone git://github.com/alibaba/nginx-http-concat.git

#解压:

tar zxf nginx-1.12.1.tar.gz

#创建nginx运行用户

useradd -s /sbin/nologin nginx

#进入解压目录,配置编译参数:

cd ./nginx-1.12.1 && ./configure --prefix=/usr/local/nginx --with-http_realip_module  --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --add-module=/usr/local/src/nginx-http-concat >> $LOG_INS 2>&1

#编译及安装

MAKE && MAKE_INS

#设置软链接

ln -s /usr/local/lib/libmaxminddb.so.0 /usr/lib64

ln -s /usr/local/lib/libprofiler.so.0 /usr/lib64

ln -s /usr/local/lib/libunwind.so.8 /usr/lib64

#检测初始化完成的nginx 配置是否有问题

/usr/local/nginx/sbin/nginx  -t

if [ `echo $?` -eq 0 ];then

echo "Nginx installed successfully!"

else

exit

fi

#centos 7创建nginx.service启动脚本

cat <<EOF > /usr/lib/systemd/system/nginx.service

[Unit]

Description=nginx

Documentation=http://nginx.org/en/docs/

After=network-online.target remote-fs.target nss-lookup.target

Wants=network-online.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s TERM $MAINPID

[Install]

WantedBy=multi-user.target

EOF

#创建nginx 启动脚本,centos 7采用systemctl进行启动,此处注释掉,备用。

#cat <<EOF > /etc/init.d/nginx

##!/bin/bash

## chkconfig: - 30 21

## description: http service.

## Source Function Library

#. /etc/init.d/functions

## Nginx Settings

#

#NGINX_SBIN="/usr/local/nginx/sbin/nginx"

#NGINX_CONF="/usr/local/nginx/conf/nginx.conf"

#NGINX_PID="/usr/local/nginx/logs/nginx.pid"

#RETVAL=0

#prog="Nginx"

#

#start() {

#        echo -n \$"Starting \$prog: "

#        mkdir -p /dev/shm/nginx_temp

#        daemon \$NGINX_SBIN -c \$NGINX_CONF

#        RETVAL=\$?

#        echo

#        return \$RETVAL

#}

#

#stop() {

#        echo -n \$"Stopping \$prog: "

#        killproc -p \$NGINX_PID \$NGINX_SBIN -TERM

#        rm -rf /dev/shm/nginx_temp

#        RETVAL=\$?

#        echo

#        return \$RETVAL

#}

#

#reload(){

#        echo -n \$"Reloading \$prog: "

#        killproc -p \$NGINX_PID \$NGINX_SBIN -HUP

#        RETVAL=\$?

#        echo

#        return \$RETVAL

#}

#

#restart(){

#        stop

#        start

#}

#

#configtest(){

#    \$NGINX_SBIN -c \$NGINX_CONF -t

#    return 0

#}

#

#case "\$1" in

#  start)

#        start

#        ;;

#  stop)

#        stop

#        ;;

#  reload)

#        reload

#        ;;

#  restart)

#        restart

#        ;;

#  configtest)

#        configtest

#        ;;

#  *)

#        echo $"Usage: \$0 {start|stop|reload|restart|configtest}"

#        RETVAL=1

#esac

#

#exit \$RETVAL

#EOF

#赋予脚本可执行权限

#chmod 755 /etc/init.d/nginx

#将nginx加入到开机启动

systemctl enable nginx.service

#备份nginx主配置文件

\cp /usr/local/nginx/conf/nginx.conf{,.bak}

#重新nginx 配置:

cat << EOF > /usr/local/nginx/conf/nginx.conf

user nginx nginx;

error_log /var/log/nginx_error.log crit;

pid /usr/local/nginx/logs/nginx.pid;

worker_processes  auto;

worker_rlimit_nofile 65535;

events {

use epoll;

worker_connections  65535;

}

http {

include      mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

server_tokens off;

charset utf-8;

tcp_nopush on;

tcp_nodelay on;

gzip on;

gzip_min_length 100;

gzip_buffers 4 16k;

gzip_http_version 1.0;

gzip_comp_level 6;

gzip_types text/plain application/x-javascript text/css application/xml;

gzip_vary on;

server {

listen      80;

server_name  localhost;

location / {

root  html;

index  index.html index.htm index.php;

}

error_page  500 502 503 504  /50x.html;

location = /50x.html {

root  html;

}

location ~ \.php\$ {

root          html;

fastcgi_pass  127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;

include        fastcgi_params;

}

}

}

EOF

#创建PHP测试文件:

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

#备份index.html:

mv /usr/local/nginx/html/index.html{,.bak}

#启动nginx:

#service nginx start

systemctl start nginx.service

#将nginx 写入随机启动:

#chkconfig --add nginx && chkconfig nginx on

#开启防火墙的80端口

#iptables -I INPUT -p tcp --dport 80 -j ACCEPT

#清空防火墙配置

iptables -F

#重启防火墙:

#systemctl restart firewalld.service

#设置nginx、mysql 及php 的环境变量:

echo "PATH=$PATH:/usr/local/php/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/php/sbin" >> /etc/profile

#刷新环境变量配置,使其立即生效:

source /etc/profile

#执行完成后,删除开机启动执行该脚本

if  [ `echo $?` -eq 0 ]; then

sed -i 'php_nginx.sh'd /etc/rc.d/rc.local

else

exit

fi

###########################添加开机启动执行脚本#################################

echo "sh /script/php_nginx.sh" >> /etc/rc.d/rc.local



本文转自 IT_外卖小哥  51CTO博客,原文链接:http://blog.51cto.com/jinlong/1951656

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
tengine 应用服务中间件 Linux
Tengine、Nginx安装PHP命令教程
要在阿里云Linux上安装PHP,请先更新YUM源并启用PHP 8.0仓库,然后安装PHP及相关扩展。通过`php -v`命令验证安装成功后,需修改Nginx配置文件以支持PHP,并重启服务。最后,创建`phpinfo.php`文件测试安装是否成功。对于CentOS系统,还需安装EPEL源和Remi仓库,其余步骤类似。完成上述操作后,可通过浏览器访问`http://IP地址/phpinfo.php`测试安装结果。
|
3月前
|
缓存 监控 算法
分析慢日志文件来优化 PHP 脚本的性能
分析慢日志文件来优化 PHP 脚本的性能
|
4月前
|
应用服务中间件 Linux PHP
Linux搭建tengine2.0<Nginx>+php7环境
本文介绍了在Linux系统上搭建Tengine 2.0(一个Nginx的增强版本)和PHP 7环境的详细步骤,包括创建安装目录、下载源码包及依赖库、编译安装Nginx、配置Nginx、安装PHP及其依赖、设置PHP-FPM、配置环境变量、安装Git和Composer,以及服务管理和日志查看等。
102 0
|
4月前
|
Ubuntu 应用服务中间件 Linux
如何在Ubuntu 14.04上使用Nginx和Php-fpm安全地托管多个网站
如何在Ubuntu 14.04上使用Nginx和Php-fpm安全地托管多个网站
32 0
|
5月前
|
运维 中间件 PHP
深入理解PHP中的中间件模式自动化运维之脚本编程实践##
【7月更文挑战第31天】在PHP开发中,中间件模式是一种强大的设计模式,它允许开发者在请求处理流程中注入自定义的处理逻辑。本文将通过实际代码示例来探讨如何在PHP项目中实现和使用中间件,以及这种模式如何提升应用程序的可维护性和扩展性。 【7月更文挑战第31天】 在现代IT运维管理中,自动化不再是可选项,而是提高生产效率、确保服务质量的必需品。本文将通过Python脚本编程的角度,探讨如何利用代码简化日常运维任务,提升工作效率。我们将从实际案例出发,逐步剖析自动化脚本的设计思路、实现过程及其带来的益处。 ##
35 0
|
6月前
|
NoSQL 关系型数据库 MySQL
linux服务器重启php,nginx,redis,mysql命令
linux服务器重启php,nginx,redis,mysql命令
134 1
|
6月前
|
Ubuntu 应用服务中间件 Linux
Linux Centos7 ubuntu 安装nginx,脚本一键安装nginx
Linux Centos7 ubuntu 安装nginx,脚本一键安装nginx
151 2
|
6月前
|
Ubuntu 关系型数据库 MySQL
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
93 0
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
|
7月前
|
应用服务中间件 PHP nginx
php如何实现检测nginx配置的正确性
请确保在执行此操作时,PHP有足够的权限来执行Nginx命令和访问Nginx配置文件。另外,将上述代码嵌入到您的应用程序中时,要注意安全性,以防止潜在的命令注入攻击。
133 3
|
6月前
|
应用服务中间件 nginx Windows
windows系统bat批处理 管理nginx启动 nginx脚本管理bat脚本管理生命周期windows一键nginx启动
windows系统bat批处理 管理nginx启动 nginx脚本管理bat脚本管理生命周期windows一键nginx启动
140 0