4.安装nginx
安装gcc gcc是用来编译下载下来的nginx源码,安装gcc和c++编译器(当然以下都是在切换到root用户下的)
yum -y install gcc gcc-c++
centOS安装依赖
yum -y install make gcc zlib zlib-devel openssl openssl-devel pcre pcre-devel
安装Nginx
yum install -y nginx
查看nginx是否启动 命令: ps -ef|grep nginx
使用命令 kill -QUIT pid(nginx进程号) 杀掉进程 或者使用pkill -9 nginx 杀死所有nginx进程。然后用以下代码检查安装是否正确。
nginx -c /etc/nginx/nginx.conf #检查配置是否正确
nginx -t
接着在打开配置文件/etc/nginx/nginx.conf 拖到最后,同之前supervisor一样将include改为如下(忘记需不需要改了反正最终是这样的)
接着在/etc/nginx/conf.d(没有的创建一下)下创建conf文件添加如下代码
upstream tornadoes {
server 127.0.0.1:8001;
#server 127.0.0.1:8006;
#server 127.0.0.1:8008;
#server 127.0.0.1:8009;
}
server {
listen 8011;
server_name 127.0.0.1; # IP填上你的服务器IP地址或域名,如果是本地,就是127.0.0.1
# 将Nginx作为代理服务器
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme; # 协议 http https
proxy_pass http://tornadoes;
#以下是一些反向代理的配置(可选择性配置)
#proxy_redirect off;
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
#proxy_set_header X-Forwarded-For $remote_addr;
#proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
#proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
#proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
#proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
#proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
#proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
#proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
client_max_body_size 100m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 100m; #缓冲区代理缓冲用户端请求的最大字节数
}
}
这段代码可能会在最后启动时候有点问题,但是直接把文件复制过去是没问题的。
然后,在终端输入:
pkill -9 nginx
nginx -c /etc/nginx/nginx.conf
启动反向代理。(之前还用过 systemctl start nginx 来启动代理,但是一直启动不起来,现在想想,应该是跟supervisor一样的问题,没有用nginx -c 启动配置,systemctl start nginx用不了(还有stop等等))。
其中还存在着当我用 server 127.0.0.1:8001;server 127.0.0.1:8002;server 127.0.0.1:8003; server 127.0.0.1:8004;四个服务反向代理为127.0.0.1:8011后项目会卡在中间一个步骤。查看日志发现是由于代码中两个接口,一个是上传文件到服务器,另一个是从服务器拿到文件进行处理。我要判断文件是不是同一个,却发现前后名字不同而报错。当我只有 server 127.0.0.1:8001反向代理为127.0.0.1:8011却不出现这个问题。
5.关闭防火墙
这样配置完成如果不出问题,你就在本地可以打开127.0.0.1:8011网页,但是却不能在网内其他电脑打开,这是由防火墙的问题
只要运行如下代码即可(这三个也不知道有没有用)
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
最后我是运行了
systemctl stop firewalld
systemctl disable firewalld
之后便可以在其它电脑上访问了。
参考:https://blog.csdn.net/qq_27755287/article/details/80247561
https://blog.csdn.net/zql3315/article/details/54924689
https://blog.csdn.net/Sweet_Buns/article/details/79093543
https://www.cnblogs.com/moxiaoan/p/5683743.html
6.补充
由于我的项目代码是虚拟环境python3中运行的,在安装相应的包的时候首先要激活到环境中在终端中输入如下代码即可(随时激活的方式):
source /root/ENV/python3/bin/activate
其中/root/ENV/python3 是虚拟环境路径。退出python3环境系列1中已经说明。
到此处初步部署结束。千万注意是centos7下的,其他liunx系统可能会有些不同。
12月4日补充和建议
根据上面步骤部署出来的服务权限会高,如果是简单的服务没问题,但是一到复杂的项目就会因为权限出现问题,要了解具体可以看我之后的博文。
防火墙这里最能体现我是小白。防火墙不要关,只需要开放你要用的端口号即可具体参考
https://www.cnblogs.com/eaglezb/p/6073739.html
https://blog.csdn.net/lkp1603645756/article/details/82629839
ps2019年5月22日添加:
ubuntu 开启防火墙/开启端口
查看本地端口开启情况:sudo ufw status
关闭防火墙:sudo ufw disable(防火墙在系统启动时自动禁用)
开启防火墙,允许访问特定端口:sudo ufw enable,sudo ufw allow 81
不允许访问特定端口:sudo ufw deny 81
参考:https://blog.csdn.net/m0_37315653/article/details/83149067