LNMP搭建

本文介绍了LNMP(Nginx+Linux+MySQL+PHP)和LAMP(Linux+Apache+MySQL+PHP)架构的特点,强调了Nginx在处理静态文件和作为反向代理服务器的优势。LNMP占用资源少,适合动态内容较少的场景,而LAMP则适合大型网站。文章详细阐述了LNMP的部署过程,包括依赖包安装、Nginx配置、PHP配置,并提到了在高流量场景下结合使用Apache和Nginx的可能性。

LNMP部署

Nginx 特性Nginx 性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。1、相比 Apache,用 Nginx 作为 Web 服务器:使用资源更少,支持更多并发连接,效率更高。2、作为负载均衡服务器:Nginx 既可在内部直接支持 Rails 和 PHP,也可支持作为 HTTP 代理服务器对外进行服务。Nginx 用 C 编写而成, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。3、作为邮件代理服务器:Nginx 同时也是一款非常优秀的邮件代理服务器(最早开发这个产品的目的之一,是作为邮件代理服务器)。4、反向代理可以根据url将请求转向于不同用途的集群,比如图片请求,转向图片服务器集群;视频请求,转身视频服务器集群。nginx是一款轻量级的web服务器/反向代理服务器/电子邮件代理服务器,安装非常简单,配置文件也很简洁(还支持 perl 语法)。Nginx 支持平滑加载新配置,还能够在不间断服务的情况下进行软件版本升级。

Apache 特性1、Apache 是 LAMP 架构最核心的 Web Server,开源、稳定、模块丰富是 Apache 的优势。但 Apache 的缺点是有些臃肿,内存和 CPU 开销大,性能上有损耗,不如一些轻量级的 Web 服务器(如:Nginx、Tengine等)高效,轻量级的 Web 服务器对于静态文件的响应能力来说远高于 Apache 服务器。2、Apache 做为 Web Server 是负载 PHP 的最佳选择,如果流量很大的话,可以采用 Nginx 来负载非 PHP 的 Web 请求。Nginx 是一个高性能的 HTTP 和反向代理服务器,Nginx 以其稳定、丰富功能集、示例配置文件和低系统资源的消耗而闻名。Nginx 现能支持 PHP 和 FastCGI,也支持负载均衡和容错,可和 Apache 配合使用,是轻量级的 HTTP 服务器的首选。3、Web 服务器缓存也有多种方案,Apache 提供了自己的缓存模块,也可以使用外加的 Squid 模块进行缓存,这两种方式均可有效提高 Apache 的访问响应能力。Squid Cache 是一个 Web 缓存服务器,支持高效缓存,可作为网页服务器的前置 cache 服务器缓存相关请求以提高 Web 服务器速度。把 Squid 放在 Apache 的前端来缓存 Web 服务器生成动态内容,而 Web 应用程序只需要适当地设置页面实效时间即可。如访问量巨大,则可考虑使用 memcache 作为分布式缓存。4、PHP 的加速可使用 eAccelerator 加速器,eAccelerator 是一个自由开放源码的 PHP 加速器。它会优化动态内容缓存,提高 PHP 脚本缓存性能,使 PHP 脚本在编译状态下,对服务器的开销几乎完全消除。它还可对脚本起优化作用,以加快其执行效率。 使 PHP 程序代码执效率可提高 1-10 倍。至于安装哪个好呢?要省内存的话lnmp是最好的选择,但似乎不太稳定,有时会比较常502静态的多用lnmp还是不错的动态内容多的话,lamp还是最稳定的

1、LNMP方式的优点:占用VPS资源较少,Nginx配置起来也比较简单,利用fast-cgi的方式动态解析PHP脚本。缺点:php-fpm组件的负载能力有限,在访问量巨大的时候,php-fpm进程容易僵死,容易发生502 bad gateway错误。

2、基于 LAMP 架构设计具有成本低廉、部署灵活、快速开发、安全稳定等特点,是 Web 网络应用和环境的优秀组合。若是服务器配置比较低的个人网站,当然首选 LNMP 架构。当然,在大流量的时候。把Apache和Nginx结合起来使用,也不失为一个不错选择。

