1. 关于网页
Nginx
nginx命令
安装: sudo apt-get install nginx
启动:sudo service nginx start
重启:sudo service nginx restart
停止:sudo service nginx stop
测试:sudo service nginx configtest
2. 部署步骤
(1)安装nginx
// 用yum来安装
yum install nginx -y
启动 nginx:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
(2)部署网页
Nginx网页的地址:
/usr/share/nginx/html
可以在浏览器中使用 ip地址/网页名 来打开该网页。
启动好的nginx
服务器默认访问的是它自己的目录,即/usr/share/nginx/html
目录,可以在/etc/nginx/nginx.conf
配置文件中配置你自己的项目目录,并让nginx
正确访问。
(3)python代码部署
a. 在原来项目中,把需要的python包进行罗列:
>pip freeze > requirements.txt
然后,把这文件上传到服务器中。
b. 在服务器端新建一个虚拟环境:
# pip install virtualenv
# virtualenv aiforgoodmusic (这里虚拟环境名)
# cd aiforgoodmusic
# source ./bin/activate (激活虚拟环境)
# pip install -r /usr/share/nginx/html/requirements.txt (在虚拟环境中安装必须的python包)
查看是否安装成功:
# pip list
(4) Nginx配置文件修改
/etc/nginx/nginx.conf
文件修改配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
// 修改root默认目录
root /data/www;
include /etc/nginx/default.d/*.conf;
location / {
// 修改nginx在path为'/’下的访问目录
root /data/www
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
把项目放置到data/www
文件夹中。
值得注意的是,配置文件的目录要正确
查看状态:
[root@b-w-1 ]# systemctl status nginx.service
● nginx.service - The NGINX HTTP and reverse proxy server
Loaded: loaded (/etc/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2020-12-02 00:39:58 CST; 6min ago
Process: 3817 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=0/SUCCESS)
Process: 3824 ExecStart=/etc/nginx/sbin/nginx -c /etc/nginx/conf/nginx.conf (code=exited, status=0/SUCCESS)
可以看到这里的nginx配置文件的目录是在:/etc/nginx/conf/nginx.conf
!!!!
(5)多项目部署
如果有不同的项目,可以采用端口去监控这些项目,然后Nginx通过监听端口,转发不同项目:
server {
listen 80;
server_name example.org www.example.org;
root /var/www/port80/
}
server{
# project 2
listen 80;
server_name www.example2.org;
location / {
root /data/project/;
index /data/project/templates/home.html index.htm;
proxy_pass http://localhost:5610;
}
}
如上面的,Nginx 监听 www.example2.org
的80端口(也就是http的端口),如果网页有请求,会把请求转发给服务器,并把服务器本地的5610端口的回应转发到 www.example2.org
网页。
(6) Https 和 Http 同时部署
http {
#...
upstream backend.example.com {
server backend1.example.com:443;
server backend2.example.com:443;
}
server {
listen 80;
server_name www.example.com;
#...
location /upstream {
proxy_pass https://backend.example.com;
proxy_ssl_certificate /etc/nginx/client.pem;
proxy_ssl_certificate_key /etc/nginx/client.key;
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
proxy_ssl_ciphers HIGH:!aNULL:!MD5;
proxy_ssl_trusted_certificate /etc/nginx/trusted_ca_cert.crt;
proxy_ssl_verify on;
proxy_ssl_verify_depth 2;
proxy_ssl_session_reuse on;
}
}
server {
listen 443 ssl;
server_name backend1.example.com;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/certs/server.key;
ssl_client_certificate /etc/ssl/certs/ca.crt;
ssl_verify_client optional;
location /yourapp {
proxy_pass http://url_to_app.com;
#...
}
server {
listen 443 ssl;
server_name backend2.example.com;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/certs/server.key;
ssl_client_certificate /etc/ssl/certs/ca.crt;
ssl_verify_client optional;
location /yourapp {
proxy_pass http://url_to_app.com;
#...
}
}
}
注意:Nginx配置文件修改后,需要重启Nginx。
参考: