在企业中,我们往往需要一些架构中的软件定制功能,这就必须采用源码编辑安装软件。
源码编译安装三部曲:configure----make----make install
安装好软件后还需要熟悉配置文件,使其能与其他软件结合。
Nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是Apache2.2+mod_proxy_balancer的轻量级代替者,不仅因为响应静态页面的速度非常快,而且它的模块数量是Apache的2/3。对proxy和rewrite模块的支持很彻底,还支持mod_fcgi、ssl、vhosts ,适合用做mongrel clusters前端HTTP响应。
nginx和Apache一样用模块化设计,nginx模块包括内置模块和第三方模块,其中内置模块中包含主模块和事件模块。
高并发。静态小文件
占用资源少。2万并发、10个线程,内存消耗几百M。
功能种类比较多。web,cache,proxy。每一个功能都不是特别强。
支持epoll模型,使得nginx可以支持高并发。
nginx 配合动态服务和Apache有区别。(FASTCGI 接口)
利用nginx可以对IP限速,可以限制连接数。
配置简单,更灵活。
静态服务器(图片,视频服务),另个lighttpd。并发几万,html,js,css,flv,jpg,gif等。
动态服务,nginx—fastcgi 方式运行PHP,jsp。(PHP并发约500-1500,MySQL 并发约300-1500)。
反向代理,负载均衡。pv2000W以下,都可直接用nginx做代理。
缓存服务。类似 SQUID,VARNISH。
在sever1安装压缩包nginx-1.20.1.tar.gz,解压后进入到nginx源码目录;
src/core存放着nginx的主干部分、基础数据结构和基础设施的源码。
conf目录下由nginx的主配置文件nginx.conf
源码编译三部曲:配置(configure)、编译(make)、安装(make install);
lftp 172.25.254.250 ##可以直接在网上寻找该开源软件
>ls
>cd pub/docs/lamp
>get nginx-1.20.1.tar.gz
>exit
ls
tar zxf nginx-1.20.1.tar.gz ##解压
源码编译,但在编译过程中会有依赖性存在,安装依赖性后需要重新编译。
./configure --help ##查看各模块使用情况
./configure --prefix=/usr/local/nginx
设置安装的路径为/usr/local/nginx,加上需要的功能模块
安装常用功能
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio ##源码编译;设定下载目录同时安装服务,但是失败,需要下载依赖
nginx安装依gcc、openssl-devel、pcre-devel、zlib-devel软件库。
Pcre全称(Perl Compatible Regular Expressions),中文perl兼容正则表达式.
开发包以devel结尾(zlib-devel)
yum install -y gcc
yum install -y pcre-devel
yum install -y openssl-devel
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio ##重新编译configure
在configure执行完后,它会生成一些中间文件,中间文件会放在objs目录下;
Makefile是一种配置文件,定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。
将编译好的文件安装到指定路径,此时objs目录下可以看到 nginx文件。
在我们指定的路径下也能看到编译好的nginx文件。
cd /usr/local/nginx/sbin
./nginx 开启nginx服务
curl -I 172.25.9.1 访问 或firefox:http://172.25.9.1
开启nginx之后查看端口:
关闭nginx服务之后,查看端口:
./nginx -s stop 关闭服务
netstat -antlpe #查看端口
开启nginx服务时需要经常进行目录切换,不方便,我们创建软链接到/usr/local/sbin/(这样在开启nginx服务的时候就不需要进到目录下开启,软连接的方式可以方便开启全局nginx)
nginx -t:检查配置脚本是否运行正常
nginx:启动nginx,并查看端口
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #设定软链接
修改配置文件,瘦身nginx,降低被攻击机会。(先停掉nginx服务)
nginx -s stop
vim ~/nginx-1.20.1/auto/cc/gcc ##关闭c语言编译debug
当需要二次编译nginx时,必须先执行make clean(清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件)
最后执行make install(因为文件已经复制过去,不需要再次复制)
make clean #清空缓存makdfile 在安装目录下执行cd nginx-1.20.1
vim ~/nginx-1.20.1/src/core/nginx.h 修改相关配置使其隐藏版本号以及/ ,提高安全性
//
#define NGINX_VER "nginx"
原本是"nginx/" NGINX_VERSION
//
开启nginx,查看nginx被缩小。
configure ----> make ----> make install 源码编译三部曲
检测语法,并检验,版本号是否被隐藏。
进一步对nginx进行配置,新建nginx用户,通过该用户进行配置,然后重启服务。
cd /usr/local/nginx/conf
useradd -d /usr/local/nginx -M -s /sbin/nologin nginx
vim nginx.conf
///
user nginx;
worker_processes auto;
events {
worker_connections 65535;
}
///
cd /etc/pam.d
vim /etc/security/limits.conf
///
ngnix - nofile 65536 ##最后一行加入
///
nginx -s reload
关闭nginx服务,如果想要使用systemctl来控制nginx,首先需要在服务器上获取nginx.service文件。编辑nginx服务文件,然后刷新服务列表,开启服务。
vim /usr/lib/systemd/system/nginx.service
//
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
**Wants=network-online.target**
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
//
systemctl daemon-reload 刷新服务列表
systemctl enable --now nginx 开机启动nginx
如果不能刷新,则过滤工作端worker,并关闭,然后重新执行。
ps ax | grep nginx
kill -9 worker的id