本人所用為騰訊雲服務器
外部工具使用XFTP上傳文件
下列步驟為本人親測,適合新手
1. 更新系統軟件包
yum update -y
2. 安裝軟件管理包和可能使用的依賴
yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel
3. 下載Pyhton3到/usr/local 目錄
注意:所有環境盡量使用跟項目一致版本進行安裝,我這邊使用得3.9.4
- https://www.python.org/ftp/python/3.9.4/下載所需要的版本
- 通過Ftp上傳到目錄-> 解壓tar -zxvf Python-3.9.4.tgz ->進入Python包的路徑cd Python-3.9.4/
- 編譯安裝到自己指定路徑 ./configure --prefix=/usr/local/python3
- 安裝python3 依次執行命令:make-> 命令:make install
- 安裝完成之后,建立軟鏈接,添加變量,這樣的好處是方便我們在終端中能夠直接使用python3
命令:ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3 - Python3安裝完成之后pip3也一塊安裝完成,不用再單獨安裝 這里給pip3也建立軟鏈接
命令:ln -s /usr/local/python3/bin/pip3.9 /usr/bin/pip3 - 查看是否成功安裝Python3和pip3 依次執行命令:python3 -V -> pip3 -V
4. 安裝virtualenv虛擬環境
- pip3 install virtualenv
- 建立軟連接ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
- 安裝成功在根目錄下建立文件夾,主要用於存放env 命令:mkdir -p /data/env
- 切換到/data/env/下,創建虛擬環境。命令:virtualenv --python=/usr/bin/python3 djangoPJenv
注意:這里的djangoenv名稱可以自己定義但是后面步驟一定要跟你所定義的名稱相同,然后進入/data/env/djangoenv/bin - 啟動虛擬環境:source activate (這里virtualenv的命令自行百度很簡單)
5. 虛擬環境里用pip3安django和uwsgi,以及項目依賴包
- pip3 install django==3.2.5 (需要指定安裝和你項目相同的版本)
- pip3 install uwsgi
注意:uwsgi要安裝兩次,一次在虛擬環境中,另一次退出虛擬環境進行安裝 - 給uwsgi建立軟鏈接 命令:ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
- 安裝項目依賴包
4.1 導出當前本地項目依賴包pip freeze > requirements.txt
注意:requirements.txt文件部分模塊顯示了 @ file:///...,而不是具體的版本號,可以暫時考慮使用如下命令生成 requirements.txt 文件,pip list --format=freeze > requirements.txt,使用上述命令導出的文件中,會包含如下幾個包:distribute,pip,setuptools,wheel,建議手動刪除! - 可以用XFTP把requirements.txt文件丟到一個目錄下,進入/data/env/djangoenv/bin, 啟動虛擬環境:source activate,然后找到requirements.txt目錄,執行命令:pip install -r requirements.txt
6. MYSQL安裝
- 首先進入網址:https://dev.mysql.com/downloads/repo/yum/
- 根據centos版本選擇,執行命令:cd /home/ ->wget https://repo.mysql.com//mysql80-community-release-el7-5.noarch.rpm
注意:https://repo.mysql.com//后面這一串是根據在網頁上自行選擇的版本復制過來的 - 下載完成后,進行安裝rpm -ivh mysql80-community-release-el7-5.noarch.rpm
注意:這里安裝會讓你選擇MYSQL版本,根據自己環境需要,我這里選的8.0,讓你選PHP的話無所謂啥版本都行 - 前期工作全部做好了,我們正式的去安裝MySQL 命令:sudo yum install mysql-community-server
注意:執行上面的命令進行安裝,這個步驟可能需要點時間,最后如果出現completed,那就搞定了 - 設置MySQL,設置開機啟動:systemctl enable mysqld.service,檢查是否設置成功:systemctl list-unit-files | grep mysqld
注意:大家都是干代碼的,這個怎么看成功我就不說了,免得拉低大家智商 - 開啟MySQL服務:systemctl start mysqld.service
- 修改MySQL密碼,查看默認密碼:grep 'temporary password' /var/log/mysqld.log
- 登錄MySQL:mysql -u root -p (用獲取的初始密碼)
- mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxx';
注意:MySQL8.0修改密碼需要有大小寫字母、數字、特殊字符組合,xxxxxx就是你要輸入的密碼 - 執行命令生效:mysql>flush privileges;
- 這里其實就安裝完成了,如果你想外網比如說navicat訪問連接,那就繼續看下去
mysql> use mysql;
mysql> update user set host='%' where user='root';
授權用戶名的權限,賦予任何主機訪問數據的權限
mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
注意: 如果上面授權報錯用,可以使用下面的
use mysql;
update user set host='%' where user='root';
Grant all privileges on test.* to 'root'@'%';
通過navicat測試遠程連接數據庫 - 導入本地的數據庫數據到服務器
進入服務器數據庫
mysql -u root -p
創建與項目中相應的名稱的數據庫
create database 數據庫名;
use 數據庫名
source /你導入sql文件的目錄地址(關於這里你需要導入的sql文件怎么導出,自行百度太過簡單)
7. 將本地項目文件壓縮打包,上傳到服務器目錄解壓
- 我這里是在home下mkdir Chris,用的XFTP將壓縮文件上傳
注意: 這里看你電腦用的RAR壓縮還是zip或者其他的,我這里用的RAR,其他的百度下 - 在服務器中解壓,可以先安裝支持RAR的工具(根據自己需要)
32位:
命令:wget https://www.rarlab.com/rar/rarlinux-5.7.1.tar.gz
64位
命令:wget https://www.rarlab.com/rar/rarlinux-x64-5.7.1.tar.gz - 解壓
tar -zxvf rarlinux-5.7.1.tar.gz # 對應32位下載的
tar -zxvf rarlinux-x64-5.7.1.tar.gz # 對應64位下載的
命令:cd rar 進入解壓后的rar文件夾
命令:make 沒有任何參數,直接make就OK
如果出現下面的信息,就是安裝成功了:
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib
執行解壓操作:
rar x test.rar ->解壓 test.rar 到當前目錄
這里壓縮命令了解即可rar test.rar ./test/ # 將 test目錄打包為 test.rar
8. 通過python3 manage.py runserver 運行一下項目
注意: 如果能正常啟動則進行下一步,不能正常運行往上檢查。這里需要注意使用python3來執行manage.py,否則會出現報錯情況!
9. 配置uwsgi文件(請睜大小眼睛)
我的網站項目路徑是/home/Chris/Manage_pj,在項目根目錄下創建 項目名稱.xml (例如我的就是 Manage_pj.xml) 編輯該文件:
<uwsgi>
<socket>127.0.0.1:8000</socket><!-- 內部端口,自定義 -->
<chdir>/home/Chris/Manage_pj</chdir><!-- 項目路徑 -->
<module>Manage_pj.wsgi</module><!-- mysite為wsgi.py所在目錄名-->
<processes>4</processes><!-- 進程數 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
10. 安裝nginx和配置nginx.conf文件
- cd /home/ 執行命令:wget http://nginx.org/download/nginx-1.18.0.tar.gz 這里安裝的是nginx-1.18.0.tar.gz 版本
- 下載完成后,執行解壓命令:tar -zxvf nginx-1.13.7.tar.gz
- 進入解壓后的nginx-1.13.7文件夾,依次執行以下命令:
./configure
make
make install
nginx一般默認安裝好的路徑為/usr/local/nginx,推薦在/usr/local/nginx/conf/中先備份一下nginx.conf文件,防止我們出錯。命令:cp nginx.conf nginx.conf.bak - 然后打開nginx.conf,把原來的內容刪除,直接加入以下內容:
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80; # 這里nginx監聽得是80端口,瀏覽器輸入域名不需要加端口了就
server_name 127.0.0.1:80; #改為自己的域名,沒域名修改為127.0.0.1:80
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; #端口要和uwsgi里配置的一樣
uwsgi_param UWSGI_SCRIPT Manage_Pj.wsgi; #wsgi.py所在的目錄名+.wsgi
uwsgi_param UWSGI_CHDIR /home/Chris/Manage_Pj; #項目路徑
}
location /static/ {
alias /home/Chris/Manage_Pj/app01/static/; #靜態資源路徑
}
}
}
- 進入/usr/local/nginx/sbin/目錄 執行 ./nginx -t 命令先檢查配置文件是否有錯,沒有錯就執行以下命令:./nginx,終端沒有任何提示就證明nginx啟動成功。
到此安裝結束:你可以嘗試瀏覽器輸入服務器域名(不要端口,nginx.conf中配置了listen 80,是http默認端口,如果不能成功或者靜態資源無法加載,請看下面重點注意事項)
重點注意事項(必看):
- 如果你的項目中的應用含有靜態文件,你需要在setting.py中進行STATIC_ROOT的設置STATIC_ROOT = os.path.join(BASE_DIR, 'static')#指定樣式收集目錄
- Setting中ALLOWED_HOSTS = ['*'],DEBUG=False設置
- 如果修改了Django文件或者一些其他的配置,一定要重啟uwsgi和Nginx,否則不會生效!
查看Uwsgi進程
ps -ef|grep uwsgi
用kill方法把uwsgi進程殺死,然后啟動uwsgi
killall -9 uwsgi
啟動方法
uwsgi -x mysite.xml
Nginx平滑重啟方法
/usr/local/nginx/sbin/nginx -s reload
上面是重啟uswgi和Nginx的步驟,大家每次修改之后,調用上面的方法即可。