Linux服务器下LNMP安装与配置方法

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

Linux服务器下LNMP安装与配置方法

一、准备

1.准备php函数的rpm包

准备php函数的rpm包

2.准备lnmp其他的源代码包

准备lnmp其他的源代码包

3.安装php-5.2.14源代码包所需要的函数支持包

复制代码 代码如下:

安装php-5.2.14源代码包所需要的函数支持包

(libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换)

复制代码 代码如下:

(libmcrypt是加密算法扩展库。支持DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+等算法。)

复制代码 代码如下:

如果以上有错误,请按以下方法:

打开/etc/ld.so.conf,在文件之后,添加一行:

然后,执行 ldconfig ,重新编译即可。

二、安装MySQL

1. 编译安装MySQL 5.5.3-m3

复制代码 代码如下:

编译安装MySQL 5.5.3-m3

三、安装PHP

1. 编译安装PHP(FastCGI模式。使用fastCGI管理php,加快php解析速度)

复制代码 代码如下:

编译安装PHP

2.准备编译安装PHP5扩展模块

复制代码 代码如下:

准备编译安装PHP5扩展模块

3. 修改php.ini文件,让php模块生效

复制代码 代码如下:

修改php.ini文件,让php模块生效

4.在php.ini中配置eAccelerator加速PHP

复制代码 代码如下:

在php.ini中配置eAccelerator加速PHP

5.准备php-cgi和nginx进程执行者用户

准备php-cgi和nginx进程执行者用户

6. 创建php-fpm配置文件- php-fpm.conf

创建php-fpm配置文件- php-fpm.conf

7. 启动php-cgi(fastcgi)进程

监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为nginx:

复制代码 代码如下:

启动php-cgi(fastcgi)进程

四、安装Nginx

1. 安装Nginx所需的pcre库

复制代码 代码如下:

安装Nginx所需的pcre库

2. 安装Nginx

复制代码 代码如下:

安装Nginx

3. 修改Nginx配置文件

复制代码 代码如下:

修改Nginx配置文件

4. 在/usr/local/nginx/conf/目录中创建fastcgi_params文件

复制代码 代码如下:

在/usr/local/nginx/conf/目录中创建fastcgi_params文件

#建议把fastcgi_param写到nginx.conf中而不是把它写到fastcgi_params配置文件中,否则配置不够灵活,比如后面默认php设置和alias php设置中,他们的php页面的系统地址是不同的,比如:

默认php文件->/usr/local/nginx/html/index.php

Alias php文件->/mnt/bbs/index.php

这个时候你会发现fastcgi_params中的SCRIPT_FILENAME的值是相同的,这样会导致alias php的页面出不来,而配置在nginx.conf中各自配置各自的php系统地址,这样比较灵活.

#如果你觉得每个连接php的配置中都要加这一句话有点冗余,那就把它加入到fastcgi_params文件中,这样只需要加一次,其他所有的nginx.conf中的有关连接fastcgi的一块就不用加fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name这一句话了.

5.配置开机启动nginx,php-fpm,ulimit

1)nginx

Vi /etc/rc.local

/usr/local/nginx/sbin/nginx

2)php-fpm

Vi /etc/rc.local

/usr/local/php/sbin/php-fpm start

3)ulimit

Vi /etc/profile

ulimit -SHn 65535

4)mysql

Vi /etc/rc.local

/usr/local/mysql/bin/mysqld_safe --user=mysql &

6.检查nginx配置文件语句错误

检查nginx配置文件语句错误

7.平滑重启nginx进程

1)Pkill -HUP nginx

2)kill -HUP `pgrep -uroot nginx`

Pgrep -uroot nginx 取出nginx主进程PID

3)/usr/local/nginx/sbin/nginx -s reload

8. 编写每天定时切割Nginx日志的脚本

8.1创建脚本/usr/local/nginx/sbin/cut_nginx_log.sh

vi /usr/local/nginx/sbin/cut_nginx_log.sh

8.2设置crontab,每天凌晨00:00切割nginx访问日志

9.配置nginx虚拟主机

Sina和sohu域名事先解析

复制代码 代码如下:

最后在客户端测试虚拟主机www.baidu.com和www.sina.com两家公司网站

