• macbook 源码安装 nginx1.20.1


    获取源码

    执行如下命令

    cd /usr/local/src
    
    wget http://nginx.org/download/nginx-1.20.1.tar.gz
    wget https://www.openssl.org/source/openssl-3.0.0.tar.gz
    wget https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.gz
    # 尝试过下载 pcre2,结果编译的时候出现`找不到 pcre.h` 的错误
    

    解压上述三个 tar.gz 文件

    创建安装目录

    cd /usr/local
    sudo mkdir nginx-1.20.1
    sudo ln -sf nginx-1.20.1 nginx
    sudo chown -R dongling:staff nginx-1.20.1 nginx  # 将目录owner修改为当前用户,是为了当前用户能够读写该目录,之后当前用户可以直接将nginx安装到这里
    

    配置项目

    进入 nginx-1.20.1 目录,新建 doit.sh 文件(不在命令行直接执行,是为了记录到文件中,方便追踪修改),添加如下内容

    ./configure \
    --with-debug \
    --prefix=/usr/local/nginx \
    --with-openssl=/usr/local/src/openssl-3.0.0 \
    --with-pcre=/usr/local/src/pcre-8.45
    

    执行该脚本

    bash doit.sh
    

    得到 configure 输出结果

    Configuration summary
      + using PCRE library: /usr/local/src/pcre-8.45
      + using OpenSSL library: /usr/local/src/openssl-3.0.0
      + using system zlib library
    
      nginx path prefix: "/usr/local/nginx"
      nginx binary file: "/usr/local/nginx/sbin/nginx"
      nginx modules path: "/usr/local/nginx/modules"
      nginx configuration prefix: "/usr/local/nginx/conf"
      nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
      nginx pid file: "/usr/local/nginx/logs/nginx.pid"
      nginx error log file: "/usr/local/nginx/logs/error.log"
      nginx http access log file: "/usr/local/nginx/logs/access.log"
      nginx http client request body temporary files: "client_body_temp"
      nginx http proxy temporary files: "proxy_temp"
      nginx http fastcgi temporary files: "fastcgi_temp"
      nginx http uwsgi temporary files: "uwsgi_temp"
      nginx http scgi temporary files: "scgi_temp"
    

    编译 安装

    执行

    make
    

    编译最后的输出结果

    cc -o objs/nginx \
            objs/src/core/nginx.o \
            objs/src/core/ngx_log.o \
            objs/src/core/ngx_palloc.o \
            objs/src/core/ngx_array.o \
            objs/src/core/ngx_list.o \
            objs/src/core/ngx_hash.o \
            objs/src/core/ngx_buf.o \
            objs/src/core/ngx_queue.o \
            objs/src/core/ngx_output_chain.o \
            objs/src/core/ngx_string.o \
            objs/src/core/ngx_parse.o \
            objs/src/core/ngx_parse_time.o \
            objs/src/core/ngx_inet.o \
            objs/src/core/ngx_file.o \
            objs/src/core/ngx_crc32.o \
            objs/src/core/ngx_murmurhash.o \
            objs/src/core/ngx_md5.o \
            objs/src/core/ngx_sha1.o \
            objs/src/core/ngx_rbtree.o \
            objs/src/core/ngx_radix_tree.o \
            objs/src/core/ngx_slab.o \
            objs/src/core/ngx_times.o \
            objs/src/core/ngx_shmtx.o \
            objs/src/core/ngx_connection.o \
            objs/src/core/ngx_cycle.o \
            objs/src/core/ngx_spinlock.o \
            objs/src/core/ngx_rwlock.o \
            objs/src/core/ngx_cpuinfo.o \
            objs/src/core/ngx_conf_file.o \
            objs/src/core/ngx_module.o \
            objs/src/core/ngx_resolver.o \
            objs/src/core/ngx_open_file_cache.o \
            objs/src/core/ngx_crypt.o \
            objs/src/core/ngx_proxy_protocol.o \
            objs/src/core/ngx_syslog.o \
            objs/src/event/ngx_event.o \
            objs/src/event/ngx_event_timer.o \
            objs/src/event/ngx_event_posted.o \
            objs/src/event/ngx_event_accept.o \
            objs/src/event/ngx_event_udp.o \
            objs/src/event/ngx_event_connect.o \
            objs/src/event/ngx_event_pipe.o \
            objs/src/os/unix/ngx_time.o \
            objs/src/os/unix/ngx_errno.o \
            objs/src/os/unix/ngx_alloc.o \
            objs/src/os/unix/ngx_files.o \
            objs/src/os/unix/ngx_socket.o \
            objs/src/os/unix/ngx_recv.o \
            objs/src/os/unix/ngx_readv_chain.o \
            objs/src/os/unix/ngx_udp_recv.o \
            objs/src/os/unix/ngx_send.o \
            objs/src/os/unix/ngx_writev_chain.o \
            objs/src/os/unix/ngx_udp_send.o \
            objs/src/os/unix/ngx_udp_sendmsg_chain.o \
            objs/src/os/unix/ngx_channel.o \
            objs/src/os/unix/ngx_shmem.o \
            objs/src/os/unix/ngx_process.o \
            objs/src/os/unix/ngx_daemon.o \
            objs/src/os/unix/ngx_setaffinity.o \
            objs/src/os/unix/ngx_setproctitle.o \
            objs/src/os/unix/ngx_posix_init.o \
            objs/src/os/unix/ngx_user.o \
            objs/src/os/unix/ngx_dlopen.o \
            objs/src/os/unix/ngx_process_cycle.o \
            objs/src/os/unix/ngx_darwin_init.o \
            objs/src/event/modules/ngx_kqueue_module.o \
            objs/src/os/unix/ngx_darwin_sendfile_chain.o \
            objs/src/core/ngx_regex.o \
            objs/src/http/ngx_http.o \
            objs/src/http/ngx_http_core_module.o \
            objs/src/http/ngx_http_special_response.o \
            objs/src/http/ngx_http_request.o \
            objs/src/http/ngx_http_parse.o \
            objs/src/http/modules/ngx_http_log_module.o \
            objs/src/http/ngx_http_request_body.o \
            objs/src/http/ngx_http_variables.o \
            objs/src/http/ngx_http_script.o \
            objs/src/http/ngx_http_upstream.o \
            objs/src/http/ngx_http_upstream_round_robin.o \
            objs/src/http/ngx_http_file_cache.o \
            objs/src/http/ngx_http_write_filter_module.o \
            objs/src/http/ngx_http_header_filter_module.o \
            objs/src/http/modules/ngx_http_chunked_filter_module.o \
            objs/src/http/modules/ngx_http_range_filter_module.o \
            objs/src/http/modules/ngx_http_gzip_filter_module.o \
            objs/src/http/ngx_http_postpone_filter_module.o \
            objs/src/http/modules/ngx_http_ssi_filter_module.o \
            objs/src/http/modules/ngx_http_charset_filter_module.o \
            objs/src/http/modules/ngx_http_userid_filter_module.o \
            objs/src/http/modules/ngx_http_headers_filter_module.o \
            objs/src/http/ngx_http_copy_filter_module.o \
            objs/src/http/modules/ngx_http_not_modified_filter_module.o \
            objs/src/http/modules/ngx_http_static_module.o \
            objs/src/http/modules/ngx_http_autoindex_module.o \
            objs/src/http/modules/ngx_http_index_module.o \
            objs/src/http/modules/ngx_http_mirror_module.o \
            objs/src/http/modules/ngx_http_try_files_module.o \
            objs/src/http/modules/ngx_http_auth_basic_module.o \
            objs/src/http/modules/ngx_http_access_module.o \
            objs/src/http/modules/ngx_http_limit_conn_module.o \
            objs/src/http/modules/ngx_http_limit_req_module.o \
            objs/src/http/modules/ngx_http_geo_module.o \
            objs/src/http/modules/ngx_http_map_module.o \
            objs/src/http/modules/ngx_http_split_clients_module.o \
            objs/src/http/modules/ngx_http_referer_module.o \
            objs/src/http/modules/ngx_http_rewrite_module.o \
            objs/src/http/modules/ngx_http_proxy_module.o \
            objs/src/http/modules/ngx_http_fastcgi_module.o \
            objs/src/http/modules/ngx_http_uwsgi_module.o \
            objs/src/http/modules/ngx_http_scgi_module.o \
            objs/src/http/modules/ngx_http_memcached_module.o \
            objs/src/http/modules/ngx_http_empty_gif_module.o \
            objs/src/http/modules/ngx_http_browser_module.o \
            objs/src/http/modules/ngx_http_upstream_hash_module.o \
            objs/src/http/modules/ngx_http_upstream_ip_hash_module.o \
            objs/src/http/modules/ngx_http_upstream_least_conn_module.o \
            objs/src/http/modules/ngx_http_upstream_random_module.o \
            objs/src/http/modules/ngx_http_upstream_keepalive_module.o \
            objs/src/http/modules/ngx_http_upstream_zone_module.o \
            objs/ngx_modules.o \
            /usr/local/src/pcre-8.45/.libs/libpcre.a -lz
    sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
                    -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
                    -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
                    -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
                    < man/nginx.8 > objs/nginx.8
    

    最后执行

    make install
    

    查看安装结果

    [23:00:43 dongling@noah ~]20$ ll /usr/local/nginx/
    total 0
    drwxr-xr-x  6 dongling 192 11  6 22:59 .
    drwxr-xr-x 15 root     480 11  6 22:30 ..
    drwxr-xr-x 17 dongling 544 11  6 22:59 conf
    drwxr-xr-x  4 dongling 128 11  6 22:59 html
    drwxr-xr-x  2 dongling  64 11  6 22:59 logs
    drwxr-xr-x  3 dongling  96 11  6 22:59 sbin
    

    配置环境变量

    ~/.bashrc 中添加如下配置

    NGINX_HOME=/usr/local/nginx
    export PATH=$PATH:$NGINX_HOME/sbin
    

    然后启动nginx,并查看运行结果

    [23:10:30 dongling@noah local]128$ source ~/.bashrc
    [23:10:33 dongling@noah local]129$ nginx
    [23:10:34 dongling@noah local]130$ curl localhost
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
        body {
             35em;
            margin: 0 auto;
            font-family: Tahoma, Verdana, Arial, sans-serif;
        }
    </style>
    </head>
    <body>
    <h1>Welcome to nginx!</h1>
    <p>If you see this page, the nginx web server is successfully installed and
    working. Further configuration is required.</p>
    
    <p>For online documentation and support please refer to
    <a href="http://nginx.org/">nginx.org</a>.<br/>
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
    
    <p><em>Thank you for using nginx.</em></p>
    </body>
    </html>
    

    成功~

  • 相关阅读:
    【Cocos2d-X游戏实战开发】捕鱼达人之开发前准备工作(一)
    NetBeans + Xdebug 调试WordPress
    【Cocos2d-X游戏实战开发】捕鱼达人之单例对象的设计(二)
    源代码静态分析工具
    Flash Builder 条件编译的实现
    Maven插件之portable-config-maven-plugin(不同环境打包)
    生成8位随机不重复的数字编号
    【剑指Offer学习】【面试题63:二叉搜索树的第k个结点】
    51nod 1413:权势二进制
    leetcode_Isomorphic Strings _easy
  • 原文地址:https://www.cnblogs.com/dongling/p/15519919.html
Copyright © 2020-2023  润新知