Nginx+Lua開発環境のインストール

7536 ワード

まず、Nginxコアに多くのサードパーティモジュールを追加したOpenRestyを使用します.最大のハイライトは、Lua開発環境をデフォルトで統合し、NginxをWebサーバとして使用できるようにすることです.Nginxのイベントドライバモデルと非ブロックIOにより、高性能なWebアプリケーションを実現できます.またOpenRestyはMysql、Redis、Memcachedなど多くのコンポーネントを提供し、Nginx上でWebアプリケーションを開発するのがより便利で簡単です.現在、京東ではリアルタイム価格、秒殺、ダイナミックサービス、単品ページ、リストページなど、Nginx+Luaアーキテクチャが使用されており、他の会社ではタオバオ、どこへ行くかなどが使用されています.
インストール環境
インストール手順を参照http://openresty.org/#Installation.
1、ディレクトリ/usr/serversを作成し、その後、すべてのソフトウェアをこのディレクトリにインストールします.
 
  
mkdir -p /usr/servers 
cd /usr/servers/ 

2、インストール依存(私の環境はubuntuで、以下のコマンドでインストールできます.その他はopenrestyインストール手順を参照できます)
 
  
apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl 

3、ngx_をダウンロードするopenresty-1.7.7.2.tar.gzと解凍
 
  
wget http://openresty.org/download/ngx_openresty-1.7.7.2.tar.gz 
tar -xzvf ngx_openresty-1.7.7.2.tar.gz 

ngx_openresty-1.7.7.2/bundleディレクトリにはnginxコアと多くのサードパーティモジュールが格納されています.例えば、私たちが必要とするLuaとLuaJITがあります.
3、LuaJITを取り付ける
 
  
cd bundle/LuaJIT-2.1-20150120/ 
make clean && make && make install 
ln -sf luajit-2.1.0-alpha /usr/local/bin/luajit 

4、ngx_をダウンロードするcache_purgeモジュールnginxキャッシュをクリーンアップするためのモジュール
 
  
cd /usr/servers/ngx_openresty-1.7.7.2/bundle 
wget https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz 
tar -xvf 2.3.tar.gz 

5、ダウンロードnginx_upstream_check_moduleモジュールustream健康診断用
 
  
cd /usr/servers/ngx_openresty-1.7.7.2/bundle 
wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/v0.3.0.tar.gz 
tar -xvf v0.3.0.tar.gz  

6、ngx_をインストールするopenresty
 
  
cd /usr/servers/ngx_openresty-1.7.7.2 
./configure --prefix=/usr/servers --with-http_realip_module  --with-pcre  --with-luajit --add-module=./bundle/ngx_cache_purge-2.3/ --add-module=./bundle/nginx_upstream_check_module-0.3.0/ -j2 
make && make install 

--with***内蔵/統合モジュールをインストール--with-http_realip_moduleはユーザーの実際のipモジュール-with-pcre Perl互換性のある達式モジュール--with-luajit集積luajitモジュール--add-moduleはカスタムサードパーティモジュールを追加し、このようなngx_che_purge 7、/usr/serversディレクトリの下
 
  
cd /usr/servers/ 
ll  

インストールに成功した/usr/servers/luajit:luajit環境、luajitはjavaのjitに似ています.すなわち、インスタントコンパイルです.luaは解釈言語で、luajitを通じてluaコードをマシンコードに即時コンパイルすることができ、優れた性能を得ることができます./usr/servers/lualib:使用するluaライブラリには、redis、jsonライブラリなどのデフォルトのluaライブラリが用意されています.自分で開発したものやサードパーティのものをここに置くこともできます./usr/servers/nginx:インストールされたnginx;/usr/servers/nginx/sbin/nginx-Vでnginxバージョンとインストールされたモジュールを表示
8、nginxを起動する
 
  
/usr/servers/nginx/sbin/nginx

次にnginx+lua開発環境を構成します
環境の設定
構成およびNginx HttpLuaModuleドキュメントの表示http://wiki.nginx.org/HttpLuaModule.
1、nginxを編集する.confプロファイル
 
  
vim /usr/servers/nginx/conf/nginx.conf 

2、http部分に以下の構成を追加する
 
  
#lua , ”;” , ”;;” , /usr/servers/nginx  
lua_package_path "/usr/servers/lualib/?.lua;;";  #lua  
lua_package_cpath "/usr/servers/lualib/?.so;;";  #c   