准备工作
1)安装依赖包

[root@localhost ~]# yum -y install gcc gcc-c++ pcre-devel zlib-devel

2)创建用户组用户

[root@localhost ~]# groupadd nginx
[root@localhost ~]# useradd -M -s /sbin/nologin nginx -g nginx

3)准备nginx-1.14.2包

[root@localhost ~]# tar xf nginx-1.14.2.tar -C /usr/src/ 
#放到专门放解压位置

[root@localhost nginx-1.14.2]# pwd
/usr/src/nginx-1.14.2

[root@localhost nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-htt
p_stub_status_module 
#配置

[root@localhost nginx-1.14.2]# echo $?
0

[root@localhost nginx-1.14.2]# make && make install
#编译安装

命令优化

[root@localhost nginx-1.14.2]# ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin/
#命令优化

Nginx运行控制:
1)检查配置文件语法:nginx -t
2)启动:nginx
3)关闭:nginx -s stop

开启:nginx
登录网页 Welcome to nginx!

(1)全局配置

①user nobody:运行用户
②worker_processes 1:工作进程数量(通常根据CPU性能进行设置)
③error_log logs/error.log:错误日志位置 
④pid logs/nginx.pid:PID文件位置
(2)I/O事件配置
①events{}:界定标记,指定nginx的I/O响应模型及连接数等设置
②use epoll:使用epoll模型
③worker_connections 1024:每个进程处理的连接数
(3)HTTP配置
①http{}:界定标记,内部包含访问日志、http端口、网页目录,虚拟主机等
②access_log logs/access.log main:访问日志位置
③sendfile on:支持文件发送(下载)
④keepalive_timeout 65:连接保持超时
⑤server{}:web服务监听配置
1)listen 80:监听地址及端口
2)server_name 网站名称
3)charset utf-8:默认字符集
4)location /{}:根目录配置
a.root html:网站根目录位置
b.index index.html index.php:默认首页
5)error_page 500 502 503 504/50x.html:内部错误反馈页面
6)location= /50x.html{}:错误页面配置
root html:错误页面目录位置

CENTOS7下添加nginx服务开启

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx  
After=network.target  
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid  
ExecStart=/usr/local/nginx/sbin/nginx  
ExecReload=/usr/bin/kill -s HUP $MAINPID  
ExecStop=/usr/bin/kill -s QUIT $MAINPID  
[Install]
WantedBy=multi-user.target

[root@localhost conf]# chmod +x /lib/systemd/system/nginx.service
systemctl enable nginx.service
user  root;   #root用户
worker_processes  4;    #工作进程数

events {
    use epoll; #使用epoll模型
   # 对于网页服务器 Nginx 来说,会有很多连接进来, epoll 会把他们都监视起来,然后像拨开关一样,谁有数据就拨向谁,然后调用相应的代码处理。
    worker_connections  4096; #每个进程处理4096个连接
}

location / {
            root   html;
            index  index.html index.htm;
        }
        location /status {
            stub_status on;   #计数功能打开
            access_log off;   #关闭通过日志

        }

nginx 打开
192.168.79.100/status
#即可实现网站访问计数统计

实现密码登录访问权限

[root@localhost nginx]# cd /usr/local/httpd/bin/
[root@localhost bin]# ./htpasswd -c /usr/local/nginx/passwd.db thr
#在httpd/bin/里 有一个 htpasswd文件 能够让用户生成密码账号 通过
New password: 
Re-type new password: 
Adding password for user thr

[root@localhost bin]# chmod 400 /usr/local/nginx/passwd.db 
[root@localhost bin]# chown nginx /usr/local/nginx/passwd.db  
#要给nginx和400的权限才能启用 不然配置文件会报错不能开启

location / {
            auth_basic "secret";
            auth_basic_user_file /usr/local/nginx/passwd.db;
        }

重启后 即可实现密码登录

NGINX虚拟主机配置

 default_type  application/octet-stream;
