原文轉載自「劉悅的技術博客」v3u.cn/a_id_72python
一直以來想寫一篇完整的在阿里雲服務器上部署Django服務結合uwsgi,而且經過nginx作反向代理。由於網上的攻略魚龍混雜,加上技術不斷更新,一些年代久遠的文章很容易讓人在部署的過程當中掉坑裏,沒法自拔,因此本篇文章以最新的阿里雲服務器centos7.6爲背景,徹底闡述如何部署,親測可用,其實要說難點徹底沒有,只要循序漸進,就不會有問題。mysql
當你購買了阿里雲的ecs,涉及ecs的有兩個密碼,必定要搞清楚,一個密碼是遠程連接密碼,也就是經過瀏覽器鏈接服務器的密碼,另一個是實例密碼,這個密碼就是ecs的root密碼,通常狀況下,咱們常常用到的是實例密碼。nginx
與此同時,須要設置一下安全組策略,將一些必要的端口暴露出來,不然會被攔截c++
前置操做完成,就能夠進行軟件的安裝了,能夠經過一些三方的ssh軟件進行鏈接,win下面流行的putty,xshell,moba等,這裏推薦使用moba,能夠語法高亮而且自動記住密碼web
安裝python3 和 django 以及一些django擴展redis
yum install epel-release
yum install python36
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
安裝django
複製代碼
pip3 install pymysql
pip3 install pillow
pip3 install pycryptodome
pip3 install cryptography
pip3 install Django==2.0.4
pip3 install djangorestframework
pip3 install django-cors-headers
pip3 install celery
pip3 install celery-with-redis
pip3 install django-celery
複製代碼
pip3 install dwebsocket
複製代碼
安裝opencv-python
複製代碼
複製代碼
yum install numpy opencv* pip3 install opencv-python yum whatprovides libstdc++.so.6 yum install libstdc++-4.4.7-3.el6.i686 yum install libSM-1.2.2-2.el7.x86_64 --setopt=protected_multilib=falsesql
複製代碼
新建工程,而且測試mongodb
django-admin startproject mypro
cd mypro
python3 manage.py runserver 0.0.0.0:8000
複製代碼
安裝mysqlshell
wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-community-server
#啓動服務
systemctl start mysqld
#查看服務狀態
systemctl status mysqld
查看數據庫密碼
grep 'temporary password' /var/log/mysqld.log
複製代碼
而後利用這個密碼進入mysql命令行 mysql -uroot -p查到的密碼
SET PASSWORD = PASSWORD('Admin123!');
設置遠程登陸
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin123!' WITH GRANT OPTION;
flush privileges;
vim /etc/my.cnf
在[mysqld]下面添加,不須要分號
字符集:注意是utf8而不是utf-8!
character-set-server=utf8
這時候使用show variables like 'char%';就能夠查看到字符集都是utf8了
sql支持group by語句
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
設置時區爲東八區
default-time_zone = '+8:00'
重啓服務
systemctl restart mysqld
設置開機啓動
systemctl enable mysqld
systemctl daemon-reload
若是須要更改成簡單的密碼
1.中止mysql服務
systemctl stop mysqld.service
2.修改配置文件無密碼登陸
vim /etc/my.cnf
在最後加上
skip-grant-tables
保存
3.啓動mysql
systemctl start mysqld.service
4.登陸mysql
mysql -u root
注意這裏不要加-p
5.修改密碼,mysql5.7用此語法
use mysql;
update mysql.user set authentication_string=password('123456') where user='root' ;
6.回到第二部把剛加的那句刪掉
保存,重啓mysql就能夠了
複製代碼
測試mysql服務數據庫
安裝redis
yum install redis
啓動服務
systemctl start redis
查看版本號
redis-cli --version
設置開機啓動
systemctl enable redis.service
複製代碼
測試redis服務
安裝mongodb
vim /etc/yum.repos.d/mongodb-org-3.4.repo
#添加如下內容:
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=0
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
清空緩存
yum makecache
安裝
yum -y install mongodb-org
啓動服務
systemctl start mongod.service
中止服務
systemctl stop mongod.service
查看服務狀態
systemctl status mongod.service
重啓服務
systemctl restart mongod.service
複製代碼
測試mongo
安裝nginx
#設置源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
#安裝
yum install -y nginx
#啓動服務
systemctl start nginx.service
#關閉服務
systemctl stop nginx.service
#開機自啓
systemctl enable nginx.service
#修改配置文件
vim /etc/nginx/conf.d/default.conf
改爲下面的配置
server {
listen 80;
server_name localhost;
access_log /root/myweb_access.log;
error_log /root/myweb_error.log;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_param UWSGI_SCRIPT mypro.wsgi;
uwsgi_param UWSGI_CHDIR /root/mypro;
}
location /static {
alias /root/mypro/static;
}
}
複製代碼
設置項目權限
chmod -R 755 /root/mypro
複製代碼
#修改配置
vim /etc/nginx/nginx.conf
將第一行改成 user root;
複製代碼
而後重啓nginx
複製代碼
測試nginx服務,這裏注意下,在不修改nginx配置文件的時候纔會出現下面的歡迎頁面,若是修改了之後是不能訪問默認歡迎頁面的
複製代碼
![](https://v3u.cn/v3u/Public/js/editor/attached/image/20190505/20190505115535_20740.png)
複製代碼
安裝uwsgi
uWSGI自己也是web服務器,但由於性能不高,經過nginx中轉可以發揮更好的效果
安裝依賴
yum install python36-devel
安裝
pip3 install uwsgi
軟鏈接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
進入項目目錄啓動服務
uwsgi --http :8000 --module mypro.wsgi
效果和 python3 manage.py runserver 0.0.0.0:8000一致
熱啓動
uwsgi --http :8000 --module mypro.wsgi --py-autoreload=1
進入項目,編寫uwsgi.ini配置文件 vim mypro_uwsgi.ini
複製代碼
複製代碼
[uwsgi]
chdir = /root/mypro module = mypro.wsgi master = true processes = 3 socket = 0.0.0.0:8000 vacuum = true pythonpath = /usr/bin/python3 pidfile = /root/mypro/mypro.pid daemonize = /root/mypro/uwsgi.log
複製代碼
啓動項目,這裏須要注意下,若是你想用uwsgi獨立訪問網站,就須要把上面配置文件中的socket改爲http,若是想用nginx代理,就寫成socket
uwsgi --ini mypro_uwsgi.ini
後臺啓動
uwsgi -d --ini mypro_uwsgi.ini
複製代碼
殺死和關閉 uwsgi服務
複製代碼
killall -s INT /usr/local/bin/uwsgi
複製代碼
中止服務
複製代碼
uwsgi --stop mypro.pid
複製代碼
重載服務
複製代碼
uwsgi --reload mypro.pid
查看服務
ps aux|grep uwsgi
複製代碼
最後,nginx經過監聽80端口反向代理uwsgi啓動的django服務,訪問網站進行測試
大功告成
原文轉載自「劉悅的技術博客」 v3u.cn/a_id_72