需要在Linux环境下编译和部署。
- Linux环境中需要安装gcc,perl
- 尽量使用非root用户进行编译
- 将openssl-3.2.0.tar.gz进行解压
- 执行如下命令
./Configure
- 编译
make
- 安装(非root用户)
sudo make install
- 默认的安装路径为: /usr/local
- 将jansson进行解压
- 执行如下命令
./configure
- 编译
make
- 安装(非root用户)
sudo make install
- 默认的安装路径为: /usr/local
- 将libjwt进行解压
- 执行如下命令
./configure
- 编译
make
- 安装(非root用户)
sudo make install
- 默认的安装路径为: /usr/local
- 打开当前用户的.bash_profile,写入如下配置项
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
- 配置完成后,为了使其生效,可以在已经打开的terminal中执行
source ~/.bash_profile
- 将nginx源码包进行解压
tar xvzf nginx-release-1.25.3.tar.gz
- 在nginx目录中创建objs/lib
mkdir -p objs/lib
- 将openssl,pcre,zlib都解压到objs/lib中
- 创建html, logs, temp目录
- 将工程里的html目录下的文件拷贝到新建的html目录下
- 在nginx目录下执行如下命令:
./auto/configure \
--with-cc=gcc \
--with-debug \
--builddir=build \
--prefix= \
--conf-path=conf/nginx.conf \
--pid-path=logs/nginx.pid \
--http-log-path=logs/access.log \
--error-log-path=logs/error.log \
--sbin-path=nginx \
--http-client-body-temp-path=temp/client_body_temp \
--http-proxy-temp-path=temp/proxy_temp \
--http-fastcgi-temp-path=temp/fastcgi_temp \
--http-scgi-temp-path=temp/scgi_temp \
--http-uwsgi-temp-path=temp/uwsgi_temp \
--with-cc-opt=-DFD_SETSIZE=1024 \
--with-pcre=objs/lib/pcre-8.45 \
--with-zlib=objs/lib/zlib-1.3 \
--with-openssl=objs/lib/openssl-3.2.0 \
--with-openssl-opt=no-asm \
--with-http_ssl_module \
--with-http_auth_request_module
此时编译,只能在当前目录下运行nginx
- 执行如下命令进行编译:
make -j 10
- 运行,然后通过浏览器访问nginx,以检查nginx是否可以正常运行
./build/nginx
- 停止
./build/nginx -s stop
- 在nginx目录下创建modules目录
- 将ngx_http_sutdy_module拷贝到module目录下
- 执行configure命令:
./auto/configure \
--with-cc=gcc \
--with-debug \
--builddir=build \
--prefix= \
--conf-path=conf/nginx.conf \
--pid-path=logs/nginx.pid \
--http-log-path=logs/access.log \
--error-log-path=logs/error.log \
--sbin-path=nginx \
--http-client-body-temp-path=temp/client_body_temp \
--http-proxy-temp-path=temp/proxy_temp \
--http-fastcgi-temp-path=temp/fastcgi_temp \
--http-scgi-temp-path=temp/scgi_temp \
--http-uwsgi-temp-path=temp/uwsgi_temp \
--with-cc-opt=-DFD_SETSIZE=1024 \
--with-pcre=objs/lib/pcre-8.45 \
--with-zlib=objs/lib/zlib-1.3 \
--with-openssl=objs/lib/openssl-3.2.0 \
--with-openssl-opt=no-asm \
--with-http_ssl_module \
--with-http_auth_request_module \
--add-module=modules/ngx_http_study_module
- 编译
make
可以参考example_config/example_nginx_config.conf进行修改。该文件中将将日志文件按照日期进行拆分.
- 打开nginx.conf文件继续编辑
- 如果是debug版本,则通过如下配置来打开调试日志进行调试(第8行)
error_log logs/error.log debug;
- 配置日志输出格式,该日志将会以json格式输出到相关日志文件中。(第26-47行)
log_format main escape=json '{'
'"timestamp": "$time_local", '
'"remote_addr": "$remote_addr", '
'"remote_user": "$remote_user", '
'"study_username": "$study_username", '
'"study_service_uri": "$study_service_uri", '
'"request_method": "$request_method", '
'"request_uri": "$request_uri", '
'"request_protocol": "$server_protocol", '
'"request_length": "$request_length", '
'"request_time": "$request_time", '
'"response_status": "$status", '
'"body_bytes_sent": "$body_bytes_sent", '
'"bytes_sent": "$bytes_sent", '
'"http_referer": "$http_referer", '
'"http_user_agent": "$http_user_agent", '
'"http_x_forwarded_for": "$http_x_forwarded_for", '
'"http_host": "$http_host", '
'"server_name": "$server_name", '
'"upstream_addr": "$upstream_addr", '
'"upstream_status": "$upstream_status"'
'}';
- 修改nginx的access日志格式
access_log logs/access.log main;
- 修改监听地址和端口
listen 8081;
server_name 192.168.56.106;
- 配置地图服务代理
location /xxx/ {
access_log logs/xxx_access.log main;
study_root xxx;
study_rex_str ^/geo/(.*)/(MapServer|FeatureServer|ImageServer|SeceneServer);
study_jwt_key <your security key>
rewrite ^/gis/(.*)$ /$1 break;
proxy_set_header Authorization "";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://map.geoq.cn/;
}
执行如下命令安装nginx
sudo make install
- nginx的可执行文件被安装到/usr/local/bin
- nginx的日志和配置文件目录会被安装到/usr/local/nginx目录下
- 使用管理员将nginx.servce拷贝到/etc/systemd/system目录下
- 修改文件权限
chmod +x nginx.service
- 启动
systemctl daemon-reload
systemctl enable nginx.service
systemctl start nginx.service
- 重新加载和停止
systemctl restart nginx.service
systemctl stop nginx.service