实验环境

  1. 一台最小化安装的CentOS 7.3 虚拟机

安装nginx

安装nginx依赖包

  1. yum install -y pcre-devel zlib-devel openssl-devel wget gcc tree vim

Nginx依赖于pcre、zlib、openssl,在编译前配置时如果有问题

可以使用yum方式安装三个包(pcre-devel、zlib-devel、openssl-devel)

从Nginx官网下载Nginx源码包

  1. wget http://nginx.org/download/nginx-1.12.2.tar.gz

解压Nginx源码包到/root/nginx,并查看Nginx源文件结构

  1. tar -xzvf nginx-1.12.2.tar.gz

/root/nginx目录进行编译前配置

  1. cd /root/nginx*
  2. ./configure --prefix=/usr/local/nginx --with-http_ssl_module

/root/nginx目录执行编译安装

  1. make && make install

启动nginx

关闭防火墙

  1. setenforce 0
  2. systemctl stop firewalld
  3. systemctl disable firewalld

进入到安装目录/usr/local/nginx,查看目录结构

  1. cd /usr/local/nginx
  2. pwd
  3. ls

启动Nginx

  1. /usr/local/nginx/sbin/nginx

查看Nginx进程是否启动

  1. ps aux | grep nginx

查看Nginx占用的端口号

  1. netstat -tlnp

使用本地主机访问虚拟机上的Nginx服务器

停止nginx

停止Nginx的三种方式

  1. # 1. 立即停止Nginx服务
  2. /usr/local/nginx/sbin/nginx -s stop
  3. # 2.完成当前任务后停止
  4. /usr/local/nginx/sbin/nginx -s quit
  5. # 3.杀死Nginx进程
  6. killall nginx

把nginx命令添加到环境变量

使用软连接将nginx链接到/usr/local/sbin

  1. ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
  2. ll /usr/local/sbin/ | grep "nginx"

显示当前环境变量PATH

  1. echo $PATH

编辑.bash_profile文件

  1. vim ~/.bash_profile

.bash_profile文件末尾加入以下内容

  1. export PATH=$PATH:/usr/local/nginx/sbin

引用.bash_profile文件

  1. source ~/.bash_profile

使用nginx命令

  1. # 启动nginx
  2. nginx
  3. # 停止nginx
  4. nginx -s quit

nginx命令添加到系统服务

