django項目、vue項目部署雲服務器的詳細過程

上線架構圖

服務器購買與遠程連接

服務器可以在阿裡雲控制臺首頁 (aliyun.com)、登錄 – 騰訊雲 (tencent.com)購買。

這裡我選擇購買阿裡雲的雲服務器ECS,購買時按自己需求,鏡像這裡選擇CentOS 7.9

購買完成後,會拿到一個公網ip

選擇遠程連接工具,有很多種,Xshell、FinalShell等。

這裡選擇FinalShell,下載:FinalShell (hostbuf.com)

打開,連接。

連接的密碼如果不知道或忘記瞭

安裝git

安裝git可以方便我們從直接從遠程倉庫拉取項目,當然,也可以不安裝。

安裝git

yum install git  -y

創建文件夾放項目

mkdir /home/projectcd /home/project

克隆

git clone https://gitee.com/....

安裝mysql

包含瞭很多開發的工具

yum -y groupinstall "Development tools"

各種依賴

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel

1.前往用戶根目錄

cd ~

2.下載mysql57

wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

3.安裝mysql57

yum -y install mysql57-community-release-el7-10.noarch.rpm
yum install mysql-community-server --nogpgcheck

4.啟動mysql57並查看啟動狀態

systemctl start mysqld.service
systemctl status mysqld.service

5.查看默認密碼並登錄

grep "password" /var/log/mysqld.log

mysql -uroot -p

6.修改密碼(密碼強度有要求,需要大小寫字母、數字、符號)

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Qq332525..';

安裝redis(源碼安裝)

1.前往用戶根目錄

cd ~

2.下載redis-5.0.5(源碼包)

wget http://download.redis.io/releases/redis-5.0.5.tar.gz

3.解壓安裝包

tar -xf redis-5.0.5.tar.gz

4.進入目標文件

cd redis-5.0.5

5.編譯環境

make

6.復制環境到指定路徑完成安裝

cp -r /root/redis-5.0.5 /usr/local/redis

7.配置redis可以後臺啟動:修改下方內容

vim /usr/local/redis/redis.conf

添加:

daemonize yes

8.建立軟連接(環境變量)

ln -s /usr/local/redis/src/redis-server /usr/bin/redis-server
ln -s /usr/local/redis/src/redis-cli /usr/bin/redis-cli

9.後臺運行redis

cd /usr/local/redisredis-server ./redis.conf &

10.測試redis環境

redis-cli
# 退出exit

11.如果想要關閉redis服務

# 方式一
客戶端連進去,敲  shutdown
# 方式二
pkill -f redis -9

安裝python3.8(源碼安裝)

阿裡雲的centos默認裝瞭python3.6和2.7,如果沒有硬性要求,可以直接跳過安裝python3.8。

各種依賴

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel  -y

1.前往用戶根目錄

cd ~

2.下載Python3.8.6

wget https://registry.npmmirror.com/-/binary/python/3.8.6/Python-3.8.6.tgz

3.解壓安裝包

tar -xf Python-3.8.6.tgz

4.進入目標文件

cd Python-3.8.6

5.把python3.8.6 編譯安裝到/usr/local/python38路徑下

./configure --prefix=/usr/local/python38

6.編譯並安裝,如果報錯,說明缺開頭的哪些依賴

make &&  make install

7.建立軟連接(環境變量)

ln -s /usr/local/python38/bin/python3 /usr/bin/python3.8
ln -s /usr/local/python38/bin/pip3 /usr/bin/pip3.8

目前雲服務器各版本python環境

python      pip      2.7版本的命令
python3     pip3     3.6版本的命令
python3.8   pip3.8   3.8版本的命令

安裝uwsgi

uwsgi是符合wsgi協議的web服務器,使用c寫的性能高,上線要使用uwsgi。

安裝uwsgi,註意用你後面要用的python版本安裝

pip3.8 install uwsgi

建立軟連接

ln -s /usr/local/python38/bin/uwsgi /usr/bin/uwsgi

安裝虛擬環境

1.安裝虛擬環境

pip3.8 install virtualenv

更新pip

python3.8 -m pip install --upgrade pip
python3.8 -m pip install --upgrade setuptools
pip3.8 install pbr
pip3.8 install virtualenvwrapper

2.建立虛擬環境軟連接(環境變量)

ln -s /usr/local/python38/bin/virtualenv /usr/bin/virtualenv

3.配置虛擬環境:

vim ~/.bash_profile

填入下方內容,註意python版本用的是哪個

VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.8
source /usr/local/python38/bin/virtualenvwrapper.sh

4.更新配置文件內容

source ~/.bash_profile

5.創建虛擬環境

mkvirtualenv -p python3.8 xx

退出

deactivate

安裝nginx(源碼安裝)

1.前往用戶根目錄

cd ~

2.下載nginx1.13.7

wget http://nginx.org/download/nginx-1.13.7.tar.gz

3.解壓安裝包

tar -xf nginx-1.13.7.tar.gz

4.進入目標文件

cd nginx-1.13.7

5.配置安裝路徑:/usr/local/nginx

./configure --prefix=/usr/local/nginx

6.編譯並安裝

make && make install

7.建立軟連接

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

8.刪除安裝包與文件

cd ~
rm -rf nginx-1.13.7
rm -rf nginx-1.13.7.tar.xz

9.測試Nginx環境,服務器運行nginx,本地訪問服務器ip

# 啟動 
nginx
# 停止
nginx -s stop

這個命令查看nginx是否在運行著

netstat -nlp | grep 80

然後訪問

服務器公網ip:80

如果無法訪問,說明雲服務器安全組中沒有添加80端口

vue項目部署

