官网:http://nginx.org/
这里以1.20.2为例
Nginx是C语言写的 如果Linux系统上没有安装C编译环境 先执行下面命令
yum install -y gcc automake autoconf libtool make
如果不确定 可以使用命令查看 命令格式 rpm -q xxx 例如
说明有C编译环境
安装前需要安装4个依赖包
1.pcre
2.zlib
3.openssl
4.gd-devel(这个处理图片)
如果环境不能联网,建议下载这4个压缩包 然后U盘拷贝进来或其他方式
例如:将pcre压缩包下载下来 放到指定目录
然后解压: tar -zxvf pcre-xxx.tar.gz 表示解压到当前目录
或者
tar -zxvf pcre-xxx.tar.gz -C /xxx/xxx 表示解压到某个目录
进入解压后的目录 cd 你解压的目录
./configure 该命令是编译命令
然后
make && make install 编译并安装
在联网环境下 执行下面4条命令安装依赖 -y 标志会自动回答所有提示,直接进行安装,而不需要用户确认。
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
yum -y install gd gd-devel
也可以一次安装4个依赖
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel install gd gd-devel
我安装了gd 成功
创建一个目录
mkdir /usr/local/develop
cd /usr/local/develop 进入目录
wget http://nginx.org/download/nginx-1.20.2.tar.gz 这条命令是直接下载 也可以下载后传到
Linux的目录
那这里就把刚才下载的拖进去
tar -zxvf nginx-1.20.2.tar.gz -C /usr/local/develop/ 解压到指定目录
解压完成 可以刷新下
然后进入目录
cd nginx-1.20.2/
执行 ./configure 这个命令用于准备软件编译所需的环境。
执行后有点错误,可能是pcre版本原因
我有重新安装了下 pcre依赖
yum -y install pcre pcre-devel
再次 执行 ./configure
然后执行
make && make install
安装完成之后 /usr/local下会自动创建一个nginx
cd /usr/local/ngin
启动nginx
cd /usr/local/nginx/sbin
./nginx 启动nginx
ps -ef|grep nginx 查看Nginx进程
进入nginx的配置文件
cd /usr/local/nginx/conf
里面有个nginx.conf 配置文件
vim nginx.conf 可以对它进行查看编辑
按a键 或者i 键盘 可以编辑 如下 这样就可以编辑了
按Esc 输入 :wq 回车保存并退出 输入:q! 回车不保存并退出
firewall-cmd --list-all //查看防火墙当前规则
表示防火墙工具没有在系统上运行
sudo systemctl start firewalld 启动防火墙
sudo systemctl enable firewalld 设置防火墙开机自启
此时再次访问服务器 已经无法访问
再次查看
firewall-cmd --list-all
应该是没有开放任何端口
firewall-cmd --query-port=端口/tcp //查看某个端口有没有被放出去
开放指定的端口号码
如果没有 --permanent 代表临时开放, 重启后就不开放了
有–permanent 代表永久开放,除非手动关闭
firewall-cmd --permanent --add-port=80/tcp --permanent //一次放一个端口
firewall-cmd --permanent --add-port=80-90/tcp firewall-cmd --permanent --add-port=80/tcp --permanent //一次放一个区间的端口
firewall-cmd --reload //重启防火墙规则
或者systemctl restart firewalld//重启防火墙
firewall-cmd --permanent --remove-port=80/tcp //关闭端口
firewall-cmd --permanent --list-ports //查看目前放出去的所有端口
注意 开放了80端口 只针对http访问 如果是https 要开放443端口
在nginx sbin目录
cd /usr/local/nginx/sbin
./nginx 启动命令
./nginx -v 查看版本号
关闭命令
./nginx -s stop
启动命令
如果说你改了nginx conf 下的 nginx.conf配置文件
需要重新加载nginx.conf
进入 nginx目录
cd /usr/local/nginx/sbin
./nginx -s reload 重启nginx
配置Nginx环境变量 不然这些命令都要在sbin目录下
vim /etc/profile
修改下
刷新配置
source /etc/profile
这样无论你在哪个目录 都可以启动Nginx
这样 任何目录下
nginx -v 查看命令
nginx 就可以可以直接启动
nginx -s stop 就可以直接关闭
nginx -s reload 就可以直接重启 注意 nginx -s reload需要在已经启动的情况下重启
关于Nginx的配置文件 路径 /usr/local/nginx/conf/nginx.conf
#配置worker进程运行用户 nobody也是一个linux用户,一般用于启动程序,没有密码
user nobody;
#配置工作进程数目,根据硬件调整,通常等于CPU数量或者2倍于CPU数量
worker_processes 1;
#配置全局错误日志及类型,[debug | info | notice | warn | error | crit],默认是error
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid; #配置进程pid文件 放pid号,每次都会变
###====================================================
#配置工作模式和连接数
events {
#上线是65535
worker_connections 1024; #配置每个worker进程连接数上限,nginx支持的总连接数就等于worker_processes * worker_connections
}
###===================================================
#配置http服务器,利用它的反向代理功能提供负载均衡支持
#nginx.conf 文件可以配置多个 http {} 段落,每个 http {} 都可以配置多个 server {}。这样可以实现多个虚拟主机和不同的服务。例如:
http {
#配置nginx支持哪些多媒体类型,可以在conf/mime.types查看支持哪些多媒体类型
include mime.types;
#默认文件类型 流类型,可以理解为支持任意类型
default_type application/octet-stream;
#配置日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#配置access.log日志及存放路径,并使用上面定义的main日志格式 如果下面这个打开,上面配置日志格式也需要打开
#因为有个main变量引入的是上面的配置日志格式 进这个http就会记录日志 而server里的是进入server才记录日志
#access_log logs/access.log main;
sendfile on; #开启高效文件传输模式
tcp_nopush on; #防止网络阻塞 上线后打开
#keepalive_timeout 0;
keepalive_timeout 65; #长连接超时时间,单位是秒
gzip on; #开启gzip压缩输出 上线后打开
###-----------------------------------------------
#配置虚拟主机 一个http{}内可以有多个server 但是监听端口和server_name不能完全相同
server {
listen 80; #配置监听端口
server_name localhost; #配置服务名
#charset koi8-r; #配置字符集 koi8-r是俄罗斯编码
#access_log logs/host.access.log main; #配置本虚拟主机的访问日志 只有进这个虚拟主机才会有的日志
#默认的匹配斜杠/的请求,当访问路径中有斜杠/,会被该location匹配到并进行处理
#location /是一个匹配所有请求路径的URI
location / {
#root是配置服务器的默认网站根目录位置,默认为nginx安装主目录下的html目录
root html;
#配置首页文件的名称
index index.html index.htm;
}
#error_page 404 /404.html; #配置404页面
# redirect server error pages to the static page /50x.html
#error_page 500 502 503 504 /50x.html; #配置50x错误页面
#精确匹配 跟路径是/50x.html的时候匹配 转到nginx安装目录 的html文件 找50x.html
#root指 nginx的安装目录 如果是root /html 应该是Linux下的根目录下的html
location = /50x.html {
root html;
}
#PHP 脚本请求全部转发到Apache处理
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
#PHP 脚本请求全部转发到FastCGI处理
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
#禁止访问 .htaccess 文件
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
#配置另一个虚拟主机
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
#配置https服务,安全的网络传输协议,加密传输,端口443,运维来配置
#
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}