不依賴第三方服務搭建網站服務器及功能html
Nginx不直接處理請求,而是在雲主機中有一個Real Server,Nginx只是把請求轉發給Real Server,等待Real Server請求處理完成後,再將請求返回給客戶端python
在環境中存在 Nginx, Real Server No.1, Real Server No.2......
Nginx同樣執行請發轉發,可是在 Nginx 挑選 Real Server 的時候,權重是不同的,Nginx 中本身的一套邏輯,這套邏輯就是爲了負載均衡nginx
假設:Real Server No.1 的權重是3,Real Server No.2 的權重是1,在4個請求過來後,極可能 Real Server No.1 會收到3個請求,Real Server No.2會收到一個請求sql
yum install nginx
複製代碼
sudo nginx
複製代碼
判斷是否啓動成功
在瀏覽器中輸入公網的IP,出現以下的頁面則爲啓動成功 django
快速中止Nginxubuntu
sudo nginx -s stop
複製代碼
與上面的 stop 相比會更加優雅一下vim
sudo nginx -s quit
複製代碼
在修改完配置後執行該命令centos
sudo nginx -s reload
複製代碼
sudo nginx -s reopen
複製代碼
cd /etc/nginx/
主配置文件:nginx.conf
複製代碼
配置存在層級關係瀏覽器
# nginx.conf 五大配置域相關層次關係
events {
...
}
http {
...
upstream {
...
}
server {
...
location {
...
}
}
}
# mail {
# ...
# }
複製代碼
全稱:Web Server Gateway Interface
是 Web Server 和 Web Application 通訊的規範安全
1.查找python的位置:
whereis python
複製代碼
2.安裝相關包,用於下載編譯python3
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
複製代碼
3.默認的,centos7也沒有安裝pip
#運行這個命令添加epel擴展源
yum -y install epel-release
#安裝pip
yum install python-pip
複製代碼
4.用pip裝wget
pip install wget
複製代碼
5.用wget下載python3的源碼包
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
複製代碼
6.手動安裝
#解壓
xz -d Python-3.7.0.tar.xz
tar -xf Python-3.7.0.tar
#進入解壓後的目錄,依次執行下面命令進行手動編譯
./configure prefix=/usr/local/python3
make && make install
複製代碼
7.添加軟連接
#將原來的連接備份
mv /usr/bin/python /usr/bin/python.bak
#添加python3的軟連接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python
#測試是否安裝成功了
python -V
複製代碼
8.更改yum配置,由於其要用到python2才能執行,不然會致使yum不能正常使用
vi /usr/bin/yum
# 把 #! /usr/bin/python修改成#! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
# 把 #! /usr/bin/python 修改成#! /usr/bin/python2
複製代碼
9.修改pip的python版本
原先的pip文件是以python2爲默認版本
查找pip的位置
whereis pip => /usr/bin/pip # 這裏面會有不少其餘的pip,好比pip2,pip3,pip3.6等
vim /usr/bin/pip
#!/usr/bin/python2 ==> #!/usr/bin/python3
複製代碼
1.經過pip安裝 uWSGI
pip install uwsgi
複製代碼
若是出現 致命錯誤:Python.h:沒有那個文件或目錄
執行以下命令
yum install libffi-devel -y
複製代碼
2.添加軟鏈接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/sbin/uwsgi
複製代碼
將配置經過命令行寫入,進而啓動
uwsgi --chdir xxxx --socket :80 --max-requests 5000 --processes 4 --module xxx.wsgi
--chdir xxxx (指定 uwsgi 的應用目錄)
--socket :80 (指定端口)
--max-requests (最大請求數)
--processes (處理的進程數)
--module (指定具體的wsgi模塊)
複製代碼
1.建立 uwsgi 的配置文件
vim uwsgi-demo.ini
複製代碼
2.寫入配置文件
[uwsgi]
chdir = /xxxx/xx
http-scoket = :80
max-requests = 5000
processes = 4
module = xxx.wsgi
複製代碼
3.經過命令行執行 wsgi 的配置
uwsgi --ini uwsgi-demo.ini
複製代碼
1.建立一個文件夾
mkdir deployment
cd deployment
複製代碼
2建立Python文件,定義uWSGI應用
touch uwsgi_test.py
複製代碼
3.寫入相關配置
def application(env, start_response):
start_response('200 OK', [('Content-type', 'text/html')])
return [b'Hello World, Hello uWSGI']
複製代碼
4.運行 uwsgi
uwsgi --http :8000 --wsgi-file uwsgi_test.py
複製代碼
1.修改 django 的 setting
ALLOWED_HOSTS = ['*'] # 開啓全部人均可以訪問
複製代碼
找到 django 目錄下的 wsgi文件執行 django_deployment.wsgi
爲對應django項目下的文件相對路徑
uwsgi --http :8000 --module django_deployment.wsgi
複製代碼
在django
目錄中建立一個配置文件
touch django-uwsgi.ini
複製代碼
修改裏面的內容
[uwsgi]
chdir = /root/deployment/xianshangbushuceshi/django_deployment
module = django_deployment.wsgi
http-socket = :8000
master = True
processes = 4
threads = 1
vacuum = True
複製代碼
啓動 uwsgi 服務
uwsgi --ini django-uwsgi.ini
複製代碼
優化:改成後臺啓動,將日誌打印到日誌文件中
將django-uwsgi.ini
修改成
[uwsgi]
chdir = /root/deployment/xianshangbushuceshi/django_deployment
module = django_deployment.wsgi
http-socket = :8000
master = True
processes = 4
threads = 1
vacuum = True
# backend run uwsgi
daemonize = %(chdir)/log/uwsgi-8000.log
log-maxsize = 1024*1024*1024
pidfile = %(chdir)/pid/uwsgi-8000.pid
複製代碼
在對應目錄建立相關的日誌文件夾存放日誌文件
mkdir log
mkdir pid
複製代碼
啓動 uwsgi 服務
uwsgi --ini django-uwsgi.ini
複製代碼
中止 uwsgi 服務
uwsgi --stop pid/uwsgi-8000.pid
複製代碼
查看相關的日誌log
tail -f uwsgi-8000.log
複製代碼
查看相關的進程id pid
cat uwsgi-8000.pid
複製代碼
查看進程
拿到進程 id 以後,13290是個人進程id
ps -aux | grep 12390
複製代碼
uwsgi --ini django-uwsgi.ini
複製代碼
進入 nginx 的配置目錄
cd /etc/nginx
複製代碼
注意該目錄下的文件都是須要root權限才能夠修改,若是當前不是root的話能夠切換成root
sudo su
複製代碼
修改nginx.conf
...
http {
...
upstream uwsgi {
server 127.0.0.1:8000 # 我這裏django項目是經過8000端口啓動的因此就映射到:8000
}
server {
...
listen 80 default_server;
listen [::]:80 default_server;
server_name .actoress.xyz; # 這裏配置的是解析到該服務器的域名,前面加 . 表示所有二級域名
charset utf-8;
access_log /var/log/nginx-uwsgi.log; # 添加日誌配置
location / {
proxy_pass http://uwsgi; # 映射到反向代理
}
# 配置靜態文件尋址目錄
location /static {
alias /home/ubuntu/jarvis/deployment/django_deployment/static;
}
...
}
}
...
複製代碼
添加靜態文件尋址目錄
在 django.settings.py
文件中
# 最後一行添加
STATIC_OOT = os.path.join(BASE_DIR, 'static/')
複製代碼
執行收集靜態文件
python manage.py collectstatic
複製代碼