创建并编辑文件/root/service-nginx.sh

  1. #!/bin/sh
  2. #
  3. # filename: service-nginx.sh
  4. #
  5. # nginx - this script starts and stops the nginx daemon
  6. #
  7. # chkconfig: - 85 15
  8. # description: NGINX is an HTTP(S) server, HTTP(S) reverse \
  9. # proxy and IMAP/POP3 proxy server
  10. # processname: nginx
  11. # config: /etc/nginx/nginx.conf
  12. # config: /etc/sysconfig/nginx
  13. # pidfile: /var/run/nginx.pid
  14. # Source function library.
  15. . /etc/rc.d/init.d/functions
  16. # Source networking configuration.
  17. . /etc/sysconfig/network
  18. # Check that networking is up.
  19. [ "$NETWORKING" = "no" ] && exit 0
  20. #nginx="/usr/sbin/nginx"
  21. nginx="/usr/local/sbin/nginx"
  22. prog=$(basename $nginx)
  23. #NGINX_CONF_FILE="/etc/nginx/nginx.conf"
  24. NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
  25. [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
  26. lockfile=/var/lock/subsys/nginx
  27. make_dirs() {
  28. # make required directories
  29. user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
  30. if [ -n "$user" ]; then
  31. if [ -z "`grep $user /etc/passwd`" ]; then
  32. useradd -M -s /bin/nologin $user
  33. fi
  34. options=`$nginx -V 2>&1 | grep 'configure arguments:'`
  35. for opt in $options; do
  36. if [ `echo $opt | grep '.*-temp-path'` ]; then
  37. value=`echo $opt | cut -d "=" -f 2`
  38. if [ ! -d "$value" ]; then
  39. # echo "creating" $value
  40. mkdir -p $value && chown -R $user $value
  41. fi
  42. fi
  43. done
  44. fi
  45. }
  46. start() {
  47. [ -x $nginx ] || exit 5
  48. [ -f $NGINX_CONF_FILE ] || exit 6
  49. make_dirs
  50. echo -n $"Starting $prog: "
  51. daemon $nginx -c $NGINX_CONF_FILE
  52. retval=$?
  53. echo
  54. [ $retval -eq 0 ] && touch $lockfile
  55. return $retval
  56. }
  57. stop() {
  58. echo -n $"Stopping $prog: "
  59. killproc $prog -QUIT
  60. retval=$?
  61. echo
  62. [ $retval -eq 0 ] && rm -f $lockfile
  63. return $retval
  64. }
  65. restart() {
  66. configtest || return $?
  67. stop
  68. sleep 1
  69. start
  70. }
  71. reload() {
  72. configtest || return $?
  73. echo -n $"Reloading $prog: "
  74. killproc $nginx -HUP
  75. RETVAL=$?
  76. echo
  77. }
  78. force_reload() {
  79. restart
  80. }
  81. configtest() {
  82. $nginx -t -c $NGINX_CONF_FILE
  83. }
  84. rh_status() {
  85. status $prog
  86. }
  87. rh_status_q() {
  88. rh_status >/dev/null 2>&1
  89. }
  90. case "$1" in
  91. start)
  92. rh_status_q && exit 0
  93. $1
  94. ;;
  95. stop)
  96. rh_status_q || exit 0
  97. $1
  98. ;;
  99. restart|configtest)
  100. $1
  101. ;;
  102. reload)
  103. rh_status_q || exit 7
  104. $1
  105. ;;
  106. force-reload)
  107. force_reload
  108. ;;
  109. status)
  110. rh_status
  111. ;;
  112. condrestart|try-restart)
  113. rh_status_q || exit 0
  114. ;;
  115. *)
  116. echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
  117. exit 2
  118. esac
  119. # END

/root/service-nginx.sh替换/etc/init.d/nginx

  1. mv /root/service-nginx.sh /etc/init.d/nginx

赋予可执行限权

  1. chmod 755 /etc/init.d/nginx

执行

  1. systemctl start nginx

源码方式安装nginx,自动化安装脚本

  1. #!/bin/bash
  2. # installation configuration
  3. NGINX_VERSION=1.12.2
  4. NGINX_SRC_PATH=/root
  5. NGINX_BIN_PATH=/usr/local/nginx
  6. # disable firewall
  7. systemctl stop firewalld
  8. setenforce 0
  9. # installation dependence
  10. yum install -y pcre-devel zlib-devel openssl-devel wget gcc
  11. # download nginx source package
  12. cd ${NGINX_SRC_PATH}
  13. wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
  14. # unzip source package
  15. tar -xzvf nginx-${NGINX_VERSION}.tar.gz
  16. cd ./nginx-${NGINX_VERSION}
  17. # install nginx
  18. ./configure --prefix=${NGINX_BIN_PATH} --with-http_ssl_module
  19. make & make install
  20. # start nginx service
  21. cd ${NGINX_BIN_PATH}/sbin
  22. ./nginx
  23. # END

本文链接:https://www.cnblogs.com/connect/p/nginx-install-src.html

Linux下源码安装并配置Nginx的更多相关文章

  1. nginx在Centos7.5下源码安装和配置

    安装nginx 安装nginx依赖包 yum install -y pcre-devel zlib-devel openssl-devel wget gcc tree vim 进入目录/root/se ...

  2. linux下源码安装netcat

    linux下源码安装netcat http://blog.chinaunix.net/uid-20783755-id-4211230.html 1,下载netcat源码,netcat-0.7.1-13 ...

  3. linux下源码安装软件

    在linux下的很多软件都是通过源码包方式发布的,这样做对于最终用户而言,虽然相对于二进制软件包,配置和编译起来繁琐点,但是它的可移植性却好得多,针对不同的体系结构,软件开发者往往仅需发布同一份源码包 ...

  4. Linux 下源码安装大杂烩

    本文仅以记录平常源码安装部分软件是需注意的关键点. 有时为了方便,如在 Ubuntu 系统中,采用 sudo apt-get install soft-version 来安装某一版本的软件显得更为便捷 ...

  5. linux下源码安装apache服务

    1.搭建静态网站是,我们只需要搭建apache服务即可满足要求. 例如:如果我再客户端游览器输入地址,他会找到192.168.1.100这个服务器,然后根据端口会找到apache服务器.apache他 ...

  6. Linux下源码安装MySQL-5.6.25

    从mysql-5.5起,mysql源码安装开始使用cmake了,因此我们得先安装cmake,配置安装目录./configure --perfix=/.....的时候和以前的会有些区别. 一.安装cma ...

  7. Linux下源码安装方式安装MySQL

    1.下载安装包:https://downloads.mysql.com/archives/community/  2.安装开发工具和安装包 因为要把源码编译成二进制数据,所以必须要有编译器和解释器 g ...

  8. Linux下源码安装JDK7

    安装说明 安装环境:Red Hat Enterprise Linux7.1安装方式:源码安装 软件:jdk-7u80-linux-x64.gz 安装 #首先查看系统原有JDK信息 rpm -qa | ...

  9. linux下源码安装rabbitMq

    一.安装erlang前期环境安装1.利用yum安装erlang编译所依赖的环境 yum -y install make gcc gcc-c++ kernel-devel m4ncurses-devel ...

随机推荐

  1. hadoop mkdir: Cannot create directory /usr. Name node is in safe mode.

    今天在hdfs上面创建文件夹的时候报了:org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name ...

  2. CSV文件导入导mysql数据库

    1.导入 基本语法: load data [low_priority] [local] infile 'file_name txt' [replace | ignore] into table tbl ...

  3. Dubbo序列化多个CopyOnWriteArrayList对象变成同一对象的一个大坑!!

    环境: win10 + jdk 1.8 + dubbo 2.5.10 问题描述: 当一个对象(此对象内包含多个CopyOnWriteArrayList对象) 作为参数调用RPC接口后, 服务提供者拿到 ...

  4. ​Django-model

    Model:数据库操作 创建数据库的表: django不能自动创建数据库,但能创建表 在web的models里定义生成表 在project的settings里设置app定义和数据库信息 步骤: 1.创 ...

  5. Redis的n种妙用,分布式锁,分布式唯一id,消息队列,抽奖……

    介绍 redis是键值对的数据库,常用的五种数据类型为字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset) Redis用作缓存,主要两个 ...

  6. 【玩转开源】Linux C 检测网口热插拔

    int NetDetect(char *net_name, int *statue) { int ret = 0; ; struct ifreq ifr; skfd = socket(AF_INET, ...

  7. CentOS 7 配置静态IP后不生效 & Job for network.service failed

    参考:http://tieba.baidu.com/p/3233996339#57290767555l 在CentOS中配置静态IP后不生效. 解决办法:将/etc/sysconfig/network ...

  8. UOJ#394. 【NOI2018】冒泡排序

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ394.html 题解 首先我们发现一个数不能既被往左换又被往右换.也就是说不能有任何一个数左边有比他大的, ...

  9. 动态网页获取ajax,post方法,url里面不直接显示参数

    记录一下,爬去ajax数据时,需要注意一下是post方法还是get方法,get方法就正常做就行了,但是post方法的话,需要这样,如下 a = requests.request('post',url) ...

  10. mybatis中有趣的符号#与$

    ${ }是字符串替换,相当于直接显示数据,#{ }是预编译处理,相当于对数据加上双引号 即#是将传入的值当做字符串的形式,先替换为?号,然后调用PreparedStatement的set方法来赋值,而 ...