1、安装gcc(可通过“gcc -v”查看是否已经安装)
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器,包括C、C++、Objective-C、Fortran、Java、Ada和Go语言前端,也包括这些语言的库(如libstdc++,libgcj等)。
sudo yum -y install gcc
2、安装pcre
pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式。
sudo yum install -y pcre pcre-devel
3、安装zlib
zlib库提供了很多种压缩和解压缩方式,nginx使用zlib对http包的内容进行gzip。
sudo yum install -y zlib zlib-devel
4、安装openssl
openossl是一个开放源代码的软件库包,nginx使用该库以支持https协议。
sudo yum install -y openssl openssl-devel
5、安装LuaJIT
LuaJIT是Lua的即时编译器,使用C语言编写,兼容标准Lua 5.1。LuaJIT的运行效率比标准的Lua高出数倍(因为JIT技术),完全媲美使用C/C++代码。
cd /opt #(下载到/opt目录中)
sudo wget -c http://luajit.org/download/LuaJIT-2.0.4.tar.gz
sudo tar -xzvf LuaJIT-2.0.4.tar.gz
cd LuaJIT-2.0.4
sudo make install PREFIX=/opt/luajit
6、下载ngx_devel_kit
ngx_devel_kit:Nginx Devel Kit,简称NDK,是一种Nginx模块,旨在扩展Nginx webserver的核心功能,可以作为其它Nginx模块的基础。
cd /opt #(下载到/usr/local目录中)
sudo wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
sudo tar -xzvf v0.3.0.tar.gz
7、下载lua-nginx-module
lua-nginx-module也是一个Nginx模块,它将Lua的功能嵌入到Nginx HTTP Server中。同时,这个模块是OpenResty的核心组件(OpenResty是一个通过Lua扩展NGINX实现的可伸缩的Web平台)。
cd /opt #(下载到/opt 目录中)
sudo wget https://github.com/openresty/lua-nginx-module/archive/v0.10.8.tar.gz
sudo tar -xzvf v0.10.8.tar.gz
8、下载nginx-1.10.3.tar.gz
cd /opt #(下载到/opt目录中)
wget http://nginx.org/download/nginx-1.10.3.tar.gz
tar -xzvf nginx-1.10.3.tar.gz
9、配置LuaJIT环境变量
su #(切换到root用户)
(输入root用户Password)
export LUAJIT_LIB=/opt/luajit/lib
export LUAJIT_INC=/opt/luajit/include/luajit-2.0
10、编译、安装(root权限下)
cd nginx-1.10.3 //(上面的环境变量配置完成后就可以编译安装了)
./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module --add-module=/opt/ngx_devel_kit-0.3.0 --add-module=/opt/lua-nginx-module-0.10.8
make -j2
make install
exit #(退出root)
注:./configure中的--with-http_***_module模块是默认不会安装的,需要显式配置,详细可参阅“http://nginx.org/en/docs/configure.html”
11、使用lua指令的方式。在/opt/nginx/conf/nginx.conf中加入如下代码:
#在server中添加一个location
location /hello_lua {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
12、或者使用lua文件的方式。在/usr/local/nginx/conf/nginx.conf中加入如下代码:
#在server中添加一个location
location /lua_file {
default_type 'text/html';
content_by_lua_file conf/lua/test.lua; #在nginx安装目录下开始
}
13、然后编辑test.lua文件
ngx.say("hello, world");
注:如果启动nginx报如下错误:
nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory可通过以下方式解决,然后再启动nginx:
1)方法一:
sudo ln -s /opt/luajit/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
2)方法二:
sudo vi /etc/ld.so.conf.d/libc.conf #(在libc.conf中增加如下代码,然后保存退出) /opt/luajit/lib #(这里对应自己安装的luajit目录) #(退出后执行如下命令) sudo ldconfig
14、http测试
访问“http://127.0.0.1/hello_lua” 显示“hello, lua”
访问“http://127.0.0.1/lua_file” 显示“hello, world”
15、创建系统服务
在系统服务目录里创建nginx.service文件
vi /lib/systemd/system/nginx.service
nginx.service内容如下:
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/opt/nginx/sbin/nginx
ExecReload=/opt/nginx/sbin/nginx -s reload
ExecStop=/opt/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
参数解释:
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
保存退出。
15、设置开机启动
systemctl enable nginx.service
自此,重新centos后,nginx就自动启动了
nginx其他命令:
systemctl start nginx.service (启动nginx服务)
systemctl stop nginx.service (停止nginx服务)
systemctl enable nginx.service (设置开机自启动)
systemctl disable nginx.service (停止开机自启动)
systemctl status nginx.service (查看服务当前状态)
systemctl restart nginx.service (重新启动服务)
systemctl list-units --type=service (查看所有已启动的服务)