LAMP和LNMP环境搭建的艰辛历程

目录

操作系统:Ubuntu 20.10

1. LAMP环境的搭建

在图形管理化界面中依次打开系统设置、软件和更新。在下载自重选择其他站点,然后在中国的条目下选择mirrors.ustc.edu.cn。

Ubuntu换源可参考https://mirrors.ustc.edu.cn/help/ubuntu.html

更新资源包:sudo apt update

更新软件:sudo apt upgrade

清除不需要的软件:sudo apt autoremove

清除不需要的文件:sudo apt autoclean

1. Apache

接下来就可以进入正式搭建了

su root //方便之后更快的操作,切换root用户

apt install apache2

默认的配置文件:/etc/apache2/sites-enabled/000-default.conf

默认网站根目录:/var/www/html

安装完成之后检查apache是否开启:

service apache2 status // 查看apache是否开启

image-20210730172438646

service apache2 stop // 关闭apache服务

service apache2 start // 打开apache服务

service apache2 restart //重启apache服务

也可以查看80端口是否开启

image-20210730172703746

安装apache遇到的问题

安装过程中发现apache启动不了,使用

systemctl status apache2 查看apache服务的状态

image-20210730173206831

查阅资料和翻译英语得知是80端口被占用所以开启不了apache服务

netstat -ntulp|grep 80 // 查看80端口

image-20210730173427993

这我才发现是因为之前搭建靶场时docker容器占用了80端口,只要把容器停止就好了

image-20210730173713326

2. mysql

apt install mysql-server

mysql的配置文件: /etc/mysql/mysql.conf.d/mysqld.cnf

登录mysql的方法

  1. cat /etc/mysql/debian.cnf查看默认用户的密码

image-20210730174354524

mysql -u debian-sys-maint -p

image-20210730174449794

可以在authentication_string字段中为root添加密码:

update mysql.user set authentication_string='passwd' where user=’root’;

image-20210730174808005

image-20210730175027977

  1. 执行mysql_secure_installation命令

根据提示进行操作即可

3. PHP

apt install php7.4

image-20210730182358690

测试php是否安装成功

image-20210730182527561

安装php组件:

apt install apt install php-curlphp.cgi php-json

php-curl:curl是一个库,能让你通过URL和许多不同种的服务器进行勾搭、搭讪和深入交流,并且还支持许多协议。并且人家还说了curl可以支持https认证、http post、ftp上传、代理、cookies、简单口令认证等等功能啦。

php.cgi: cgi是 (common gateway interface)通用网关接口 .php-cgi是php提供给web serve也就是http前端服务器的cgi协议接口程序,当每次接到http前端服务器的请求都会开启一个php-cgi进程进行处理。

php-json: json 序列化相关操作

安装php扩展:

apt install php-pear libapache2-mod-php php-mysql

php-pear: Pear 是“PHP Extension and Application Repository”的缩写,即PHP扩展和应用仓库。Pear 将PHP程序开发过程中常用的功能编写成类库,涵盖了页面呈现、数据库访问、文件操作、数据结构、缓存操作、网络协议、WebService 等许多方面,用户可以通过下载这些类库并适当的作一些定制以实现自己需要的功能。避免重复发明“车轮”。Pear 的出现大大提高了PHP 程序的开发效率和开发质量。

libapache2-mod-php:我猜测应该是对apache php解析的一个增强

php-mysql: 关于php对数据库操作的函数

image-20210730190357602

2. Lnmp环境的搭建

1. nginx

停止apache服务 service apache2 stop

安装nginx apt install nginx

image-20210730230840603

2. PHP

apt install php7.4-fpm

vim /etc/nginx/sites-available/default

在56行做如下修改

image-20210730231157601

service nginx restart // 重启服务即可

image-20210730231448845

或者还可以这样

image-20210730231007177

然后这样

vim /etc/php/7.4/fpm/pool.d/www.conf

在37行加入下面这句话

image-20210730231620847

service php7.4-fpm restart //重启服务即可

image-20210730231747532

3. 配置PHP环境中出现的一些问题

PHP运行目前为止主要的三种方式:

  1. 以模块加载的方式运行——将PHP集成到Apache服务器,以同一个进程运行。
  2. 以CGI的方式运行——Apache在遇到PHP脚本的时候会将PHP程序提交给CGI应用程序(php-cgi.exe)解释,解释之后的结果返回给Apache,最后再返回给相应的请求用户。
  3. 以FastCGI的方式运行——CGI的加强版本,CGI是单进程,多线程的运行方式,程序执行完成之后就会销毁,所以每次都需要加载配置和环境变量fork-and-execute(创建-执行)。而FastCGI则不同,FastCGI像是一个常驻 (long-live) 型的CGI,只要激活后,在web服务器启动时就开启了一个进程,它可以一直执行着,不会每次都要花费时间去fork一个进程(CGI最为人诟病的fork-and-execute模式)。

1. CGI

CGI(Common Gateway Interface)公共网关接口是HTTP服务器与机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。

工作原理:CGI程序根据请求提交的参数作相应处理,然后输出标准的html语句返回给web server,web server再返回给客户端。

简单的说:cgi就是专门用来和web 服务器打交道的。web服务器收到用户请求,就会把请求提交给cgi程序(php的fastcgi),cgi程序根据请求提交的参数作应处理(解析php),然后输出标准的html语句返回给web服服务器,再返回给客户端,这就是普通cgi的工作原理。

2. FastCGI

FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。它还支持分布式的运算, 即 FastCGI 程序可以在网站服务器以外的主机上执行并且接受来自其它网站服务器来的请求。

传统的cgi协议在每次连接请求时,会开启一个进程进行处理,处理完毕会关闭该进程,因此下次连接,又要再次开启一个进程进行处理,因此有多少个连接就有多少个cgi进程,这也就是为什么传统的cgi会显得缓慢的原因,因此过多的进程会消耗资源和内存。而fast-cgi则是一个进程可以处理多个请求(这里的意思不是说一个进程可以同时处理多个请求,二十因为fastcgi是常驻cgi,不需要花费时间去fork进程),和上面的cgi协议完全不一样,cgi是一个进程只能处理一个请求,这样就会导致大量的cgi程序,因此会给服务器带来负担。

FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、Fail- Over特性等等。

工作原理

  1. Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)
  2. FastCGI进程管理器自身初始化,启动多个CGI解释器进程(在任务管理器中可见多个php-cgi.exe)并等待来自WebServer的连接,FastCGI使用tcp方式通信。
  3. 当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。WebServer将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
  4. FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回WebServer。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行WebServer中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

3. php-cgi

php-cgi是php提供给web serve也就是http前端服务器的cgi协议接口程序,当每次接到http前端服务器的请求都会开启一个php-cgi进程进行处理,而且开启的php-cgi的过程中会先要重载配置,数据结构以及初始化运行环境,如果更新了php配置,那么就需要重启php-cgi才能生效,这也是php-cgi的不足之处。

这里需要注意的是:php-cgi不是php脚本的解析器,它是cgi协议的解析器,然后通过调用php的php_execute_script函数来解析和运行php脚本。

img

3. php-fpm

php-fpm是php提供给web serve也就是http前端服务器的fastcgi协议接口程序,它不会像php-cgi一样每次连接都会重新开启一个进程,处理完请求又关闭这个进程,而是允许一个进程对多个连接进行处理,而不会立即关闭这个进程,而是会接着处理下一个连接。它可以说是php-cgi的一个管理程序,是对php-cgi的改进。

换句话说:php-fpm其实是升级版的php-cgi,但是最后处理的单元仍然是一个php-cgi程序,php-fpm可以更好的去调度资源来实现fastcgi协议。

img

重点PS:在刚才配置lnmp过程中,我们安装了php-fpm包,在配置lamp过程中并没有安装,这是为什么呢?

答:apache使用的是一种名为mod_php模式去解析php的,即mod_php 模式是将php模块安装到apache中,apache每接收一个请求,都会产生一个进程来连接php-cgi来完成请求,可想而知,如果一旦用户过多,并发数过多,服务器就会承受不住了。

而Nginx只负责反向代理/请求转发,不负责管理php-cgi进程,所以Nginx一般配合能够自行管理工作进程(子进程)的php-fpm使用。Nginx不能像Apache那样直接执行外部可执行程序,但Nginx可以作为代理服务器,将请求转发给后端服务器,这也是Nginx的主要作用之一。

4. Spawn-FCGI

Spawn-FCGI是一个通用的FastCGI管理服务器,它是lighttpd中的一部份,很多人都用Lighttpd的Spawn-FCGI进行FastCGI模式下的管理工作,不过有不少缺点。Spawn-FCGI目前已经独成为一个项目,更加稳定一些,也给很多Web 站点的配置带来便利。已经有不少站点将它与nginx搭配来解决动态网页。

总结

  1. CGI和FastCGI严格意义上来说是协议,CGI进程和FastCGI进程就是具有该协议特性的进程。
  2. php-cgi和php-fpm都是协议接口程序,用来管理采用不同协议的php-cgi程序,前者管理cgi进程,后者管理fastcgi进程。
  3. spawn-fcgi和php-fpm作用相同,都是fastcgi进程管理器。

原文地址:https://www.cnblogs.com/seizer/p/15086564.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


