恢复当前站点 - 可用文件

时间:2017-08-24 02:57:30

标签: nginx

我的团队试图更新nginx配置df = pd.DataFrame() for url in url_baseball_players: df = pd.concat([df, pd.DataFrame(scrape_baseball_data(url))]) ,当他试图突然保存文件无法保存文件时,由于磁盘大小问题,现在文件为空(大小为0) 。有没有办法根据当前的nginx conf创建一个新的配置文件?由于编辑了文件,nginx服务器还没有重新启动,因此,它仍然正常工作,我们没有sites-available/mysite.com文件的最新备份,因此我更愿意恢复存在于内存中的当前配置。

谢谢。

1 个答案:

答案 0 :(得分:7)

首先尝试此操作之前,请确保您的服务器上有足够的空间,并且您还需要拥有sudo权限。

查找主要的nginx进程

您需要的第一件事是找到nginx的主要流程

$ ps aux | grep nginx
root      3890  0.0  0.1 124972  1424 ?        Ss   06:06   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data  3891  0.0  0.3 125332  3128 ?        S    06:06   0:00 nginx: worker process

正如您所看到的,我的主要nginx进程是3890 pid。

查找内存映射 接下来,我们需要检查进程使用的内存映射

$ sudo cat /proc/3890/maps
55698ed20000-55698ee2e000 r-xp 00000000 fc:00 414469                     /usr/sbin/nginx
55698f02e000-55698f030000 r--p 0010e000 fc:00 414469                     /usr/sbin/nginx
55698f030000-55698f04c000 rw-p 00110000 fc:00 414469                     /usr/sbin/nginx
55698f04c000-55698f06c000 rw-p 00000000 00:00 0
556990d72000-556990dd5000 rw-p 00000000 00:00 0                          [heap]
7f4cfa551000-7f4cfa55c000 r-xp 00000000 fc:00 1314482                    ....
7f4d01f70000-7f4d01f71000 rw-p 00000000 00:00 0
7ffde6f5e000-7ffde6f7f000 rw-p 00000000 00:00 0                          [stack]
7ffde6f9a000-7ffde6f9c000 r--p 00000000 00:00 0                          [vvar]
7ffde6f9c000-7ffde6f9e000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

现在会有很多输出,但不要担心我们主要对[heap]部分感兴趣。内存位于556990d72000-556990dd5000

倾倒堆

现在你需要转储堆。确保已安装gdb。使用

连接到流程
$ sudo gdb -p 3890

您将收到(gdb)提示。现在在此提示符下使用我们之前提到的地址

(gdb) dump memory /tmp/nginx-memory 0x556990d72000 0x556990dd5000

从转储中获取字符串数据

现在我们的转储在/tmp/nginx-memory处可用,现在我们需要从中获取字符串数据

$ sudo strings  /tmp/nginx-memory > /tmp/nginx-memory.str

查找Nginx配置

现在你有一个内存转储。大多数配置都有http {行,现在您可以测试/tmp/nginx-memory.str相同的

$ grep -A 20 "http {" /tmp/nginx-memory.str
http {
    # Basic Settings
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;
    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    # SSL Settings
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;
    # Logging Settings
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    # Gzip Settings
    gzip on;
    gzip_disable "msie6";
--
http {
    # Basic Settings
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;
    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    # SSL Settings
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;
    # Logging Settings
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    # Gzip Settings
    gzip on;
    gzip_disable "msie6";

仔细查看此文件并恢复配置并创建一个新文件