1.修改前端向後端發ajax請求的地址,以前都是向127.0.0.1發送請求,現在可以改成服務器地址瞭

2.編譯vue項目成html,css,js

npm run build

3.項目根路徑下會生成dist文件夾(編譯過後的文件),本地壓縮成zip(不要壓成rar)

4.在服務器安裝軟件

yum install lrzsz

5.雲服務器敲 rz,選擇dist.zip上傳

6.安裝解壓軟件,解壓文件

yum install unzip
unzip dist.zip

7.移動解壓後的dist.zip,並重命名

mv ~/dist /home/html

8.去到Nginx配置目錄

cd /usr/local/nginx/conf

9.備份Nginx配置文件

mv nginx.conf nginx.conf.bak

10.打開配置文件,添加內容

vim nginx.conf

內容

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80;
        server_name  127.0.0.1; # 可以改為自己的域名
        charset utf-8;
        location / {
            root /home/html; # html訪問路徑
            index index.html; # html文件名稱
            try_files $uri $uri/ /index.html; # 解決單頁面應用刷新404問題
        }
    }
} 

11.重新加載配置文件(重啟nginx)

nginx -s reload

12.訪問服務器ip地址(不寫端口默認訪問80端口)

xx.xx.xx.xx

django項目部署

項目依賴安裝

1.修改django的某些關於ip地址的配置(數據庫等ip地址不用改,因為就是本地的ip地址,當在服務器上運行時,連接的就是服務器的數據庫)

2.django項目生成所需依賴

pip freeze > requirements.txt

3.把django項目上傳到服務器上,通過rz命令,或者git命令

# 這裡我把項目放到這個目錄下
/home/project/

4.創建線上項目虛擬環境

mkvirtualenv project

5.虛擬環境下也要裝uwsgi

pip install uwsgi

6.cd到項目根路徑下

/home/project/

7.安裝依賴

pip install -r ./requirements.txt

8.如果出現報錯,比如安裝mysqlclient模塊容易報錯,那麼我可以打開requirements.txt,將mysqlclient模塊那一行註釋掉(#)

9.最後單獨安裝mysqlclient

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-devel
yum install python-devel
pip install mysqlclient

數據庫配置

1.進入數據庫

2.創建項目需要的數據庫

create database project default charset=utf8;

3.設置權限賬號密碼:賬號密碼要與項目中配置的一致

grant all privileges on project.* to 'username'@'%' identified by 'password';
grant all privileges on project.* to 'username'@'localhost' identified by 'password';
flush privileges;

4.退出數據庫

quit;

5.回到虛擬環境,到項目目錄中

數據庫遷移命令

python manage_pro.py makemigrations
python manage_pro.py migrate

6.錄入數據

使用uwsgi啟動django

1.項目目錄下,新建uwsgi的配置文件

vim ./project.xml

添加

<uwsgi>    
   <socket>127.0.0.1:8000</socket> <!-- 內部端口,自定義 --> 
   <chdir>/home/project/</chdir> <!-- 項目路徑 -->            
   <module>project.wsgi</module>  <!-- project為wsgi.py所在目錄名--> 
   <processes>4</processes> <!-- 進程數 -->     
   <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>

2.啟動uwsgi

uwsgi -x ./luffyapi.xml

3.查看uwsgi進程

ps aux |grep uwsgi

4.配置nginx,把8080端口的動態請求轉發給uwsgi裡配置的8000端口

vim /usr/local/nginx/conf/nginx.conf

內容:

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80;
        server_name  127.0.0.1; # 可以改為自己的域名
        charset utf-8;
        location / {
            root /home/html; # html訪問路徑
            index index.html; # html文件名稱
            try_files $uri $uri/ /index.html; # 解決單頁面應用刷新404問題
        }
    }
    # 新增的server
    server {
        listen 8080;
        server_name  127.0.0.1; # 可以改為自己的域名
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8000;  # 端口要和uwsgi裡配置的一樣
           uwsgi_param UWSGI_SCRIPT project.wsgi;  #wsgi.py所在的目錄名+.wsgi
           uwsgi_param UWSGI_CHDIR /home/project/; # 項目路徑
        }
    }
} 

5.重啟nginx

nginx -s reload

6.這時候前端向服務器id:8080就等於向後端項目發送瞭請求。

後端樣式處理

這時候訪問後端的admin接口是沒有樣式的,還需要下列設置

1.編輯線上項目的配置文件

vim /home/project/../settings/pro.py

2.修改static配置,新增STATIC_ROOT、STATICFILES_DIRS

STATIC_URL = '/static/'
STATIC_ROOT = '/home/project/static'  
STATICFILES_DIRS = (os.path.join(BASE_DIR, "../static"),)

3.項目目錄下沒有 static 文件夾需要新建

mkdir /home/project/static

4.完成靜態文件遷移

python /home/project/manage_pro.py collectstatic

5.修改nginx配置

vim /usr/local/nginx/conf/nginx.conf

內容

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80;
        server_name  127.0.0.1; # 可以改為自己的域名
        charset utf-8;
        location / {
            root /home/html; # html訪問路徑
            index index.html; # html文件名稱
            try_files $uri $uri/ /index.html; 
        }
    }
    server {
        listen 8080;
        server_name  127.0.0.1; # 可以改為自己的域名
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8000;  # 端口要和uwsgi裡配置的一樣
           uwsgi_param UWSGI_SCRIPT project.wsgi; 
           uwsgi_param UWSGI_CHDIR /home/project/; 
        }
    }
    location /static {
        alias /home/project/static;
    }
} 

6.重啟nginx

nginx -s reload

到此這篇關於django項目、vue項目部署雲服務器的文章就介紹到這瞭,更多相關django vue項目部署雲服務器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: