Linux与Nginx:构建高性能的Web服务器 (linux与nginx)

随着互联网的快速发展,Web服务器的性能越来越重要。作为一款免费的操作系统,Linux一直以来都是Web服务器的首选之一,而Nginx则是一个高性能的开源Web服务器软件,它具有高效的负载均衡、反向代理和缓存等功能,可以让Web应用获得更高的性能。

本文将介绍如何使用Linux和Nginx搭建一个高性能的Web服务器,以便让读者了解如何构建一个快速且可靠的Web服务器。

一、安装Linux操作系统

要搭建一个Web服务器,需要选择一个适合的操作系统。目前较为流行的选择有Ubuntu、CentOS、Debian等。本文以Ubuntu作为我们的操作系统。

在安装Ubuntu之前,需要先准备好安装介质并将其插入服务器中。随后按照提示进行安装即可。

二、安装Nginx

在安装完操作系统后,就可以开始安装Nginx了。可以按照以下步骤进行安装:

1. 添加Nginx软件包仓库

在Ubuntu上,可以通过将Nginx软件包仓库添加到apt安装工具中进行安装。要做到这一点,需要在终端执行以下命令:

sudo apt-add-repository ppa:nginx/stable

sudo apt-get update

2. 安装Nginx

在添加完软件包仓库后,就可以安装Nginx了。可以使用以下命令进行安装:

sudo apt-get install nginx

安装完成后,Nginx服务将自动启动。如果出现问题,则可以使用以下命令查看Nginx是否正在运行:

sudo service nginx status

如果Nginx未启动,则可以使用以下命令启动它:

sudo service nginx start

而如果想要停止Nginx,则可以使用以下命令:

sudo service nginx stop

三、配置Nginx

安装Nginx之后,需要对其进行配置,以实现更佳性能。可以按照以下步骤进行配置:

1. 调整worker_processes值

打开/etc/nginx/nginx.conf文件,并找到worker_processes参数。将其设置为服务器上可用处理器核心数的两倍,以获得更佳性能。

2. 调整worker_connections值

找到worker_connections参数,并将其设置为合适的值。根据Nginx的文档建议,可以将其设置为每个处理器核心1000的连接数,以获得更佳性能。

3. 启用gzip压缩

启用gzip压缩可以减少文件传输大小,从而提高Web页面的加载速度。可以按照以下配置将gzip压缩功能添加到Nginx中:

gzip on;

gzip_types text/pln text/css application/json application/x-javascript

text/xml application/xml application/xml+rss text/javascript;

四、优化文件缓存

Nginx还提供了一个内置的缓存功能,可以将Web页面缓存在内存中,从而提高页面加载速度。可以配置以下参数来优化文件缓存:

1. 配置文件缓存路径

打开/etc/nginx/nginx.conf文件,并找到以下配置项:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:50m inactive=60m;

proxy_cache_key “$scheme$request_method$host$request_uri”;

将levels值设置为可用内存大小的一半,以避免过度缓存。

2. 配置缓存时间

将inactive值设置为Web页面的缓存时间,以便在此期间内使用缓存。

3. 启用缓存

在要使用缓存的位置块中添加以下代码:

proxy_cache_bypass $http_pragma;

proxy_cache_revalidate on;

proxy_cache_min_uses 1;

proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;

五、结论

使用Linux和Nginx搭建一个高性能的Web服务器并不难。只需要按照以上步骤进行安装和配置,就可以快速构建一个快速且可靠的Web服务器。而由于Linux和Nginx都是免费的开源软件,因此可以通过采用它们来减少Web服务器的开销,同时还可以获得非常好的性能。

相关问题拓展阅读:

linux 版怎么配置nginx

配置Nginx服务

Nginx是一款相当优秀的用于部署动态网站的服务程序,Nginx最初是为俄罗斯门户站轮迹旅点而设计的网站服务软件,作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而深受信赖,但最最最被认可的是低系统资源、占用内存少且并发能力强,目前国内如新浪、网易、腾讯等门户站均在使用,市场占有份额一直保持在15-16%左右(2023年最新数据)。