本篇内容介绍了“LNMP服务器环境配置实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情...
本篇内容主要讲解“OneinStack如何一键安装LNMP”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“OneinStack如何...
小编给大家分享一下如何解决LNMP安装composer install时出现Warning: putenv()问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅...
1.源码安装mysql鉴于前边的文章已经详细说过mysql的源码安装可以点击基于LAMP的Discuz论坛的实现(源码安装)自行查看这里为了节省时间用一个shell脚本进行mysql的源码安装用到的mysql依然是5.6.46没有源码包的同学可以点击【mysql-5.6.46.tar.gz提取码:nli5】进行下载
Linux是非常热门的技术,也是当下非常受欢迎的操作系统,具有独特的优势所在,广受大家的喜欢和追捧,今天为大家分享一下几款常用的Linux系统面板,希望对你有所帮助。1、宝塔面板:是一款使用方便、功能强大而且终身免费的服务器管理软件,支持Linux以及Windows系统,一键配置LAMP/LNMP
██【電:131.乀.1418.乀.6667】【薇q:9788.乀.9181】██柬埔寨东方明珠开户目录LAMP1.安装Mariadb2.安装PHP3.测试php和apache的协同4.修改MariaDB数据库配置5.测试数据库连接LNMP(未完待续)LAMP1.安装Mariadb在RaspberryPi中,MySQL无法安装,会自动建议安装Maria
关闭防火墙安装依赖包上传源码包解压源码包,安装nginx启动nginx安装mysql和PHP相关服务修改nginx配置文件,nginx和PHP进行整合重新加载nginx服务启动php-fpm书写PHP测试页测试网页 
一.lnmp的搭建1.准备一台纯净版的虚拟机2.下载Lnmp一键安装包命令:wget http://soft.vpser.net/lnmp/lnmp1.5-full.tar.gz【安装完整版的-推荐1.5版本】也可以本地下载好,通过rz上传:http://soft.vpser.net/lnmp/lnmp1.5-full.tar.gz3.开始安装命令:cdlnmp1.5-full 
1.LNMP理论fastcgi的主要优点:把动态语言和http服务器分离开来,使nginx可以处理静态请求和向后转发动态请求,而php/php-fpm服务器转移解析PHP动态请求使用fastcgi的原因:Nginx不支持对外部动态程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。
keepalived高可用keepalived注意:任何软件都可以使用keepalived来做高可用keepalived如何实现高可用VRRP:虚拟路由冗余协议比如公司的网络是通过网关进行上网的,那么如果该路由器故障了,网关无法转发报文了,此时所有人都无法上网了,怎么办?通常做法是给路由器增加一台备节点,但是问
通过阿里云的服务器搭建lnmp架构以及部署wordpress个人博客,连接上域名所遇到的问题及解决办法注释:操作系统centos7.9第一步:购买阿里云ecs服务器,选择系统及其他硬件,下面是我自己购买的配置,可以参考(注意操作系统我购买的时候选错了,后来换成了centos7.9)然后在阿里云“云服
文章目录1.首先了解编译安装和yum安装的区别。2.yum安装准备工作---切换阿里云yum源3.编译安装lnmp**很不建议使用编译安装,麻烦且容易报错。**4.yum安装lnmp**可以先执行一下yumupdate**5.lnmp一键安装[参考网站](https://lnmp.org/)**不喜欢这种方式,所以没测试
电影院系统解压登录mysql创建电影院系统使用的数据库授权账户skyuc访问数据库讲系统部署到www.benet.com网站根目录下mv/usr/src/SKYUC.v3.4.2.SOURCE/wwwroot/*/var/www/benetcom/设置网站根目录所有者和权限客户机测试论坛系统部署解压复制文件到网站根目
下载:​ https://www.php.net/downloads​ https://www.php.net/distributions/php-8.0.6.tar.gz编译安装php:①安装依赖:yum-yinstalllibxml2-develsqlite-develbzip2-devellibcurl-devellibpng-devellibjpeg-develfreetype-devellibicu-develoniguruma-devellibxs
树莓派LNMP关键词:raspberrywebphpdnsmysq1LNMP、LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写,分别指Linux、Nginx/Apache、MySQL和PHP。这里演示如何在树莓派上搭建LNMP环境并配置多个站点。主要内容:树莓派安装nginx树莓派安装ph
官网:http://kodcloud.com/1、准备MySQL数据库 [root@cent8_yzl_20~]#yuminstall-ymysql-server[root@cent8_yzl_20~]#systemctlenable--nowmysqld[root@cent8_yzl_20~]#mysqlmysql>createdatabasekodbox;mysql>createuserkodbox@'10.0.0.
环境应用IP操作系统nginx192.168.122.131centos8mysql192.168.122.132centos8php192.168.122.133centos8准备工作//关闭防火墙#systemctldisable--nowfirewalld#setenforce0#vim/etc/selinux/configSELINUX=disabled安装nginx//安装依
1.购买vps或者外国云主机2.搭建ss服务端3.客户端配置服务端信息,即可。不废话,开始教程:ss-panel-v3简介ss-panel是一套功能齐全的shadowsocks用户管理面板,它可以实现用户注册、用户管理、流量控制、签到、添加多节点、充值购买、邀请返利等诸多功能,是目前网络上使用最广泛的一
LNMP架构数据迁移至NFS第一步:先将原有目录中数据移出数据存储到本地什么位置,获取方法1.通过网站页面右键点击,获取资源地址信息2.find命令利用-mmin53.利用inotify服务监控目录数据变化[root@web01wp-content]#cd/applicationginx/html/blog/wp-content/uploads[root@we
一 点睛业务上线之前最关键的一项任务便是环境部署,往往一个业务涉及多种应用环境,比如Web、DB、PROXY、CACHE等,本示例通过env.roledefs定义不同主机角色,再使用“@roles('webservers')”修饰符绑定到对应的任务函数,实现不同角色主机的部署差异。二 代码#coding=utf-8#!/usr