nginx portable web server

Трябва ми лек сървар с който да управлявам едн компютър, който ползвам за нещо като локален NAS. Apache тотално не ми се вписва в сметките, защото напоследък брах ядове с пълното му деинсталиране от системата. Затова се спрях на конкурента му nginx. По-долу поствам някои интересни моменти от тестовете, които направих под Windows.
За да мога да достъпвам сървара в локална мрежа, трябваше да променя настройките на Firewall-а на Windows 10. В моя случай промених настройки на firewall на Nod32, който е асоцииран по подразбиране в firewall-a на Win.

Изтеглих Mainline version на nginx от тук: nginx download

Разархивирах го в една директория и му промених conf/nginx.conf така, че да отговаря на моите нужди. Важно е да се отбележи, че предварително имам инсталиран PHP 7.2, който е добавен в променливите на обкръжението на Win10.

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    # gzip  on;

    server {
        listen       80;
        server_name  192.168.0.21;

        location / {
            root F:\\nginx-1.19.7\\site\\local;
            index  index.php;
            try_files $uri $uri/ /index.php?$args;
        }

        #rewrite ^/(.*)$ /index.php/$1 last;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           F:\\nginx-1.19.7\\site\\local;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

Реда:

try_files $uri $uri/ /index.php?$args;

казва на сървара първо да потърси файл, след това директория и най-накрая ако не намери предните две да потърси index.php, като всичко след името на домейна го постави като аргумент. Примерно:
https://localhost/system-info
ще се преобразува в:
https://localhost/index.php?/system-info
По този начин мога да ползвам френдли адресиране, вместо да изписвам остарелите GET променливи. В Apache се ползва .htaccess за тая цел. Но в nginx тези инструкции се поместват в основния кофигурационен файл.

За да спирам и пускам сървара използвах batch код, който намерих някъде в мрежата. Коментирал съм с REM кодове в скрипта, които могат да са полезни след време, но които не са ми необходими, като спиране и пускане на MySQL. Напоследък за леки проекти ползвам основно SQLite с RedBeanPHP като ORM:

@echo off
REM cd C:\WebServer\nginx


IF "%1" == "stop" (
	GOTO STOPSERVER
)else IF "%1" == "start" (
	GOTO STARTSERVER
)else (
	echo Use these commands:
	echo.
	echo myserver start
	echo myserver stop
)
GOTO END

:STARTSERVER
REM QPROCESS * | find /I /N "mysqld.exe">NUL
REM IF "%ERRORLEVEL%"=="0" (
REM	 echo MYSQLD is already running.
REM )else (
REM 	RunHiddenConsole.exe mysqld --console
REM	echo MYSQLD is now running.
REM )

QPROCESS * | find /I /N "nginx.exe">NUL
IF "%ERRORLEVEL%"=="0" (
	echo NGINX is already running.
)else (
	RunHiddenConsole.exe nginx
	echo NGINX is now running.
)

QPROCESS * | find /I /N "php-cgi.exe">NUL
IF "%ERRORLEVEL%"=="0" (
	echo PHP-CGI is already running.
)else (
	RunHiddenConsole.exe php-cgi -b 127.0.0.1:9000
	echo PHP-CGI is now running.
)

echo.
echo To stop, type "myserver stop"

GOTO END

:STOPSERVER

REM QPROCESS * | find /I /N "mysqld.exe">NUL
REM IF "%ERRORLEVEL%"=="0" (
REM 	taskkill /F /IM mysqld.exe>NUL
REM 	echo MYSQLD ended successfully.
REM )else (
REM 	echo MYSQLD is not running
REM )

QPROCESS * | find /I /N "nginx.exe">NUL
IF "%ERRORLEVEL%"=="0" (
	::nginx -s stop
	taskkill /F /IM nginx.exe>NUL
	echo NGINX ended successfully.
)else (
	echo NGINX is not running
)

QPROCESS * | find /I /N "php-cgi.exe">NUL
IF "%ERRORLEVEL%"=="0" (
	taskkill /F /IM php-cgi.exe>NUL
	echo PHP-CGI ended successfully.
)else (
	echo PHP-CGI is not running
)

:END

Запазих по-горния код в директорията с exe-то на nginx в файла myserver.bat. Пускане и спиране на сървара става с командите:

myserver start
myserver stop

За файлов фмениджър на NAS-чето за сега съм се спрял на Tiny File Manager. Този файлов мениджър е поместен само в един файл и има достатъчно опции за редактиране, които са ми напълно достатъчни.

Това е. Получи се много гот.

Share and Enjoy !

Shares

Web Mechanize engines

Съществуват много приложение на ботовете за автоматизиране на web-среда, т. нар. Web Mechanize engines. Тук ще разгледам няколко такива системи за механизиране и автоматизиране на работата с web-страници.

Приложение на Mechanize-ботовете

С помощта на скриптовете за автоматизиране на Web могат да се:

  • Попълват множество бланки и формуляри с еднородна информация
  • Търси в мрежата
  • Автоматизират регистрации. Примерно автоматизирано попълване на бланки за Гражданска отговорност.
  • Извличане на информация от множество сайтове наведнъж и съхраняването и.

и т.н.

Някои по-популярни Mechanize системи

WWW::Mechanize – Perl модул, написан от Jesse Vincent. Един от първите подобни модули за автоматизирано браузване.
mechanize – Python алтернатива на по-горния модул. Включва достъпните (супер лесни за работа даже) mechanize.Browser и mechanize.UserAgentBase имплементации на urllib2.OpenerDirector.
LWP – The World-Wide Web библиотека отново за Perl.
twill – базиран на Python изключително прост език за автоматизирано браузване. Изпълнява се от команден ред и изисква Python 2.3 или по-нов.
zope.testbrowser – още един модул за Python.
Watir – библиотека на Ruby за автоматизирано браузване. Супер лесна за работа.
Scriptable Browser – PHP алтернатива на горните модули. Все още има какво да се желае, но определено доста интересен проект.
Snoopy – PHP клас, който също е насочен към автоматизирано браузване.
Compass_Mechanize – PHP пакет, който е наречен от авторите “WWW::Mechanize for PHP”. Изисква Zend Framework.

Firefox Mechanize extensions

Освен посочените по-горе модули или езици, съществуват и приложения, които работят в средата на браузъра. Ще посоча някои механизатори за Firefox:
iMacros – Един от най-яките автоматизатори. Записва всички събития и генерира изключително лек и четим код. Не е нужно да изучвате скриптов език. Супер елементарно се работи с тази добавка.
iMacros Command Line – това брилянтно разширение разполага и с поддръжка на командния ред.
Chickenfoot – много любим механизатор. Има си собствен език за писане на скриптовете, който е доста лесен. Разполага и с рекордер на събитията, както и старт от командния ред: firefox -cf-run.
DejaClick – още една добавка за Firefox, която може да записва събития. Генерира малко трудно-четими скриптове, иначе пък си има някои полезни опции.
Selenium IDE – един от първите автоматизиращи плъгини за Firefox. Помня, че четох за него преди поне 6-7 години, дет се вика от зората на пандата. Не съм го ползвал, защото тогава не ми е бил необходим, но определено заслужава да е в този списък.

Разбира се има и много стари и достъпни методи за автоматизиране на по-леки задачи в Web. Например с cURL и wget понякога могат да се постигнат чудеса.

Share and Enjoy !

Shares