Nginx程序的稳定性来自于它采用了分阶段的资源分配技术,使得CPU与内存占用率会非常低,所以使用Nginx程序部署动态网站环境不仅十分的稳定、高效,而且消耗更少的系统资源,丰富的模块功能也几乎与Apache程序数量相同,现腊凳在已经完全的支持了proxy、rewrite、mod_fcgi、州仔ssl、vhosts等常用模块。而且还支持了热部署技术,即能够可以7*24不间断提供服务,即便运行数月也无须重启,而且还可以在不暂停服务的情况下直接对Nginx服务程序进行升级。

坦白来讲,虽然Nginx程序的代码质量非常高,代码很规范,技术成熟,模块扩展也很容易,但Nginx依然存在不少问题,比如Nginx是由俄罗斯人创建的,所以在资料文档方面还并不完善,中文教材的质量更是鱼龙混杂,但Nginx近年来增长势头迅猛,预测未来应该能够在轻量级HTTP服务器市场有不错的未来。

安装PCRE(Perl兼容的正则表达式库,解压与编译过程已省略):

# cd /usr/local/src

# mkdir /usr/local/pcre

# tar xzvf pcre-8.35.tar.gz

# cd pcre-8.35

# ./configure –prefix=/usr/local/pcre

# make

# make install

安装openssl服务程序(解压与编译过程已省略):

# cd /usr/local/src

# mkdir /usr/local/openssl

# tar xzvf openssl-1.0.1h.tar.gz

# cd openssl-1.0.1h

# ./config –prefix=/usr/local/openssl

# make

# make install

把openssl服务程序命令目录添加到环境变量中(永久生效):

# vim /etc/profile

//将配置文件最下面的参数追加参数为:

export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin

# source /etc/profile

安装zlib数据压缩函数库(解压与编译过程已省略):

# cd /usr/local/src

# mkdir /usr/local/zlib

# tar xzvf zlib-1.2.8.tar.gz

# cd zlib-1.2.8

# ./configure –prefix=/usr/local/zlib

# make

# make install

创建用于执行nginx服务的用户:

# cd ..

# useradd www -s /in/nologin

安装nginx服务程序(openssl,zlib,pcre要写成源码解压路径!!!):

# tar xzvf nginx-1.6.0.tar.gz

# cd nginx-1.6.0/

# ./configure –prefix=/usr/local/nginx –without-http_memcached_module –user=www –group=www –with-http_stub_status_module –with-http_ssl_module –with-http_gzip_static_module –with-openssl=/usr/local/src/openssl-1.0.1h –with-zlib=/usr/local/src/zlib-1.2.8 –with-pcre=/usr/local/src/pcre-8.35

# make

# make install

创建nginx程序脚本(将下面的参数直接复制进去即可):

# vim /etc/rc.d/init.d/nginx

#!/bin/bash

# nginx – this script starts and stops the nginx daemon

# chkconfig:

# description: Nginx is an HTTP(S) server, HTTP(S) reverse \

# proxy and IMAP/POP3 proxy server

# processname: nginx

# config: /etc/nginx/nginx.conf

# config: /usr/local/nginx/conf/nginx.conf

# pidfile: /usr/local/nginx/logs/nginx.pid

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

&& exit 0

nginx=”/usr/local/nginx/in/nginx”

prog=$(basename $nginx)

NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf”

&& . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {

# make required directories

user=`$nginx -V 2>&1 | grep “configure arguments:” | sed ‘s/*–user=\(*\).*/\1/g’ -`

if ; then

useradd -M -s /bin/nologin $user

fi

options=`$nginx -V 2>&1 | grep ‘configure arguments:’`

for opt in $options; do

if ; then

value=`echo $opt | cut -d “=” -f 2`

if ; then

# echo “creating” $value

mkdir -p $value && chown -R $user $value

fi

fi

done

}

start() {

|| exit 5

|| exit 6

make_dirs

echo -n $”Starting $prog: “

daemon $nginx -c $NGINX_CONF_FILE

retval=$?

echo

&& touch $lockfile

return $retval

}