server {
        listen       80;
        server_name  www.hs.com;
        location / {
           root /usr/local/nginx/www/hs;
           index index.html index.htm index.php;
        }

    }

    server {
        listen       80;
        server_name  www.cy.com;
        location / {
           root /usr/local/nginx/www/cy;
           index index.html index.htm index.php;
        }

    }
nginx -s stop重启


# php文件访问配置
location ~ .*\.(php|php5)?$
{
    #fastcgi_pass unix:/tmp/php-cgi.sock;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi.conf;
}

# 静态文件缓存30天
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
    expires 30d;
    # access_log off;
}

# js,css文件缓存15个小时
location ~ .*\.(js|css)?$
{
    expires 15d;
    # access_log off;
}
MYSQL安装参考LAMP

PHP配置


准备工作:#所需依赖
yum -y install libpng libpng-devel pcre pcre-devel libxml2-devel libjepeg-devel
yum -y install curl curl-devel
yum -yinstall libcurl-devel

# 配置编译安装php
./configure
--prefix=/usr/local/php5
--with-gd
--with-curl
--with-zlib
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-mysql=/usr/local/mysql
--with-config-file-path=/usr/local/php5
--enable-mbstring
--enable-fpm


[root@localhost php-5.5.38]# pwd
/usr/src/php-5.5.38

[root@lnmp php-5.5.38]# cp php.ini-development /usr/local/php5/php.ini
#将解压的文件里把配置文件模板移到php里


安装zend-loader能够提高php解析效率

[root@www ~]# tar xf zend-loader-php5.5-linux-x86_64_update1.tar.gz -C /usr/src

[root@www zend-loader-php5.5-linux-x86_64]# pwd
/usr/src/zend-loader-php5.5-linux-x86_64