10.列表页显示

11.虚拟目录设置

#这样配置html静态文件是可以出来的,但是php动态页面出不来,而且会浏览器的页面上会显示" No input file specified. "的报错,其实是php系统文件地址( SCRIPT_FILENAME)找不到,也就是说fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;中的$document_root$fastcgi_script_name不是真正的/mnt/bbs/index.php的地址,这可怎么解决:

#后面两行是关于日志的,就是为了更好的观察由nginx提交给fastcgi的php的系统地址SCRIPT_FILENAME,在这里我用$request_filename来给SCRIPT_FILENAME赋值,在日志中的结果为/mnt/bbs/index.php,在这里我发现一个问题就是$request_filename中的root设置为/mnt,否则$request_filename的值为:/mnt/bbs/bbs/index.php.

由以上可以得到一个结论,就是默认php设置也可以这样设置关于

#此时从日志中可以看到,$request_filename的值为/usr/local/nginx/html/index.php,而以前默认的/scripts$fastcgi_script_name显然是错的php系统地址,日志中显示为/scripts/index.php

12.nginx状态监控

#客户端访问网址:http://www.baidu.com/nginxstatus

13.rewrite正则过滤

Rewrite指令最后一项参数为flag标记,支持的flag标记如下:

  • Last 标示完成rewrite规则
  • Break 不再匹配后面的规则
  • Redirect 302临时重定向
  • Permanent 301永久重定向

Last和break用来实现uri重写,浏览器地址栏的url地址不变,但在服务器访问的路径发生了变化,redirect和permanent用来实现url跳转,浏览器地址栏会显示跳转后的url地址,使用alias指令时必须使用last标记,使用proxy_pass指令时要使用break标记,last标记在本条rewrite规则执行完毕后,会对其所在的server{}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配,不再匹配后面的规则.

在匹配的过程中,nginx将首先匹配字符串,然后再匹配正则表达式,匹配到第一个正则表达式后,会停止搜索,如果匹配到正则表达式,则使用正则表达式的搜索结果,如果没有匹配到正则表达式,则使用字符串的搜索结果.

可以使用前缀"^~"来禁止匹配到字符串后,再去检查正则表达式,匹配到url后,将停止查询.

使用前缀"="可以进行精确的url匹配,如果找到匹配的uri,则停止查询,例如"location=/",只能匹配到"/",而"/test.html"则不能被匹配.

正则表达式的匹配,按照它们在配置文件中的顺序进行,写在前面的优先.

请求处理匹配结果示例:

例1:域名跳转

输入www.sina.com,跳转到www.sohu.com

例2:静态index.html跳转到动态index.php文件

在客户端输入:http://www.sina.com/index2.html

会跳转到index.php,把2当变量传入index.php程序

14.代理负载均衡技术(反向代理)

模块设置

1.模块设置

Error_log

#错误日志

Include

#包含子配置文件,0.6版本以后子配置文件放在nginx.conf所在的路径下

Pid

#主进程id号

User

#nginx nginx表明nginx进程的执行者和组

Worker_processes

#与cpu个数相同,4核cpu为4

Worker_rlimit_nofile 65535

#打开的文件描述符,不过提前得设置ulimit -SHn 65535,即linux允许的打开文件个数

Worker_connectiones 65535

#客户端最大连接数65535

Alias

#虚拟目录

Error_page

#404,500错误跳转页面

Index

#index index.html,设置默认首页

Keepalive_timeout

#即tcp持续连接超时时间

Limit_rate

#limit _rate 100k,即限速为100KB/s

Limit_rate_after

#limit_rate_after 1m,即下载文件超过1m,则进入limit_rate限速阶段

Listen

#listen 192.168.100.1:80,即设置ip和端口

Location

#该指令允许对不同的uri进行不同的配置,可以是字符串、正则表达式

Resolver

#resolver 8.8.8.8,为nginx设置dns域名指向

Root

#设置网站根目录

Send_timeout

#超时时间是指进行了两次tcp握手,还没有转为established状态的时间,如果超过这个时间,客户没有响应,nginx则关闭连接,可以用来防止ddos攻击

Sendfile