stop() {

echo -n $”Stopping $prog: “

killproc $prog -QUIT

retval=$?

echo

&& rm -f $lockfile

return $retval

}

restart() {

#configtest || return $?

stop

sleep 1

start

}

reload() {

#configtest || return $?

echo -n $”Reloading $prog: “

killproc $nginx -HUP

RETVAL=$?

echo

}

force_reload() {

restart

}

configtest() {

$nginx -t -c $NGINX_CONF_FILE

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

case “$1” in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart|configtest)

$1

;;

reload)

rh_status_q || exit 7

$1

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

rh_status_q || exit 0

;;

*)

echo $”Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}”

exit 2

esac

# chmod 755 /etc/rc.d/init.d/nginx

重启nginx服务程序并添加到开机启动项:

# /etc/rc.d/init.d/nginx restart

Restarting nginx (via systemctl):

# chkconfig nginx on

此时可以通过访问IP来判断nginx服务是否顺利运行

LNMP(即Linux+Nginx+MYSQL+PHP)是目前非常热门的动态网站部署架构,如果你是在搭建这种部署的话可以看下

linux上利用pm2和nginx部署项目

Introduce

在开发模式的时候,我们常用 nodemon 和 webpack 热更新nodejs项目(如express)和前端项目(如vue),但需要部署的时候我们就不能再用开发环境的配置了,姿拆需要改成生产环境配置。为了使得项目可以稳健的运行在服务端,node可以使用nohup启动,前端项目握行可以使用nginx代理。

但是段册哗为了更加规范管理,我们应该使用pm2来管理node项目。

nohup(不推荐使用)

作用:不挂断地运行命令。

启动后通过 ps -ef 可以查看进程和 pid,如果需要停止,输入

需要特别注意的是,退出远程时,要使用 exit 退出,直接关闭远程工具将会导致后台静默进程停止。

尽管nohup是内置工具,但万一服务抛异常,对外没有反应,表现为无端停止服务,对维护不友好。

pm2(推荐使用)

相比 nohup,pm2 更加合理,推荐使用 pm2 部署。

首先全局安装 pm2

为了方便,我们可以把 pm2 软链接到系统环境下(假设 pm2 安装路径是/usr/in/nodejs/bin/pm2),

最后在项目中添加 pm2 配置文件, processes.json

其中 name 代表进程别名,script 代表需要执行的命令,env 是注入到服务中的变量。

最后修改 package.json 的 start 命令(项目为 express )为

如果需要查看 pm2 状态,使用

表明通过 pm2 启动项目。

停止或重启服务使用

自动启动

在实际情况下,偶尔会发生服务器宕机,可是重启后pm2应用不会被自动启动,这时候我们就需要去保存我们的pm2状态,然后配置开机自启。

执行后会输出

这表示pm2把当前应用列表启动信息保存到了磁盘文件上

执行后输出

这表明pm2往系统中写入了开机启动任务,开机是自动启动上次pm2保存的应用列表

这时候如果想测试,可以手动重启服务器试一下,查看一下pm2应用任务是否正确启动

再也不用担心重启后服务不起了。

nginx

作为一个高性能的http和反向代理服务,在linux上不免要选用它。

安装教程

代理教程

对于Web而已,80端口和443端口是十分重要的,原则上需要输入 才可以浏览网页的,但由于默认端口是80,所以‘:80’可以忽略。同理对于https的443端口也一样。

所以我们常常需要在80端口监听多个服务,这就必须要用上nginx的代理功能了。用法如下:

常规配置

代理配置

nginx如果检测到vue.msg.com的请求,将 转发 请求到本机的8080端口,如果检测到的是react.msg.com请求,也会将请求 转发 到8081端口。

同样的,如果前面用pm2开启了node项目,而且运行在3000端口,并且已经做好了域名映射,如(api.msg.com),我们可以同理配置代理

上面就是linux上部署项目的教程(后续介绍 docker部署 )。

关于linux与nginx的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Linux与Nginx:构建高性能的Web服务器 (linux与nginx)