3、開発を容易にするために、/usr/servers/nginx/confディレクトリの下にluaを作成します.conf
 
  
#lua.conf 
server { 
    listen       80; 
    server_name  _; 


4、nginx.confのhttp部分にinclude luaを追加する.confにはこのファイルクリップが含まれています
 
  
include lua.conf; 

5、テストが正常か
 
  
/usr/servers/nginx/sbin/nginx  -t  

次のように表示される場合は、構成に成功しました.
nginx: the configuration file/usr/servers/nginx/conf/nginx.conf syntax is ok nginx: configuration file/usr/servers/nginx/conf/nginx.conf test is successful
HelloWorld
1、lua.confのserverセクションには、次の構成が追加されています.
 
  
location /lua { 
    default_type 'text/html'; 
        content_by_lua 'ngx.say("hello world")'; 


2、構成が正しいかどうかをテストする
 
  
/usr/servers/nginx/sbin/nginx  -t 

3、nginxを再起動する
 
  
/usr/servers/nginx/sbin/nginx  -s reload 

4、アクセスhttp://192.168.1.6/lua(自分の機器は実際の状況に応じてipを交換します)
hello world
5、luaコードファイル
私たちはluaコードをnginx構成に置くと、luaのコードが増加するにつれて構成ファイルが長く維持されにくくなるので、luaコードを外部ファイルに移動して格納する必要があります.
 
  
vim /usr/servers/nginx/conf/lua/test.lua 
 
  
#  
ngx.say("hello world");  

そしてlua.confをに変更
 
  
location /lua { 
    default_type 'text/html'; 
    content_by_lua_file conf/lua/test.lua; # nginx  
}  

ここでconf/lua/test.luaは、絶対パス/usr/servers/nginx/conf/lua/testを用いることもできる.lua.
 
6、lua_code_cache
デフォルトではlua_code_Cacheはオープン、すなわちluaコードをキャッシュする、すなわちluaコードの変更のたびにreload nginxが有効になる必要があり、開発段階でlua_code_cache  off;キャッシュを閉じて、デバッグ時にluaコードを変更するたびにreload nginxを必要としません.ただし、本番環境ではキャッシュをオンにすることを忘れないでください.
 
  
    location /lua { 
        default_type 'text/html'; 
        lua_code_cache off; 
        content_by_lua_file conf/lua/test.lua; 


オンにするとreload nginxに次のようなアラームnginxが表示されます:[alert]lua_code_cache is off; this will hurt performance in/usr/servers/nginx/conf/lua.conf:8 7、エラーログ実行中にエラーが発生した場合は、エラーログの表示を忘れないでください.
 
  
tail -f /usr/servers/nginx/logs/error.log 

ここで私たちの基本的な環境を構築しました.nginx+luaプロジェクト構築
今後、私たちのnginx lua開発ファイルはますます多くなります.私たちはそれをプロジェクト化し、開発しやすいようにしなければなりません.プロジェクトディレクトリの構造は次のとおりです:example example.conf---このプロジェクトのnginxプロファイルlua---私たちのluaコードtest.lua lualib---lua依存ライブラリ/サードパーティ依存*.lua       *.soではlualibもプロジェクトに置くメリットは、後で導入するときに一緒に導入し、依存のコピーを忘れて依存が欠けているサーバを防ぐことです.プロジェクトを/usr/exampleディレクトリの下に配置します. /usr/servers/nginx/conf/nginx.confプロファイルは次のとおりです(ここではプロファイルを最小化します).
 
  
#user  nobody; 
worker_processes  2; 
error_log  logs/error.log; 
events { 
    worker_connections  1024; 

http { 
    include       mime.types; 
    default_type  text/html; 
 
    #lua , ”;;” , /usr/servers/nginx  
    lua_package_path "/usr/example/lualib/?.lua;;";  #lua  
    lua_package_cpath "/usr/example/lualib/?.so;;";  #c  
    include /usr/example/example.conf; 


絶対パスには、lua依存ライブラリとnginxプロジェクトプロファイルが含まれています. /usr/example/example.confプロファイルは次のとおりです.
 
  
server { 
    listen       80; 
    server_name  _; 
 
    location /lua { 
        default_type 'text/html'; 
        lua_code_cache off; 
        content_by_lua_file /usr/example/lua/test.lua; 
    } 


luaファイルは絶対パス/usr/example/lua/testを使用します.lua. 
これでexampleをsvnに投げることができます.
では、Nginx+Lua開発環境のインストール構成について今日お話しします.その後、nginx+lua開発の内容を引き続き説明します.