LAMP架构
2020-07-16 06:03
751 查看
文章目录
1. 概述
什么是LAMP?
- 所谓的lamp,是由
Linux、Apache、MySQL/MariaDB、PHP/Perl/Python
组成的一个动态网站或者服务器的开源软件 - 除Linux外其它各部件本身都是各自独立的程序,可以安装在不同服务器之上,但是因为经常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
各服务提供什么功能?
- Apache 处理http的请求、构建响应报文等自身服务
- 配置让Apache支持PHP程序的响应(通过PHP模块或FPM)
- 配置Apache具体处理php程序的方法,如通过反向代理将php程序交给fcgi处理
-
提供apache的访问接口,即CGI或Fast CGI
-
提供PHP程序对数据的存储
2. web服务器工作流程
如上图所示:
- 用户在浏览器上访问资源,浏览器通过http协议向web服务器发送访问请求
- 如果访问的是静态资源,则会在本地磁盘或本地缓存中找到资源然后返还给浏览器
- 如果访问的是动态资源,web服务器则会通过FastCGI协议向php服务器发送请求
- php服务器会通过FastCGI master进程,让多个FastCGI worker进程处理请求,然后将处理后的输出返还给web服务器,最后由web服务器返还给浏览器
- 如果web服务器请求的资源,需要查询数据库,则php服务器上的php程序通过mysql协议连接数据库,并查询资源,php服务器将查询到的资源返还给web服务器,最后web服务器将资源返还给浏览器
什么是静态资源,什么是动态资源?
- 静态资源就是指静态内容,客户端从服务器获得的资源的表现形式与原文件相同。可以简单的理解为就是直接存储于文件系统中的资源
- 动态资源通常是程序文件,不是将程序文件直接返还给客户端,而是需要将程序执行后输出的结果返还给客户端,输出的结果就是动态资源
cgi与fastcgi是什么?
- CGI(Common Gateway Interface)通用网关接口 是一种让web服务器与应用程序进行通信的协议,用来规范web服务器传输到php解释器中的数据类型以及数据格式
- CGI可以用任何一种具有标准输入、输出和环境变量的语言编写,如php、perl、python等,不同类型语言写的程序只要符合cgi标准,就能作为一个cgi程序与web服务器交互
-
通用网关接口(CGI)的增强版本,主要用来提高CGI程序性能,类似于CGI,FastCGI也是一种让交互程序与Web服务器通信的协议
httpd与php结合的方式:
- modules:php将以httpd的扩展模块形式存在,需要加载动态资源时,httpd可以直接通过php模块来加工资源并返回给客户端 httpd prefork:libphp5.so(多进程模型的php)
- httpd event or worker:libphp5-zts.so(线程模型的php)
3. LAMP平台搭建实例
环境:
系统 | 主机名 | IP | 服务 |
---|---|---|---|
CentOS 7 | node1 | 192.168.207.129 | httpd2.4、mysql5.7、php7.4 |
3.1 安装httpd
配置yum源
下载wget: [root@node1 ~]# rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/wget-1.14-18.el7_6.1.x86_64.rpm 下载163的源: [root@node1 ~]# mv /etc/yum.repos.d/* /opt [root@node1 ~]# wget -O /etc/yum.repos.d/CentOS7-Base-163.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo [root@node1 ~]# ls /etc/yum.repos.d/ CentOS7-Base-163.repo 配置源: [root@node1 ~]# sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-163.repo [root@node1 ~]# sed -i 's/^enabled=.*/enabled=1/g' /etc/yum.repos.d/CentOS7-Base-163.repo 安装epel源: [root@node1 ~]# yum -y install epel-release vim
安装开发工具包
[root@node1 ~]# yum groups mark install 'Development Tools'
创建apache服务的用户和组
[root@node1 ~]# useradd -r -M -s /sbin/nologin apache [root@node1 ~]# id apache uid=997(apache) gid=995(apache) groups=995(apache)
安装依赖包
[root@node1 ~]# yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++
下载并解压apr和apr-util
[root@node1 ~]# wget http://mirror.bit.edu.cn/apache/apr/apr-1.7.0.tar.gz [root@node1 ~]# wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz [root@node1 ~]# tar xf apr-1.7.0.tar.gz [root@node1 ~]# tar xf apr-util-1.6.1.tar.gz [root@node1 ~]# ls apr-1.7.0 apr-util-1.6.1 apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz
安装apr
[root@node1 ~]# cd apr-1.7.0 [root@node1 apr-1.7.0]# vim configure ... cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" //将此行注释或者删除 ... [root@node1 apr-1.7.0]# ./configure --prefix=/usr/local/apr [root@node1 apr-1.7.0]# make && make install
安装apr-util
[root@node1 apr-1.7.0]# cd /root/apr-util-1.6.1 [root@node1 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@node1 apr-util-1.6.1]# make && make install
下载并编译安装httpd
[root@node1 ~]# wget https://mirror.bit.edu.cn/apache/httpd/httpd-2.4.43.tar.gz [root@node1 ~]# tar xf httpd-2.4.43.tar.gz [root@node1 ~]# cd httpd-2.4.43 [root@node1 httpd-2.4.43]# ./configure --prefix=/usr/local/apache \ --sysconfdir=/etc/httpd24 \ --enable-so \ --enable-ssl \ --enable-cgi \ --enable-rewrite \ --with-zlib \ --with-pcre \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util/ \ --enable-modules=most \ --enable-mpms-shared=all \ --with-mpm=prefork [root@node1 httpd-2.4.43]# make && make install
配置httpd
[root@node1 ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh [root@node1 ~]# source /etc/profile.d/httpd.sh [root@node1 ~]# ln -s /usr/local/apache/include /usr/include/httpd [root@node1 ~]# echo 'MANPATH /usr/local/apache/man' >> /etc/man_db.conf [root@node1 ~]# sed -i '/#ServerName/s/#//g' /etc/httpd24/httpd.conf
启动apache
[root@node1 ~]# apachectl start [root@node1 ~]# ss -antl |grep 80 LISTEN 0 128 :::80 :::*
3.2 安装mysql
安装依赖包
[root@node1 ~]# yum -y install ncurses-devel openssl-devel openssl cmake mariadb-devel
创建mysql用户和组
[root@node1 ~]# useradd -r -M -s /sbin/nologin -u 306 mysql [root@node1 ~]# id mysql uid=306(mysql) gid=306(mysql) groups=306(mysql)
下载mysql安装包
[root@node1 ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
解压至/usr/local目录中
[root@node1 ~]# tar xf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
创建软连接并配置文件属组
[root@node1 ~]# cd /usr/local/ [root@node1 local]# ln -s mysql-5.7.30-linux-glibc2.12-x86_64/ mysql [root@node1 local]# chown -R mysql.mysql mysql* [root@node1 local]# ll -d mysql lrwxrwxrwx. 1 mysql mysql 36 Jul 6 09:39 mysql -> mysql-5.7.30-linux-glibc2.12-x86_64/
配置环境变量
[root@node1 ~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@node1 ~]# source /etc/profile.d/mysql.sh
创建数据存放目录
[root@node1 ~]# mkdir /opt/data [root@node1 ~]# chown -R mysql.mysql /opt/data [root@node1 ~]# ll -d /opt/data drwxr-xr-x. 2 mysql mysql 6 Jul 6 09:43 /opt/data
初始化数据库
[root@node1 ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/data 2020-07-06T13:44:51.876666Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2020-07-06T13:44:52.265532Z 0 [Warning] InnoDB: New log files created, LSN=45790 2020-07-06T13:44:52.307992Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2020-07-06T13:44:52.370653Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: de47700e-bf8e-11ea-be6e-000c2997c366. 2020-07-06T13:44:52.371432Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2020-07-06T13:44:53.460356Z 0 [Warning] CA certificate ca.pem is self signed. 2020-07-06T13:44:53.590140Z 1 [Note] A temporary password is generated for root@localhost: P*3rieAe%#G3 //记住这里的root用户登录的临时密码,这里是:P*3rieAe%#G3
配置mysql
[root@node1 ~]# ln -s /usr/local/mysql/include /usr/local/include/mysql [root@node1 ~]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf [root@node1 ~]# ldconfig
生成配置文件
[root@node1 ~]# cat > /etc/my.cnf <<EOF [mysqld] basedir = /usr/local/mysql datadir = /opt/data socket = /tmp/mysql.sock port = 3306 pid-file = /opt/data/mysql.pid user = mysql skip-name-resolve EOF
配置服务启动脚本
[root@node1 ~]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld [root@node1 ~]# sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /etc/init.d/mysqld [root@node1 ~]# sed -ri 's#^(datadir=).*#\1/opt/data#g' /etc/init.d/mysqld
启动mysql
[root@node1 ~]# chkconfig mysqld on //设置为开机自动启动 [root@node1 ~]# service mysqld start [root@node1 ~]# ss -antl |grep 3306 LISTEN 0 80 :::3306 :::*
修改密码
[root@node1 ~]# mysql --connect-expired-password -uroot -p'P*3rieAe%#G3' -e "set password = password('123')" [root@node1 ~]# mysql -uroot -p123 mysql> exit Bye
3.3 安装php
配置yum源
[root@node1 ~]# wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm [root@node1 ~]# rpm -Uvh remi-release-7.rpm [root@node1 ~]# yum clean all [root@node1 ~]# yum makecache --enablerepo=remi-php74
安装依赖包
[root@node1 ~]# yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel php74-php-mysqlnd
下载并安装php
[root@node1 ~]# wget https://www.php.net/distributions/php-7.4.7.tar.gz [root@node1 ~]# tar xf php-7.4.7.tar.gz [root@node1 ~]# cd php-7.4.7 [root@node1 ~]# ./configure --prefix=/usr/local/php7 \ --with-config-file-path=/etc \ --enable-fpm \ --enable-inline-optimization \ --disable-debug \ --disable-rpath \ --enable-shared \ --enable-soap \ --with-openssl \ --enable-bcmath \ --with-iconv \ --with-bz2 \ --enable-calendar \ --with-curl \ --enable-exif \ --enable-ftp \ --enable-gd \ --with-jpeg \ --with-png \ --with-zlib-dir \ --with-freetype \ --with-gettext \ --enable-json \ --enable-mbstring \ --enable-pdo \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-readline \ --enable-shmop \ --enable-simplexml \ --enable-sockets \ --enable-zip \ --enable-mysqlnd-compression-support \ --with-pear \ --enable-pcntl \ --enable-posix //这里如果报错需要安装两个依赖包,安装好后再次执行上面的命令 [root@node1 php-7.4.7]# yum -y install libsqlite3x-devel [root@node1 php-7.4.7]# yum -y install oniguruma-devel
编译并安装
//-j指定内核数,后面的命令取出内核数量,多核的执行此条命令编译速度比单核的要快 [root@node1 php-7.4.7]# make -j $(cat /proc/cpuinfo |grep processor|wc -l) [root@node1 php-7.4.7]# make install
配置环境变量
[root@node1 ~]# echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php7.sh [root@node1 ~]# source /etc/profile.d/php7.sh [root@node1 ~]# php -v PHP 7.4.7 (cli) (built: Jul 6 2020 10:33:25) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
配置php-fpm
[root@node1 ~]# cp php-7.4.7/php.ini-production /etc/php.ini [root@node1 ~]# cp php-7.4.7/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm [root@node1 ~]# chmod +x /etc/rc.d/init.d/php-fpm [root@node1 ~]# cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf [root@node1 ~]# cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf [root@node1 ~]# vim /usr/local/php7/etc/php-fpm.conf //添加以下四行 pm.max_children = 50 //最多同时提供50个进程提供50个并发服务 pm.start_servers = 5 //启动时启动5个进程 pm.min_spare_servers = 2 //最小空闲进程数 pm.max_spare_servers = 8 //最大空闲进程数
启动php-fpm
[root@node1 ~]# service php-fpm start Starting php-fpm done [root@node1 ~]# chkconfig php-fpm on [root@node1 ~]# ss -antl |grep 9000 LISTEN 0 128 127.0.0.1:9000 *:*
配置监听所有IP
[root@node1 ~]# vim /usr/local/php7/etc/php-fpm.d/www.conf ; '/path/to/unix/socket' - to listen on a unix socket. ; Note: This value is mandatory. listen = 127.0.0.1:9000 `//将这里的127.0.0.1改为0.0.0.0` [root@node1 ~]# service php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done [root@node1 ~]# ss -antl |grep 9000 LISTEN 0 128 *:9000 *:*
3.4 配置apache
启用代理模块
[root@node1 ~]# sed -i '/proxy_module/s/#//g' /etc/httpd24/httpd.conf [root@node1 ~]# sed -i '/proxy_fcgi_module/s/#//g' /etc/httpd24/httpd.conf
配置虚拟主机
[root@node1 ~]# cd /usr/local/apache/htdocs/ [root@node1 htdocs]# mkdir game.com [root@node1 htdocs]# chown -R apache.apache /usr/local/apache/htdocs/ //编辑主配置文件 [root@node1 ~]# vim /etc/httpd24/httpd.conf ... # probably should define those extensions to indicate media types: # AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php //添加此行 AddType application/x-httpd-php-source .phps //添加此行 .... //在最后添加以下内容 <VirtualHost *:80> DocumentRoot "/usr/local/apache/htdocs/game.com" ServerName game.com ProxyRequests Off //关闭正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache/htdocs/game.com/$1 <Directory "/usr/local/apache/htdocs/game.com"> Options none AllowOverride none Require all granted </Directory> </VirtualHost> [root@node1 ~]# sed -i '/ DirectoryIndex/s/index.html/index.php index.html/g' /etc/httpd24/httpd.conf
配置网站文件
[root@node1 ~]# cd game/zytd/WWW/ [root@node1 WWW]# ls class game game - 副本.php index.php js pay reguser.php css game.php images index - 副本.php npc pdo.php renwu [root@node1 WWW]# vim pdo.php <?php $sqlname='root'; //这里改为自己的数据库登录用户 $sqlpass='123'; //数据库登录密码 $dbhost='localhost'; //数据库登录IP $dbname='game'; //数据库名称 [root@node1 WWW]# mv * /usr/local/apache/htdocs/game.com/ [root@node1 WWW]# mysql -uroot -p123 mysql> create database game; mysql> use game; mysql> source /root/game/zytd/game.sql; mysql> exit Bye
重启apache和mysql服务
[root@node1 ~]# service mysqd restart [root@node1 ~]# apachectl stop [root@node1 ~]# apachectl start [root@node1 ~]# ss -antl |grep 80 LISTEN 0 80 :::3306 :::* LISTEN 0 128 :::80 :::*
3.5 访问验证
修改hosts文件,添加域名:
访问验证:
4. lamp自动安装脚本
执行脚本前需要下载install目录中的安装包
//查看脚本目录,lamp.sh是安装脚本,install目录是安装包存放目录 [root@node2 lamp]# ls install lamp.sh [root@node2 lamp]# ls install/ apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.43.tar.gz mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz php-7.4.7.tar.gz remi-release-7.rpm wget-1.14-18.el7_6.1.x86_64.rpm //查看安装脚本 [root@node2 lamp]# cat lamp.sh #!/bin/bash #定义apache安装路径 apache_install=/usr/local/apache #定义mysql安装路径 mysql_install=/usr/local #定义数据存放目录 datadir=/opt/data #定义数据登录密码 passwd=123 #定义php安装路径 php_install=/usr/local/php7 #定义虚拟主机目录 vh_dir=$apache_install/htdocs/game #关闭防火墙和selinux systemctl stop firewalld setenforce 0 #安装wget rpm -ivh install/wget-1.14-18.el7_6.1.x86_64.rpm &>/dev/null #配置yum源 mv /etc/yum.repos.d/* /opt wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo yum clean all &>/dev/null #安装epel源 echo '正在安装epel源和开发工具包...' yum -y install vim &>/dev/null wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo &>/dev/null #安装开发工具包 yum clean all &>/dev/null yum groups mark install 'Development Tools' &>/dev/null if [ $? -ne 0 ];then echo '安装失败' exit fi #创建apache服务的用户和组 id apache &>/dev/null if [ $? -ne 0 ];then useradd -r -M -s /sbin/nologin apache fi #安装依赖包 echo '正在安装依赖包...' yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ &>/dev/null #解压并安装apr和apr-util if [ ! -d /usr/local/apr ];then tar xf install/apr-1.7.0.tar.gz cd apr-1.7.0 sed -ri '/^(....\$RM."\$cfgfile")$/d' configure echo '正在编译安装apr...' ./configure --prefix=/usr/local/apr &>/dev/null make &>/dev/null make install &>/dev/null if [ $? -ne 0 ];then echo "apr安装失败" exit fi cd .. fi if [ ! -d /usr/local/apr-util ];then tar xf install/apr-util-1.6.1.tar.gz cd apr-util-1.6.1 echo '正在编译安装apr-util...' ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr &>/dev/null make &>/dev/null make install &>/dev/null if [ $? -ne 0 ];then echo "apr-util安装失败" exit fi cd .. fi #解压并安装httpd if [ ! -d $apache_install ];then tar xf install/httpd-2.4.43.tar.gz cd httpd-2.4.43 echo '正在编译安装httpd...' ./configure --prefix=${apache_install} \ --sysconfdir=/etc/httpd24 \ --enable-so \ --enable-ssl \ --enable-cgi \ --enable-rewrite \ --with-zlib \ --with-pcre \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util/ \ --enable-modules=most \ --enable-mpms-shared=all \ --with-mpm=prefork &>/dev/null make &>/dev/null make install &>/dev/null if [ $? -ne 0 ];then echo "apr-util安装失败" exit fi cd .. fi #配置httpd echo "export PATH=${apache_install}/bin:\$PATH" > /etc/profile.d/httpd.sh ln -s ${apache_install}/include/ /usr/include/httpd grep 'MANPATH /usr/local/apache/man' /etc/man_db.conf &>/dev/null if [ $? -ne 0 ];then echo 'MANPATH /usr/local/apache/man' >> /etc/man_db.conf fi sed -i '/#ServerName/s/#//g' /etc/httpd24/httpd.conf #启动apache ${apache_install}/bin/apachectl start &>/dev/null grep "${apache_install}/bin/apachectl start" /etc/rc.local if [ $? -ne 0 ];then echo "${apache_install}/bin/apachectl start" >> /etc/rc.local fi chmod +x /etc/rc.d/rc.local ss -antl |grep 80 &>/dev/null if [ $? -ne 0 ];then echo 'apache服务安装失败' exit else echo 'apache服务安装成功' fi #安装mysql依赖包 yum -y install ncurses-devel openssl-devel openssl cmake mariadb-devel &>/dev/null #创建mysql用户和组 id mysql &>/dev/null if [ $? -ne 0 ];then useradd -r -M -s /sbin/nologin -u 306 mysql fi #安装mysql echo '正在安装mysql...' if [ ! -d $mysql_install/mysql-5.7.30-linux-glibc2.12-x86_64 ];then mkdir -p $mysql_install tar xf install/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C $mysql_install fi #创建软连接,并设置属主和属组 ln -s $mysql_install/mysql-5.7.30-linux-glibc2.12-x86_64 $mysql_install/mysql chown -R mysql.mysql $mysql_install/mysql* #配置环境变量 echo "export PATH=${mysql_install}/mysql/bin:\$PATH" > /etc/profile.d/mysql.sh #配置数据存放目录 mkdir -p $datadir &>/dev/null chown -R mysql.mysql $datadir #初始化数据库 wc=$(ls $datadir |wc -l) if [ $wc -eq 0 ];then echo '正在初始化数据库...' $mysql_install/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=$datadir &>/dev/null fi #配置mysql ln -s $mysql_install/mysql/include/ $mysql_install/include/mysql echo "${mysql_install}/mysql/lib" > /etc/ld.so.conf.d/mysql.conf ldconfig #生成配置文件 cat > /etc/my.cnf <<EOF [mysqld] basedir = $mysql_install/mysql datadir = $datadir socket = /tmp/mysql.sock port = 3306 pid-file = $datadir/mysql.pid user = mysql skip-name-resolve EOF #配置服务启动脚本 \cp -a $mysql_install/mysql/support-files/mysql.server /etc/init.d/mysqld sed -ri "s#^(basedir=).*#\1${mysql_install}/mysql#g" /etc/init.d/mysqld sed -ri "s#^(datadir=).*#\1${datadir}#g" /etc/init.d/mysqld #启动mysql chkconfig mysqld on &>/dev/null service mysqld start &>/dev/null $mysql_install/mysql/bin/mysql -uroot -e "set password = password('$passwd')" &>/dev/null ss -antl |grep 3306 &>/dev/null if [ $? -ne 0 ];then echo 'mysql服务启动失败' exit else echo "数据库安装成功,登录密码为$passwd" fi #配置安装php依赖包的yum源 echo '开始安装php,正在配置yum源...' yum -y localinstall install/remi-release-7.rpm &>/dev/null yum clean all &>/dev/null yum makecache --enablerepo=remi-php74 &>/dev/null #安装依赖包 echo '正在安装依赖包...' yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel php74-php-mysqlnd &>/dev/null #编译并安装php if [ ! -d $php_install ];then echo '正在编译安装php...' tar xf install/php-7.4.7.tar.gz yum -y install libsqlite3x-devel oniguruma-devel &>/dev/null cd php-7.4.7 ./configure --prefix=/usr/local/php7 \ --with-config-file-path=/etc \ --enable-fpm \ --enable-inline-optimization \ --disable-debug \ --disable-rpath \ --enable-shared \ --enable-soap \ --with-openssl \ --enable-bcmath \ --with-iconv \ --with-bz2 \ --enable-calendar \ --with-curl \ --enable-exif \ --enable-ftp \ --enable-gd \ --with-jpeg \ --with-png \ --with-zlib-dir \ --with-freetype \ --with-gettext \ --enable-json \ --enable-mbstring \ --enable-pdo \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-readline \ --enable-shmop \ --enable-simplexml \ --enable-sockets \ --enable-zip \ --enable-mysqlnd-compression-support \ --with-pear \ --enable-pcntl \ --enable-posix &>/dev/null make -j $(cat /proc/cpuinfo |grep processor|wc -l) &>/dev/null make install &>/dev/null if [ $? -ne 0 ];then echo 'php安装失败' exit else echo 'php安装成功' fi cd .. fi echo "export PATH=${php_install}/bin:\$PATH" > /etc/profile.d/php7.sh #配置php-fpm \cp php-7.4.7/php.ini-production /etc/php.ini \cp php-7.4.7/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/rc.d/init.d/php-fpm \cp ${php_install}/etc/php-fpm.conf.default ${php_install}/etc/php-fpm.conf \cp ${php_install}/etc/php-fpm.d/www.conf.default ${php_install}/etc/php-fpm.d/www.conf grep 'pm.max_children = 50' ${php_install}/etc/php-fpm.conf &>/dev/null if [ $? -ne 0 ];then cat >> ${php_install}/etc/php-fpm.conf <<EOF pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8 EOF fi #启动php-fpm service php-fpm start &>/dev/null chkconfig php-fpm on &>/dev/null ss -antl |grep 9000 &>/dev/null if [ $? -ne 0 ];then echo 'php-fpm启动失败' fi #配置9000端口监听所有IP sed -i 's/listen = 127.0.0.1:9000/listen = 0.0.0.0:9000/' ${php_install}/etc/php-fpm.d/www.conf service php-fpm restart &>/dev/null #启动代理模块 sed -i '/proxy_module/s/#//g' /etc/httpd24/httpd.conf sed -i '/proxy_fcgi_module/s/#//g' /etc/httpd24/httpd.conf #配置虚拟主机 mkdir -p $vh_dir chown -R apache.apache $apache_install/htdocs cat > $vh_dir/index.php <<EOF <?php phpinfo(); ?> EOF grep "$vh_dir" /etc/httpd24/httpd.conf if [ $? -ne 0 ];then sed -ir '/ AddType application\/x-gzip .gz .tgz/a \ AddType application/x-httpd-php-source .phps' /etc/httpd24/httpd.conf sed -ir '/ AddType application\/x-gzip .gz .tgz/a \ AddType application/x-httpd-php .php' /etc/httpd24/httpd.conf sed -i '/ DirectoryIndex/s/index.html/index.php index.html/g' /etc/httpd24/httpd.conf cat >> /etc/httpd24/httpd.conf <<EOF <VirtualHost *:80> DocumentRoot "$vh_dir" ServerName game.com ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000$vh_dir/$1 <Directory "$vh_dir"> Options none AllowOverride none Require all granted </Directory> </VirtualHost> EOF fi #重启apache服务 /usr/local/apache/bin/apachectl restart &>/dev/null #判断服务是否启动成功 lamp_port=ss -antl |grep -E '80|3306|9000' |wc -l if [ $lamp_port -eq 3 ];then echo 'lamp架构搭建完成' else echo '服务启动失败' fi
相关文章推荐
- 企业Web常用架构LAMP-LNMP实战
- LAMP架构——我的工作心得
- linux下Yum搭建lamp网站架构
- Netlog的数据库及LAMP架构
- LAMP架构、MYSQL安装
- redhat下搭建LAMP架构
- LAMP网站架构方案分析
- LAMP环境--单层架构的安装和配置
- [转]Netlog 的数据库及 LAMP 架构
- Ubuntu16.04搭建LAMP架构服务器
- LAMP 系统性能调优,第 1 部分: 理解 LAMP 架构
- LAMP架构(LAMP介绍,mysql/mariaDB介绍,Mysql安装)
- LAMP架构和MySQL_MariaDB介绍及MySQL安装
- LAMP架构(apache安装,apache工作原理介绍)
- 设计高性能网站架构-LAMP
- [转]LAMP 系统性能调优,第 1 部分: 理解 LAMP 架构
- 百度贴吧10亿量级LAMP架构分享
- LAMP与LNMP架构的区别
- LAMP架构升级版--LNMMP-1
- 菜鸟学Linux之八:LAMP架构之Apache服务器的虚拟主机创建与部署