在CentOS 6上部署Nginx
时间:2020-01-09 10:38:08 来源:igfitidea点击:
说明
Nginx设计用于高性能和高效的系统资源使用。
Nginx的另一个好处是易于配置和使用。配置文件易于理解,并使用普通英语。这意味着精简和优化配置所花的时间更少,部署应用程序的时间也更多。
大多数站点使用Nginx作为代理,提供静态内容,然后将请求转发到托管动态内容的Apache服务器。但是,最新版本的Nginx现在可以处理FastCGI,从而可以托管由PHP,Python和许多其他功能支持的动态内容。
安装Nginx
截至本文发表之日,Nginx不在CentOS的默认存储库中。这给我们留下了两个选择:从源代码构建它或者添加Nginx存储库以使用YUM进行安装。
从存储库安装
- 导航到/etc/yum.repos.d
- 为Nginx创建一个仓库配置文件
vi nginx.repo
- 将以下行添加到nginx.conf
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
- 保存更改并退出文本编辑器。
- 安装Nginx
yum install nginx
从源代码安装Nginx
- 确保在系统上安装了必需的开发包。他们将需要编译源文件。
yum groupinstall "development tools"
- 在wget中从Nginx网站下载最新版本。本教程撰写时的最新版本是1.5.8.
wget http://nginx.org/download/nginx-1.5.8.tar.gz
- 解压缩下载的文件。
tar -xvf nginx-1.5.8.tar.gz
- 导航到新的nginx目录
cd nginx-1.5.8
- 要启用重写模块,请安装PCRE开发包。
yum install pcre-devel
- 要启用GZip功能,请安装zlib开发包。
yum install zlib-devel
- 准备要在服务器上编译的源文件。
./configure
- 从源文件编译Nginx
make install
- 将新的Nginx二进制文件复制到/ usr / sbin
cp /usr/local/nginx/sbin/nginx /usr/sbin/nginx
- 在/ etc中创建Nginx目录
mkdir -p /etc/nginx
- 将nginx.conf模板复制到/ etc / nginx
cp /usr/local/nginx/conf/nginx.conf /etc/nginx/nginx.conf
- 将mime.types模板复制到/ etc / nginx
cp /usr/local/gninx/conf/mime.types /etc/nginx
- 创建Nginx服务帐户
useradd --shell /sbin/nologin nginx
- 创建Nginx日志目录
mkdir -p /var/log/nginx
- 创建一个Nginx启动脚本文件。
touch /etc/init.d/nginx
- 在文本编辑器中打开启动脚本,并添加以下几行
#!/bin/sh # # nginx Startup script for nginx # # chkconfig: - 85 15 # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/nginx.pid # description: nginx is an HTTP and reverse proxy server # ### BEGIN INIT INFO # Provides: nginx # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start and stop nginx ### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions if [ -f /etc/sysconfig/nginx ]; then . /etc/sysconfig/nginx fi prog=nginx nginx=${NGINX-/usr/sbin/nginx} conffile=${CONFFILE-/etc/nginx/nginx.conf} lockfile=${LOCKFILE-/var/lock/subsys/nginx} pidfile=${PIDFILE-/var/run/nginx.pid} SLEEPMSEC=100000 RETVAL=0 start() { echo -n $"Starting $prog: " daemon --pidfile=${pidfile} ${nginx} -c ${conffile} RETVAL=$? echo [ $RETVAL = 0 ] && touch ${lockfile} return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc -p ${pidfile} ${prog} RETVAL=$? echo [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} } reload() { echo -n $"Reloading $prog: " killproc -p ${pidfile} ${prog} -HUP RETVAL=$? echo } upgrade() { oldbinpidfile=${pidfile}.oldbin configtest -q || return 6 echo -n $"Staring new master $prog: " killproc -p ${pidfile} ${prog} -USR2 RETVAL=$? echo /bin/usleep $SLEEPMSEC if [ -f ${oldbinpidfile} -a -f ${pidfile} ]; then echo -n $"Graceful shutdown of old $prog: " killproc -p ${oldbinpidfile} ${prog} -QUIT RETVAL=$? echo else echo $"Upgrade failed!" return 1 fi } configtest() { if [ "$#" -ne 0 ] ; then case "" in -q) FLAG= ;; *) ;; esac shift fi ${nginx} -t -c ${conffile} $FLAG RETVAL=$? return $RETVAL } rh_status() { status -p ${pidfile} ${nginx} } # See how we were called. case "" in start) rh_status >/dev/null 2>&1 && exit 0 start ;; stop) stop ;; status) rh_status RETVAL=$? ;; restart) configtest -q || exit $RETVAL stop start ;; upgrade) upgrade ;; condrestart|try-restart) if rh_status >/dev/null 2>&1; then stop start fi ;; force-reload|reload) reload ;; configtest) configtest ;; *) echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|upgrade|reload|status|help|configtest}" RETVAL=2 esac exit $RETVAL
- 在文本编辑器中打开Nginx配置文件,然后修改突出显示的区域以匹配系统。
user nginx; # Set value to number of process cores worker_processes 2; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; gzip on; include /etc/nginx/conf.d/*.conf; }
- 通过启动Nginx守护程序来测试安装
service nginx start
配置Nginx
- 打开Nginx配置文件
vi /etc/nginx/nginx.conf
- 修改worker_process值以反映服务器中安装的处理器核心数量。
worker_processes 2
- 要启用gzip压缩,请找到以下行:
#gzip on
并取消注释
gzip on
- 保存更改并退出文本编辑器。
- 重新启动Nginx守护程序使更改生效。
service nginx restart
- 将Nginx配置为在重启后自动启动。
chkconfig nginx on
配置默认网站
- 打开默认的网站配置文件。
vi /etc/nginx/conf.d/default.conf
- 要设置监听端口,请找到以下行并修改其值:
listen 80;
- 通过找到以下行并将localhost替换为服务器名称来设置网站的DNS主机名。
server_name localhost;
- 默认的网站根目录是/ usr / share / nginx / html。要对其进行更改,请找到以下几行,并将突出显示的值替换为所需的文件路径。
location / { root /usr/share/nginx/html; index index.html index.htm; }
- 要修改默认索引文件,请添加或者替换索引旁边列出的值。
- 保存更改并退出文本编辑器。
配置防火墙以允许HTTP访问
- 运行以下命令以允许通过IPTables进行HTTP访问。
iptables -A INPUT -m state --state NEW -P tcp --dport 80 -j ACCEPT
- 要永久保存防火墙规则,请运行以下命令。
/sbin/service iptables save