# 上線華爲雲服務器部署(彈性雲服務器ECS)html
>環境配置:python
> ubuntu 18.04mysql
> Python 3.6.8(python3.7亦可)linux
> nginx version: nginx/1.14.0 (Ubuntu)nginx
## 1. 購買華爲雲服務器web
文檔 https://support.huaweicloud.com/ecs/index.htmlsql
## 2. 上傳到華爲雲服務器,安裝依賴環境,啓動項目測試shell
#### 1.導出當前項目的依賴環境數據庫
`pip freeze > ./pipinstall.txt`django
#### 2.把數據庫導出
`bookshop.sql`
#### 3.把項目內容上傳到華爲雲服務器
xftp
#### 4.在華爲雲中安裝須要的環境
1. mysql的安裝和配置
```shell
# 安裝mysql
sudo apt-get install mysql-server
sudo apt install mysql-client
sudo apt install libmysqlclient-dev
# 測試進入服務
mysql -uroot -p 空
#建立用戶,
grant all on *.* to root@'%' identified by '123456' with grant option;
# 退出mysql,修改mysql的配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
# 打開文件後 註釋下面的一行
#註釋掉bind-address = 127.0.0.1:
# 重啓服務
service mysql stop
service mysql start
```
2. 當前項目的依賴環境
```shell
# 1.建立虛擬環境,若是沒有安裝則會提醒
python3 -m venv venv
# 2.啓動虛擬環境
source venv/bin/activate
# 3.在虛擬環境中安裝當前項目須要的環境
pip install -r pipinstall.txt
#(venv) root@ecs-5211:/home/py23_bookshop# pip install -r pipinstall.txt
```
3. 注意錯誤
```shell
#error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
apt-get install python3-dev
```
#### 5.在雲服務器中調試項目
1. 啓動服務器
`Python manage runserver 0.0.0.0:8000`
2. 瀏覽器訪問測試
`114.116.200.51:8000`
## 3. 搭建uwsgi啓動項目測試
#### 1.安裝uwsgi
`sudo pip3 install uwsgi --upgrade`
#### 2.安裝完成後使用命令測試
先進入項目目錄,啓動命令
```shell
uwsgi --http :8000 --chdir /home/py23_bookshop/web --module web.wsgi
# --home 指定virtualenv 路徑,若是沒有能夠去掉。web.wsgi 指的是 web/wsgi.py 文件
```
#### 3.訪問測試,啓動成功後
`114.116.200.51:8000`
#### 4. 配置uwsgi文件啓動項目
#### 第一步:建立一個uwsgi.ini文件
#### 第二步:在django項目同級目錄建立script目錄,用於存放配置腳本等等
/home/alipay/web/
# script/ web/ db.sqlite3 manage.py uwsgi.ini
#### 第三步:編輯uwsgi.ini文件內容以下: 目錄參考我的目錄進行修改
```shell
# uwsig使用配置文件啓動
[uwsgi]
# 項目目錄
chdir=/home/py23_bookshop/web/
# 指定項目的application
module=web.wsgi:application
# 指定sock的文件路徑
socket=/home/py23_bookshop/web/script/uwsgi.sock
# 進程個數
workers=5
pidfile=/home/py23_bookshop/web/script/uwsgi.pid
# 指定IP端口
http=0.0.0.0:8000
# 指定靜態文件
#static-map=/static=/home/py23_bookshop/web/static/
# 啓動uwsgi的用戶名和用戶組
uid=www-data
gid=www-data
# 啓用主進程
master=true
# 自動移除unix Socket和pid文件當服務中止的時候
vacuum=true
# 序列化接受的內容,若是可能的話
thunder-lock=true
# 啓用線程
enable-threads=true
# 設置自中斷時間
harakiri=30
# 設置緩衝
post-buffering=4096
# 設置日誌目錄
daemonize=/home/py23_bookshop/web/script/uwsgi.log
# 權限
chmod-socket = 666
chown-socket = www-data
```
#### 5.執行命令,啓動項目測試
uwsgi --ini uwsgi.ini
在瀏覽器訪問127.0.0.1:8000
## 4,安裝nginx
#### 1.安裝nginx
`sudo apt-get install python-dev nginx`
#### 2.安裝完成後,能夠使用經過瀏覽器訪問公網IP測試
#### 3.建立項目的配置文件,或者直接修改原nginx配置文件均可以
`vim /etc/nginx/sites-available/webtest.conf`
```shell
server {
listen 80;
server_name localtion;
charset utf-8;
client_max_body_size 75M;
location / {
uwsgi_pass unix:///home/py23_bookshop/web/script/uwsgi.sock;
include /etc/nginx/uwsgi_params;
}
#location /media {
# alias /path/to/project/media;
#}
location /static {
alias /home/py23_bookshop/web/static/;
}
}
```
#### 4.建立完配置文件後建立軟鏈接
`sudo ln -s /etc/nginx/sites-available/webtest.conf /etc/nginx/sites-enabled/webtest.conf`
#### 5.啓動nginx,從新加載配置文件
`nginx -s reload`
注意:
1.給當前項目設置訪問權限。www-data
2.注意在nginx的配置中uwsgi_pass這一項 uwsgi_pass unix:///home/yc/web/script/uwsgi.sock; 它須要找到你在啓動uwsgi後的sock文件,而且要注意權限
3.在使用uwsgi --ini uwsgi.ini啓動後會建立 .sock文件 那麼在後面更新代碼時不須要把 script目錄下的文件都刪除 只須要重啓便可 uwsgi --reload xxx.pid