#启用或禁用sendfile()函数,作用于拷贝两个文件描述符之间的操作函数,这个拷贝是在内核中操作的,比read和write拷贝高效得多

Server

#普通web配置或虚拟主机的配置的区域

Server_name

#根据客户端请求header头信息中的host域名,来匹配该请求应该由哪个虚拟主机配置或服务器的ip

Tcp_nodelay

#封装tcp/ip数据包的等待时间,也叫纳格算法,在keepalive开启才有用

Tcp_nopush

#要求sendfile开启的时候才起作用,设置该选择的原因是nginx在linux上,试图在一个包中发送它的httpd应答头

Allow

#allow 192.168.100.254,只允许192.168.100.254访问

Deny

#deny all,拒绝其他任何人访问

Autoindex

#autoindex on,即开启列表页功能

Charset

#charset utf8;source_charset gbk,把服务器上的gbk网页编码转换成utf8输出给客户端

Fastcgi_pass

#fastcgi_pass 127.0.0.1:9000;

#fastcgi_index index.php;

#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

#include fastcgi_params;

#fastcgi_pass后跟的是php-cgi进程的ip和端口

Access_log

#正确日志

Proxy_pass

# proxy_pass http://myweb1,即后跟的是nginx代理负载池upstream中的服务器

Proxy_set_header

# proxy_set_header Host $host,设置把$host带给后端的nginx服务器

Proxy_temp_path

#用户指定一个本地目录缓冲较大的代理请求,类似于client_body_temp_path

Stub_status

# stub_status on,即开户状态监控

Image_filter

#它指定适用于图片的转换类型





作者:优良子弟
来源:51CTO
目录
相关文章
|
13天前
|
Ubuntu 网络协议 关系型数据库
超聚变服务器2288H V6使用 iBMC 安装 Ubuntu Server 24.04 LTS及后续系统配置
【11月更文挑战第15天】本文档详细介绍了如何使用iBMC在超聚变服务器2288H V6上安装Ubuntu Server 24.04 LTS,包括连接iBMC管理口、登录iBMC管理界面、配置RAID、安装系统以及后续系统配置等步骤。
|
21天前
|
缓存 资源调度 安全
深入探索Linux操作系统的心脏——内核配置与优化####
本文作为一篇技术性深度解析文章,旨在引领读者踏上一场揭秘Linux内核配置与优化的奇妙之旅。不同于传统的摘要概述,本文将以实战为导向,直接跳入核心内容,探讨如何通过精细调整内核参数来提升系统性能、增强安全性及实现资源高效利用。从基础概念到高级技巧,逐步揭示那些隐藏在命令行背后的强大功能,为系统管理员和高级用户打开一扇通往极致性能与定制化体验的大门。 --- ###
52 9
|
22天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
34 5
|
28天前
|
弹性计算 异构计算
2024年阿里云GPU服务器多少钱1小时?亲测价格查询方法
2024年阿里云GPU服务器每小时收费因实例规格不同而异。可通过阿里云GPU服务器页面选择“按量付费”查看具体价格。例如,NVIDIA A100的gn7e实例为34.742元/小时,NVIDIA A10的gn7i实例为12.710156元/小时。更多详情请访问阿里云官网。
79 2
|
1月前
|
人工智能 弹性计算 关系型数据库
学生免费领取阿里云服务器一年的方法,以及各种活动
学生可以免费领取阿里云服务器一年,新人可获2核4G,非新人2核2G。访问链接注册并完成学生认证,领取300元无门槛优惠券,购买轻量应用服务器。此外,还有多项活动可赢取实物奖品。
152 2
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
63 2
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
37 3
|
19天前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
111 0
|
25天前
|
关系型数据库 MySQL Linux
Linux-安装Mariadb
本文介绍了在 Alibaba Cloud Linux 系统上安装和配置 MariaDB 10.5 的步骤。包括下载安装、初始化数据库、启动服务、处理启动失败的常见问题(如权限问题),以及如何连接数据库、设置密码和允许外部连接。通过这些步骤,您可以顺利完成 MariaDB 的安装和基本配置。
38 0
|
弹性计算 运维 监控
ECS使用与Linux环境搭建
本文主要记录ECS使用中,安全组配置,Linux下生成环境搭建等。
ECS使用与Linux环境搭建