[root@www zend-loader-php5.5-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/   #将解压包里的模块移到php里

[root@www php5]# pwd
/usr/local/php5
[root@www php5]# vim php.ini
2行: zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
3行: zend_loader.enable=1
   #指明路径 打开zend模块
   

配置nginx 支持php环境

[root@www etc]# pwd
/usr/local/php5/etc
cp php-fpm.conf.default php-fpm.conf
#改名

pid = run/php-fpm.pid	
user = nginx
group = nginx
pm.max_children=50		# fpm模块的最大进程数
pm.start_servers=20		# 启动时开启的进程数
pm.min_spare_servers=5	# 最小空闲进程数
pm.max_spare_servers=20	# 最大空闲进程数



[root@lamp bin]# ln -s /usr/local/php5/bin/* /usr/local/bin
[root@lamp bin]# ln -s /usr/local/php5/sbin/* /usr/local/sbin
#命令优化 能直接打开php-fpm模块

配置nginx 与php的解析

[root@www conf]# vim /usr/local/nginx/conf/nginx.conf
----------------#在http下
server {
        listen       80;
        server_name  www.cy.com; #自己服务器名
        location ~ \.php$ {
        root /usr/local/nginx/html;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi.conf;
        }
#access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm **index.php**;
        }



[root@www conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@www conf]# nginx -s stop && nginx

[root@lnmp www]# vim index.php 
<?php
phpinfo();
?> 

在这里插入图片描述

<?php
$link=mysqli_connect('localhost','root','123');
if($link) echo "恭喜你,数据库连接成功啦!!";
mysqli_close($link);
?>

# 浏览器显示乱码
# 修改主配置文件php.ini
engine = On	
short_open_tag = On
default_charset = "UTF-8"
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
post_max_size = 8M
short_open_tag = On
extension=php_mysqli.dll	# 可选

# 重启nginx

在这里插入图片描述

部署博客

[root@www conf]# vim /usr/local/nginx/conf/nginx.conf

server {
        listen       80;
        server_name  www.cy.com;  
        location / {
        root /usr/local/nginx/wordpress;
        #fastcgi_pass 127.0.0.1:9000;
        #fastcgi_index index.php;
        #include fastcgi.conf;
        index  index.php index.html index.htm;
        }

		location ~ \.php$ {
            root /usr/local/nginx/wordpress;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
        }
然后把博客拉过来
[root@www src]# mv wordpress/ /usr/local/nginx/
重启 [root@www conf]# nginx -s stop && nginx

在这里插入图片描述
在这里插入图片描述

<think>首先,用户的问题是关于LNMP搭建部署的方法,询问教程。用户引用了几个站内引用,我需要参考这些引用,但不能直接复制粘贴;要保持回答真实可靠,并使用中文。 回顾系统级指令: - 数学表达式用$...$或$$...$$,但这里可能不需要太多数学。 - 使用中文。 - 生成相关问题。 - 在引用的段落末尾添加引用标识。 - 回答结构清晰,逐步解决问题。 用户提供的引用: - 引用[1]: LNMP环境搭建教程,在Ubuntu 20.04上。 - 引用[2]: LNMP架构部署流程,解释LNMP如何工作。 - 引用[3]: LNMP的配置安装,包括一些命令。 - 引用[4]: LNMP环境部署搭建WordPress博客教程。 用户说:“我想查找LNMP搭建部署的方法 请问LNMP搭建部署教程”,所以我需要提供一个清晰的教程,基于引用内容。 结构化我的回答: 1. **介绍LNMP**:简要解释LNMP是什么,基于引用[1][2]。 2. **步骤概述**:列出搭建LNMP的主要步骤。 3. **详细步骤**:逐步指导如何在Linux系统上部署LNMP,参考引用中的Ubuntu 20.04示例。 4. **验证测试**:添加如何测试部署是否成功。 5. **生成相关问题**:在末尾添加相关问题。 关键点从引用中提取: - 安装Nginx:更新包列表,安装Nginx。 - 安装MySQL:引用[3]提到安装MySQL依赖。 - 安装PHP:安装PHP相关模块。 - 配置:设置Nginx处理PHP请求,可能是通过fastcgi。 - 部署应用:如引用[4]中部署WordPress。 引用末尾添加标识: - 我需要自然地添加像[^1]之类的引用标识。 确保回答真实可靠: - 基于提供的引用,但不直接复制;用自己的话描述。 - 使用通用步骤,因为用户没有指定Linux发行版,但引用[1]是基于Ubuntu 20.04,所以我可以用那个作为例子。 最终回答结构: - 标题或开头解释LNMP。 - 步骤列表或分段描述安装过程。 - 结尾添加相关问题。 生成相关问题: - 类似示例中的快速排序相关问题。 - 例如:LNMP的优化方法?常见问题解决?与其他堆栈的比较? 完整回答草稿: 1. **介绍**:LNMP代表LinuxNginx、MySQL、PHP,是一种流行的Web服务器架构。它适用于运行动态网站,如WordPress博客[^1][^2]。 2. **主要步骤**: - 更新系统包列表。 - 安装Nginx Web服务器。 - 安装MySQL数据库。 - 安装PHP及其扩展。 - 配置Nginx来处理PHP请求。 - 部署Web应用(如WordPress)。 3. **详细教程**(基于Ubuntu 20.04): - 步骤1: 更新包列表:`sudo apt update` - 步骤2: 安装Nginx:`sudo apt install nginx -y` - 步骤3: 安装MySQL:`sudo apt install mysql-server -y`,然后运行安全脚本。 - 步骤4: 安装PHP:`sudo apt install php-fpm php-mysql -y` - 步骤5: 配置Nginx:编辑Nginx站点配置文件,设置处理PHP请求的位置块。 - 步骤6: 重启服务:`sudo systemctl restart nginx` - 步骤7: 测试:创建PHP测试文件(如info.php)访问验证。 - 可选:部署WordPress或其他应用,如引用[4]所示。 4. **结论**:确认LNMP环境搭建完成。 5. **相关问题**:列出几个相关问题。 在回答中,自然地添加引用标识。例如,当提到教程时,加[^1],架构工作时加[^2]。 相关问题: 1. 如何优化LNMP服务器的性能? 2. LNMP部署中常见问题及解决方法? 3. LNMP与其他堆栈如LAMP的区别是什么? 4. 如何在LNMP上部署特定应用(WordPress)? </think>### LNMP搭建部署教程 LNMPLinuxNginx、MySQL、PHP)是一种广泛使用的Web服务器堆栈,适用于运行动态网站如博客、电商平台等。它通过Nginx处理静态资源,将动态请求转发给PHP处理,并结合MySQL存储数据。以下是基于Ubuntu 20.04 LTS的LNMP搭建详细步骤,过程参考了站内教程[^1][^2][^3]。步骤确保结构清晰,每个阶段都包含命令解释。 #### 1. **更新系统包列表** 首先登录Linux服务器(需root或sudo权限),更新软件包列表以确保获取最新版本: ```bash sudo apt update && sudo apt upgrade -y ``` 此步骤是基础操作,避免后续安装依赖冲突[^1]。 #### 2. **安装Nginx Web服务器** NginxLNMP的前端服务器,负责处理HTTP请求: ```bash sudo apt install nginx -y ``` 安装后启动并启用开机自启: ```bash sudo systemctl start nginx sudo systemctl enable nginx ``` 验证安装:在浏览器访问服务器IP(如 `http://your-server-ip`),看到Nginx欢迎页面即成功[^1]。 #### 3. **安装MySQL数据库** MySQL用于存储网站数据,安装时需配置root密码: ```bash sudo apt install mysql-server -y ``` 运行安全脚本强化MySQL,设置密码并移除测试数据库: ```bash sudo mysql_secure_installation ``` 提示时设置强密码,并选择“Y”确认安全选项(如禁止远程root登录)。安装后登录MySQL测试: ```bash sudo mysql -u root -p ``` 输入密码后显示MySQL命令行即正常[^3]。 #### 4. **安装PHP及其扩展** PHP处理动态请求,需安装核心模块及与Nginx、MySQL的集成包: ```bash sudo apt install php-fpm php-mysql php-mbstring php-xml php-curl php-zip -y ``` - `php-fpm`:PHP FastCGI进程管理器,用于Nginx转发请求。 - 其他扩展支持常见Web应用(如WordPress)。 启动PHP-FPM服务: ```bash sudo systemctl start php-fpm sudo systemctl enable php-fpm ``` #### 5. **配置Nginx处理PHP请求** 修改Nginx站点配置文件,将动态请求通过fastcgi协议转发给PHP-FPM: - 编辑默认配置文件: ```bash sudo nano /etc/nginx/sites-available/default ``` - 在 `server` 块中添加或修改以下内容: ```nginx server { listen 80; root /var/www/html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php-fpm.sock; } } ``` 保存后测试配置并重启Nginx: ```bash sudo nginx -t # 检查语法错误 sudo systemctl restart nginx ``` 此配置确保静态资源由Nginx直接处理,动态PHP请求转交给PHP-FPM[^2]。 #### 6. **测试LNMP环境** 创建PHP测试文件验证环境: ```bash echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php ``` 在浏览器访问 `http://your-server-ip/info.php`,显示PHP信息页面即表示LNMP搭建成功[^2]。 #### 7. **部署Web应用(示例:WordPress)** 如需部署应用如WordPress: - 下载并解压WordPress包(参考引用[4]): ```bash wget https://wordpress.org/latest.tar.gz tar -xzvf latest.tar.gz sudo mv wordpress/* /var/www/html/ ``` - 设置文件权限: ```bash sudo chown -R www-data:www-data /var/www/html/ ``` - 访问 `http://your-server-ip`,按WordPress向导配置数据库。 此步骤展示了LNMP的实际应用场景[^4]。 ### 注意事项 - **系统要求**:Ubuntu 20.04推荐,其他Linux发行版命令可能不同(如CentOS用 `yum`)。 - **安全优化**:安装后配置防火墙(`ufw`),禁用不必要的PHP模块。 - **参考依据**:本教程基于站内LNMP部署流程配置指南[^1][^2][^3],确保环境可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值