建议通读文章后,进行安装
前言
在centos上面安装nginx需要的包比较多,而机器又不能连接互联网,这也是一个很淡疼的点,反反复复搞了两天才弄好,本文提供了所需的所有安装文件包含nginx的安装包。
1.下载所需要的文件
本文写于2019年11月,如过了很久您才看到这个文章,相关软件可能已经进行了大版本的更新,带上你的登云梯去下载吧
链接: https://pan.baidu.com/s/1M_7OE1TfXhJ0or-tm1GjSw 提取码: a4rg
在此处安利一个Linux系统安装包的下载地址 https://centos.pkgs.org/,资源非常nice,不过下载速度感人,是时候用上老司机的登云梯了
此处吐槽一下,好多文章中也带安装文件,但是要会员下载,此处省略一些字~
2.扔到服务器并解压
###比如说扔到了/opt目录下
cd /opt
###解压文件
unzip nginx.zip
###进入文件夹
cd nginx
###安装所有rpm包,别管有啥就是一顿安装
rpm -Uvh *.rpm --nodeps --force
执行安装命令后的提示
Preparing... ################################# [100%]
Updating / installing...
1:zlib-1.2.7-18.el7 ################################# [ 4%]
2:libgcc-4.8.5-39.el7 ################################# [ 9%]
3:libstdc++-4.8.5-39.el7 ################################# [ 13%]
4:openssl-libs-1:1.0.2k-19.el7 ################################# [ 17%]
5:libstdc++-devel-4.8.5-39.el7 ################################# [ 22%]
6:pcre-8.32-17.el7 ################################# [ 26%]
7:zlib-devel-1.2.7-18.el7 ################################# [ 30%]
8:libgomp-4.8.5-39.el7 ################################# [ 35%]
9:gcc-4.8.5-39.el7 ################################# [ 39%]
10:gcc-c++-4.8.5-39.el7 ################################# [ 43%]
11:openssl-devel-1:1.0.2k-19.el7 ################################# [ 48%]
12:pcre-devel-8.32-17.el7 ################################# [ 52%]
13:openssl-1:1.0.2k-19.el7 ################################# [ 57%]
Cleaning up / removing...
14:gcc-c++-4.8.5-11.el7 ################################# [ 61%]
15:gcc-4.8.5-11.el7 ################################# [ 65%]
16:openssl-1:1.0.1e-60.el7 ################################# [ 70%]
17:pcre-8.32-15.el7_2.1 ################################# [ 74%]
18:libstdc++-devel-4.8.5-11.el7 ################################# [ 78%]
19:libstdc++-4.8.5-11.el7 ################################# [ 83%]
20:openssl-libs-1:1.0.1e-60.el7 ################################# [ 87%]
21:zlib-1.2.7-17.el7 ################################# [ 91%]
22:libgcc-4.8.5-11.el7 ################################# [ 96%]
23:libgomp-4.8.5-11.el7 ################################# [100%]
3.安装openssl
其实npm包里面已经有openssl了,但不知道为啥安装后没作用,没办法只能再用tar包装一次
###安装到/usr/local下
cd /usr/local
###将文件拷贝过来
cp /opt/nginx/openssl-1.0.2t.tar.gz .
###解压
tar -xvzf openssl-1.0.2t.tar.gz
###进入解压目录
cd openssl-1.0.2t
###检查依赖 没有error就是没问题
./config
###打包 这个时间比较长两分钟多的样子,没有error就是正常接着 install
make
###安装
make install
5.安装nginx
5.1拷贝文件
###安装到/usr/local下
cd /usr/local
###将文件拷贝过来
cp /opt/nginx/nginx-1.16.1.tar.gz .
###解压nginx
tar -zxvf nginx-1.16.1.tar.gz
5.2修改nginx openssl的配置
###进入到openssl配置文件夹
cd nginx-1.16.1/auto/lib/openssl/
###修改conf文件
vi conf
###将39~40行的.penssl去掉
====================================================================================
39 CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
40 CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
41 CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
42 CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
====================================================================================
###修改后
39 CORE_INCS="$CORE_INCS $OPENSSL/include"
40 CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
41 CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
42 CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
5.3执行安装
###进入nginx目录
cd /usr/local/nginx-1.16.1/
###检查 其中的 /usr/local/ssl 就是上一步openssl的安装目录
./configure --user=root --prefix=/usr/local/nginx --with-openssl=/usr/local/ssl --with-http_stub_status_module --with-http_sub_module --with-http_ssl_module --with-mail --with-stream
###打包 没有error既是成功
make
###安装 没有error既是成功
make install
执行检查后的提示
Configuration summary
+ using system PCRE library
+ using OpenSSL library: /usr/local/ssl
+ using system zlib library
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
5.4启动nginx
###初次启动 进入sbin目录
cd /usr/local/nginx/sbin
###执行
./nginx
###关闭防火墙 也有更优雅的方式,开启端口
systemctl stop firewalld
#开机禁用防火墙
systemctl disable firewalld
##或者使用优雅方式
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
6.启用https
6.1配置证书
- 购买证书或者下载免费证书
直接把证书上传到服务器即可,例如/usr/local/openssl_certificate
目录下 - 使用openss生成证书
文本比较长,往后拉一下
openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt
以下为场景实操
执行命令后需要逐步填写以下内容:国家,省份,城市,公司名称,单位,域名,邮箱
[root@yhwch-int-34 sbin]# openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt
Generating a 2048 bit RSA private key
.....................................................................+++
.......................................................................................+++
writing new private key to '/usr/local/ssl/nginx.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN ##CN代表中国
State or Province Name (full name) []:hebei ##省份
Locality Name (eg, city) [Default City]:shijiazhuang ##城市
Organization Name (eg, company) [Default Company Ltd]:zhiaiyahong ##公司名称
Organizational Unit Name (eg, section) []:gaojigongchengshi ##单位
Common Name (eg, your name or your servers hostname) []:www.yhwch.com ##域名
Email Address []:[email protected] ##邮箱
[root@yhwch-int-34 sbin]# cd /usr/local/ssl/ ##去目录查看秘钥是否生成
[root@yhwch-int-34 ssl]# ls ##显示文件列表
bin certs include lib man misc nginx.crt nginx.key openssl.cnf private
6.2开启443端口监听
###进入nginx配置目录
cd /usr/local/nginx/nginx.conf
###编辑conf文件
vi nginx.conf
加入以下内容
server {
listen 443 ssl;
server_name localhost;
# ssl_certificate /usr/local/openssl_certificate/yhwch.com_bundle.crt; ##购买的证书
# ssl_certificate_key /usr/local/openssl_certificate/yhwch.com.key;##购买的证书
ssl_certificate /usr/local/ssl/nginx.crt; ##证书地址
ssl_certificate_key /usr/local/ssl/nginx.key; ##秘钥地址
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
access_log /usr/local/nginx/logs/httpsaccess.log; ##日志
location /yhwch {
proxy_pass http://0.0.0.0:80;
}
location /yhwch/static/{
alias /opt/yhwch/web/static/;
}
location / {
root /opt/yhwch/web;
index index.html index.htm;
}
}
###重启nginx服务
cd /usr/local/nginx/sbin
###重启命令
./nginx -s reload
使用https:ip访问即可 由于是ip访问会提示为不安全的网站,域名的话就会正常
一镜到底
把下面代码中的注释去掉,直接全部复制到系统中执行即可将nginx安装成功,需要将nginx.zip包放到/usr/local目录下
cd /usr/local
#### 解压文件
unzip nginx.zip
#### 安装依赖rpm
cd nginx
rpm -Uvh *.rpm --nodeps --force
#### 安装openssl
cd /usr/local
cp /usr/local/nginx/openssl-1.0.2t.tar.gz .
tar -xvzf openssl-1.0.2t.tar.gz
cd openssl-1.0.2t
./config
make
make install
#### 安装nginx
cd /usr/local
cp /usr/local/nginx/nginx-1.16.1.tar.gz .
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1/auto/lib/openssl/
sed -i "s/\$OPENSSL\/.openssl/\$OPENSSL/g" `grep "$OPENSSL/.openssl" -rl conf`
cd /usr/local/nginx-1.16.1/
./configure --user=root --prefix=/usr/local/nginx --with-openssl=/usr/local/ssl --with-http_stub_status_module --with-http_ssl_module
make && make install
/usr/local/nginx/sbin/nginx
附录
- 参考地址
Nginx下配置Https证书详细过程
linux下如何离线安装nginx - nginx常用命令,均需要进入
/usr/local/nginx/sbin
./nginx
启动nginx,只有在nginx没有启动的情况下可用
./nginx -s reload
重启nginx,只有在nginx启动的情况下可用
./nginx -s stop
关闭nginx,只有在nginx启动的情况下可用 - nginx.conf配置
1.nginx作为前端服务器时,如果前端使用了当下流行的前端框架,可能会出现资源无法加载的情况,这时候是由于静态资源目录未做配置导致资源404,作如下配置/yhwch/static/
是访问网站静态资源时url的目录,/opt/yhwch/web/static/
是静态资源的绝对目录
location / {
root /opt/progress1;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /yhwch/static/{
alias /opt/yhwch/web/static/;
}
##配置二级目录一定要使用 alias属性
location /progress2 {
alias /opt/progress2;
index index.html index.htm;
try_files $uri $uri/ /progress2/index.html;
}
2.nginx作为中转服务器
yhwch
为需要转发的目录,此处注意转发是直接将路径加到proxy_pass的地址之后
如:www.yhwch.com/api/getcode
经nginx处理后实际访问的地址为http://0.0.0.0:80/api/getcode
location /api {
proxy_pass http://0.0.0.0:80;
}
3.nginx来回跳~
当你的域名管理不方便是,可能需要配置二级目录做多个nginx的跳转,只能说这种操作挺蛋疼但是没办法
nginx1
location /next {
proxy_pass http://0.0.0.2:80;
}
nginx2 http://0.0.0.2:80
location /next {
alias /opt/yhwch/web/static/;
}
nginx中只能配置在/
下配置root,二级目录下面需要配置为
alias`
使nginx可以显示目录
location / {
root /var/ftp/pub;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
add_header Cache-Control no-store;
}
4.日志配置
指定日志目录,并将请求时间记录
$request_time
时间指的是从接受请求到数据完全返回的时间,个人理解为完整的请求时间
$upstream_response_time
时间指创建连接到关闭连接,此时间小于request_time
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$upstream_response_time" "$request_time"';
##末尾的main必须指定否则仍旧使用的是默认日志方式
access_log /opt/ylbzj/logs/access.log main;
5.nginx代理邮件服务器
假设要代理腾讯的smtp服务,直接在conf文件末尾加上这个配置,邮件发送地址换成nginx的地址即可
编译的时候一定要带上这两个指令 --with-mail --with-stream
stream{
server{
listen 465;
proxy_pass smtp.qq.com:465;
}
}
6.更多功能待补充~
目前只用到了转发以及静态资源的配置,nginx还可做负载均衡,由于公司在nginx上层做了硬负载所以就没用这个功能~
Happy Ending ~ 祝各位安装顺利