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


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

被折叠的 条评论
为什么被折叠?



