00-所需工具
xshell:https://www.netsarang.com/zh/downloading/?token=ZlZnVUNsWDJuM0VaZnVPUjZST1dwd0AzYlNteUZwb0dhRlUxRVV4bmNUZ2ZR
xftp:https://www.netsarang.com/zh/downloading/?token=QlBLQUdldk1mUjliSzVQdzczeTVkQUA3R1RiZDFNcGQxOXFHVFAyaGhhREZn
01-uwsgi介紹
uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。Nginx中HttpUwsgiModule的作用是與uWSGI服務器進行交換。 要注意 WSGI / uwsgi / uWSGI 這三個概念的區分。 1. WSGI是一種Web服務器網關接口。它是一個Web服務器(如nginx,uWSGI等服務器)與web應用(如用Flask框架寫的程序)通信的一種規范。 2. uwsgi是一種線路協議而不是通信協議,在此常用於在uWSGI服務器與其他網絡服務器的數據通信。 3. 而uWSGI是實現了uwsgi和WSGI兩種協議的Web服務器。 4. uwsgi協議是一個uWSGI服務器自有的協議,它用於定義傳輸信息的類型(type of information),每一個uwsgi packet前4byte為傳輸信息類型描述,它與WSGI相比是兩樣東西。
02-nginx介紹
Nginx是一個Http和反向代理服務器
什么是反向代理服務器呢?
正向的就是由瀏覽器主動的想代理服務器發出請求,經代理服務器做出處理后再轉給目標服務器
反向的就是不管瀏覽器同不同意,請求都會經過代理服務器處理再發給目標服務器
這其中的區別就是必須經過Nginx反向代理服務器,這就有了使用Nginx的幾個好處:
安全:不管什么請求都要經過代理服務器,這樣就避免了外部程序直接攻擊web服務器
負載均衡:根據請求情況和服務器負載情況,將請求分配給不同的web服務器,保證服務器性能
提高web服務器的IO性能:這個我也沒看懂,總結來說就是請求從客戶端傳到web服務器是需要時間的,
傳遞多長時間就會讓這個進程阻塞多長時間,而通過反向代理,就可以在反向代理這完整接受請求,然后再
傳給web服務器,從而保證服務器性能,而且有的一些簡單的事情(比如靜態文件)可以直接由反向代理處理,不經過web服務器
03-centos7的部署
以全新服務器為例:
yum -y update yum install gcc yum -y install zlib* yum install openssl-devel -y
04-ssh安裝
yum install openssh-server -y service sshd restart #xshell連不上,SSH服務端不允許密碼驗證。 #服務端開啟密碼驗證的方法: vim /etc/ssh/sshd_config 把PasswordAuthentication項為yes 重啟服務 service sshd restart
05-安裝MySQL
#1.安裝 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum install mysql-community-server #2.重啟服務 service mysqld restart # 查看是否開機自啟 執行命令: chkconfig --list | grep mysqld chkconfig mysqld on #3. 設置bind-ip vim /etc/my.cnf 在 [mysqld]: 下面加一行 bind-address = 0.0.0.0 #4.登錄mysql mysql -u root #5. 設置外部ip可以訪問 #mysql中輸入命令: #后面用navicat連接遠程服務器mysql的用戶名和密碼 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; FLUSH PRIVILEGES; #6.設置mysql密碼 進入mysql: set password =password('123456'); #密碼123456 flush privileges;
5.1 卸載MySQL
# 查看是否已安裝mysql 執行命令:yum list installed | grep mysql #yum方式安裝的mysql: 1、yum remove mysql mysql-server mysql-libs compat-mysql51 2、rm -rf /var/lib/mysql 3、rm /etc/my.cnf # 刪除mysql相關文件 提示:該命令是查找mysql的相關文件 執行命令:find / -name mysql 執行命令:rm -rf [上面命令查出的結果目錄] 提示:刪除命令執行完之后,可再使用find / -name mysql 確認是否已經全部刪除 可以回到安裝步驟重新安裝mysql了。
5.2 CentOS7 安裝 MariaDB10.3
# 1. 配置repo文件,通過yum安裝: vi /etc/yum.repos.d/MariaDB.repo # 2. 添加以下內容: # MariaDB 10.3 CentOS repository list - created 2018-06-21 09:11 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB # baseurl = http://yum.mariadb.org/10.3/centos7-amd64 # 修改為國內源 baseurl = http://mirrors.aliyun.com/mariadb/yum/10.3/centos7-amd64/ gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck = 1 # 3. 安裝: sudo yum install MariaDB-server MariaDB-client # 4. 修改數據庫文件目錄: service mysql stop mkdir -p /data/mysqldb #拷貝默認數據庫到新的位置,-a表示將文件屬性一起拷貝 cp -a /var/lib/mysql /data/mysqldb # 5. 修改mysql啟動配置 vim /etc/my.cnf.d/server.cnf # 6. 找到[mysqld],添加以下內容: [mysqld] datadir=/data/mysqldb/mysql socket=/var/lib/mysql/mysql.sock #default-character-set=utf8 character_set_server=utf8 slow_query_log=on slow_query_log_file=/data/mysqldb/slow_query_log.log long_query_time=2 # 7. 創建慢查詢日志文件 touch /data/mysqldb/slow_query_log.log chmod 666 /data/mysqldb/slow_query_log.log # 8. 啟動MariaDB service mysql start # 9. 修改root密碼: mysqladmin -u root password 'root' # 10. root原始密碼存在於:/root/.mysql_secret # 11. 授權ip登錄: grant all on *.* to 'root'@'%' identified by 'password' with grant option; # 12. 啟停命令: service mysql start service mysql stop service mysql restart service mysql status
06-pip和python3.6的安裝
#安裝pip wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate sudo python get-pip.py
# 安裝python3.6 1. 獲取 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz tar -xzvf Python-3.6.2.tgz -C /tmp cd /tmp/Python-3.6.2/ 2. 把Python3.6安裝到 /usr/local 目錄 ./configure --prefix=/usr/local make make altinstall 3. 更改/usr/bin/python鏈接 ln -s /usr/local/bin/python3.6 /usr/bin/python3
07-虛擬環境的安裝
yum install python-setuptools python-devel pip install virtualenvwrapper #編輯.bashrc文件 vim ~/.bashrc #添加進去 export WORKON_HOME=$HOME/.virtualenvs source /usr/bin/virtualenvwrapper.sh #sudo find / -name virtualenvwrapper.sh 查看你的virtualenvwrapper.sh在什么地方 #重新加載.bashrc文件 source ~/.bashrc #虛擬環境保存的路徑 cd ~/.virtualenvs/ (創建的虛擬環境都會保存在這個目錄,前面設置的) #創建指定python版本的虛擬環境方法 mkvirtualenv -p /usr/local/bin/python3.6 workmanage02 workon MxShop #進虛擬環境安裝依賴包 首先 pip freeze > requirements.txt 將本地的虛擬環境安裝包導出來,上傳到服務器 pip install -r requirements.txt #安裝mysqlclient出問題 centos 7: yum install python-devel mariadb-devel -y ubuntu: sudo apt-get install libmysqlclient-dev 然后: pip install mysqlclient
08-安裝git
yum install git git config --global user.name "Your Name" git config --global user.email "youremail@domain.com" cd ~/ && ssh-keygen -t rsa -C "你的郵箱" #提示的信息,直接按enter就行 cd .ssh 把公鑰文件(id_rsa.pub)中的碼復制到github #就可以開始clone代碼了 git clone
09-拉取項目靜態文件
# 在django的setting文件中,添加下面一行內容: STATIC_ROOT = os.path.join(BASE_DIR, "static/") # 運行命令 python manage.py collectstatic
10-安裝uwsgi
1. 進虛擬環境安裝
workon workmanage02
pip install uwsgi
2. 在項目目錄下新建uwsgi.ini文件
[uwsgi] socket =127.0.0.1:8000 chdir = /home/workspace/workamange02 module = workamange02.wsgi master = true processes = 4 vacuum = true virtualenv = /root/.virtualenvs/workamange02 logto = /tmp/mylog.log
[uwsgi] #使用HTTP訪問的端口號, 使用這個端口號是直接訪問了uWSGI, 繞過了Nginx http = :8010 #與外界連接的端口號, Nginx通過這個端口轉發給uWSGI socket = 127.0.0.1:8001 #是否使用主線程 master = true # 項目在服務器中的目錄(絕對路徑) chdir = /home/workspace/workamange02
# Django's wsgi 文件目錄 wsgi-file = /home/workspace/workamange02/workmanage02/wsgi.py
# 最大進程數 processes = 4 #每個進程的線程數 threads = 2 #狀態監聽端口 stats = 127.0.0.1:9191 # 退出時自動清理環境配置 vacuum = true #目錄下文件改動時自動重啟 touch-reload = /home/workspace/workamange02
#Python文件改動時自動重啟 #py-auto-reload = 1 #后台運行並把日志存到.log文件 daemonize = /home/workspace/workamange02/uWSGI.log
11-安裝nginx
這里有安裝方法:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7
# 要添加CentOS 7 EPEL存儲庫,請打開終端並使用以下命令: sudo yum install epel-release # 安裝nginx sudo yum install nginx # Nginx並不是自己開始的。要運行Nginx,請鍵入: sudo systemctl start nginx #可能會用到的命令 service nginx restart service nginx stop service nginx start
11.1 配置文件
在/etc/nginx/conf.d下新workmanage02.conf
# the upstream component nginx needs to connect to upstream django { # server unix:///path/to/your/mysite/mysite.sock; # for a file socket server 127.0.0.1:8000; # for a web port socket (we'll use this first) } # configuration of the server server { # the port your site will be served on listen 80; # the domain name it will serve for server_name 118.190.208.5; # substitute your machine's IP address or FQDN charset utf-8; # max upload size client_max_body_size 75M; # adjust to taste # Django media location /media { alias /home/workspace/workmanage02/media; # 指向django的media目錄 } location /static { alias /home/workspace/workmanage02/static; # 指向django的static目錄 } # Finally, send all non-media requests to the Django server. location / { uwsgi_pass django; include uwsgi_params; } }
配置好后
nginx -t
service nginx restart
12-MySQL數據庫數據傳輸
12.1 遠程連接服務器數據庫mysql
# 解決方法: 網上一大堆解決方法,都是開放端口、給賬號開放遠程連接權限,但都設置了 可還是不行。 原因應該是:在阿里雲安全組添加3306端口規則,把3306端口添加到入方向規則。成功了!
12.2 新建數據庫
12.3 右鍵 點擊數據傳輸
數據傳輸完成,配置也都配置好后,就可以開始訪問了
#創建超級用戶 python manage.py createsuperuser #把uswgi服務開啟 uwsgi --ini uwsgi.ini #訪問 http://你的ip地址/