应用场景
公司需要部署的Linux服务器无法连接外网,需要安装nginx。在公司的局域网中,本机电脑(Mac)可以远程连接到Linux服务器,需要把nginx安装包在本机下载好后,上传到服务器去安装,安装过程中会缺失一些包,根据提示在本机下载缺失包,上传到服务器安装。
下载nginx离线包
nginx-1.9.9.tar.gz Mac上传离线压缩包到linux服务器 通过scp命令上传,如
ssh root@ip // 输入密码回车,登录远程服务器成功
使用scp 把本机压缩包上传至Linux服务器
scp /目录/client.zip root@ip:/home/xx目录 // 输入密码,回车,等待...上传成功
linux服务器解压文件
解压 zlib-1.2.11.tar.gz => tar -xvf zlib-1.2.11.tar.gz
初始化和安装
切到安装包路径,执行./configure命令初始化,执行成功后,继续执行make && make install 命令进行安装。
注意⚠️: 由于是内网,执行./configure命令后,可能会缺失一些包,根据提示,我们去本地电脑下载压缩包,上传到内网服务器上,进行解压,初始化,安装,直到执行./configure命令不报错后,才表示初始化成功,再执行make && make install 命令。
配置环境变量
测试是否安装成功
启动Nginx:/usr/local/nginx/sbin/nginx 报以下错误:
1、报错提示/usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory
输入 **ldd (which /usr/local/nginx/sbin/nginx)
提示缺少:
解决办法:
1、首先确认已经安装好pcre 软件(nginx 依赖该软件),"我确认装好了pcre"
2、创建软连接,对于/lib64/* 64位系统来说,输入以下命令:
ln -s /usr/local/lib/libpcre.so.0 /lib64
建立软连接成功后,继续输入 /usr/local/nginx/sbin/nginx 进行测试,回车后没有报错表示安装成功
然后在浏览器中输入服务器ip地址,出现如下界面表示安装成功。
配置文件
切换到cd /usr/local/nginx/conf路径,
vim nginx.conf 例如:nginx部署vue项目
server {
listen 8000;
location /{
autoindex on;
root /home/project/client;
index index.html;
try_files $uri $uri/ @router /index.html;
add_header Cache-Control "no-cache";
add_header X-Frame-Options SAMEORIGIN;
}
location @router {
rewrite ^.*$ /index.html last;
}
location /prod-api/{
rewrite ^/prod-api/(.*) /$1 break;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ip:8080;
}
}
找不到的包
unzip unzip client.zip -bash: unzip: 未找到命令 解决方法: 离线安装包:downloads.sourceforge.net/infozip/unz…
1.tar zxvf unzip552.tar.gz
2.cd unzip-5.52/
3.cp unix/Makefile ./
4.make generic
5. make install
// 执行完后就可以执行 unzip 命令啦
启动和重启
2.6 启动、停止nginx 启动和停止nginx的命令
// 1、先进入nginx的目录
cd /usr/local/nginx/sbin/
// 2、执行命令
./nginx 开启
./nginx -s stop 停止
./nginx -s quit
./nginx -s reload
在执行./nginx命令时出现报错:[root@localhost sbin]# ./nginx nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 出现80端口被占用
解决办法: 杀死80端口进程,执行如下命令:
ps -A | grep nginx
kill -9 pid1
kill -9 pid2
// 杀死对应的两个进程之后, 启动nginx ./nginx 没有报错后,在浏览器中输入地址如:http://ip:8000/ 部署成功啦