Ubuntu16.04部署django+nginx專案
阿新 • • 發佈:2022-05-30
專案使用django+nginx部署。
這個專案斷斷續續地部署4遍了。感覺每次部署都挺費時間的(找各種配置的資料),於是寫一個部落格總結一下。
參考網站:https://www.jianshu.com/p/94ba6e48170c
https://www.cnblogs.com/crowbrother/p/13296757.html
https://www.cnblogs.com/simple-record/p/15214813.html
https://www.bilibili.com/video/BV19g4y1q74s?spm_id_from=333.999.0.0
建立FTP服務(之後就可以使用使用者名稱ftpuser,通過FileZilla傳遞檔案)
安裝vsftpd
$ sudo apt-get install vsftpd
備份vsftpd配置檔案
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
修改vsftpd配置檔案
$ sudo vim /etc/vsftpd.conf
配置檔案主要配置如下
listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES ftpd_banner=Welcome to Snail FTP service. chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=ftp rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=NO utf8_filesystem=YES userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd.user_list allow_writeable_chroot=YES
建立FTP目錄和登陸使用者
#先建立ftp目錄 $ sudo mkdir /home/ftp #新增使用者 $ sudo useradd -d /home/ftp -s /bin/bash ftpuser #設定使用者密碼 $ sudo passwd ftpuser #設定ftp目錄使用者許可權 $ sudo chown ftpuser:ftpuser /home/ftp #在etc目錄下新建檔案vsftpd.user_list,用於存放允許訪問ftp的使用者 $ sudo touch /etc/vsftpd.user_list #編輯vsftpd.user_list,在其中新增ftpuser $ sudo vim /etc/vsftpd.user_list #在etc目錄下新建檔案vsftpd.chroot_list,設定可列出、切換目錄的使用者 $ sudo touch /etc/vsftpd.chroot_list #編輯chroot_list,在其中新增ftpuser $ sudo vim /etc/vsftpd.chroot_list
重啟vsftpd服務
$ sudo service vsftpd restart
檔案傳輸的許可權設定
$ chmod 777 -R ./xxx
安裝mysql
$ sudo apt update
$ sudo apt install mysql-client-core-5.7
$ sudo apt install mysql-client-5.7
#這步還需要設定密碼,記得和後端配置檔案相同
$ sudo apt install mysql-server-5.7
#測試是否安裝成功
$ mysql -uroot -p
安裝python3.8
#安裝依賴環境
$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl
#下載python3.8.5 解壓
$ wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz
$ tar -zxvf Python-3.8.5.tgz
#進入解壓後的目錄
$ cd Python-3.8.5
$ ./configure #編譯前的配置
$ make #編譯
$ make install#編譯後的安裝
#之後可以使用以下命令來驗證安裝成功
$ python3.8 -V
# 接下來的步驟 可能會導致嚴重問題,如果時間充裕可以嘗試
# 接下來的步驟 可能會導致嚴重問題,如果時間充裕可以嘗試
# 接下來的步驟 可能會導致嚴重問題,如果時間充裕可以嘗試
第五步:安裝成功後,找到 python3.8 直譯器位置,一般是 /usr/local/bin/python3.8
#刪除原來的軟連線
$ rm -rf /usr/bin/python3
$ rm -rf /usr/bin/pip3
#新增python3的軟連結
$ ln -s /usr/local/bin/python3.8 /usr/bin/python3
#新增 pip3 的軟連結
$ ln -s /usr/local/bin/pip3.8 /usr/bin/pip3
配置python環境
這一步非常麻煩,且會有許多問題
#更新pip3.8
$ pip3.8 insatll --upgrade pip
安裝各種依賴庫
新建檔案 requirements.txt ,填寫以下內容
注意:這些並不是全部必要,可以通過執行專案來判斷缺少的依賴
asgiref>=3.2.7
colorama>=0.4.3
Django>=3.0.3
django-cors-headers>=3.3.0
easydict>=1.9
importlib-metadata>=1.6.0 //ubuntu16.04這裡就安裝不了了,跳過這個
jsonpatch>=1.25
MarkupSafe>=1.1.1
PyMySQL>=0.9.3
python-dateutil>=2.8.1
pytorch>=1.0.2
torchvision>=0.4.0
PyYAML>=5.3.1
setuptools>=46.4.0
six>=1.14.0
uWSGI>=2.0.18
$ pip3.8 install -r requirements.txt
在ubuntu16.04遇到的問題(不能快速解決的問題):
1.缺少mysqlclient
$ apt-get install libmysqlclient-dev
$ pip3.8 install mysqlclient
建立資料庫
$ mysql -u root -p
CREATE DATABASE Yiwenjuandb default character set utf8mb4 COLLATE = utf8mb4_unicode_ci;
下載NGINX
$ wget http://nginx.org/download/nginx-1.17.9.tar.gz
$ tar -zxvf nginx-1.17.9.tar.gz
$ sudo apt-get install libpcre3 libpcre3-dev #如果make時發現缺失依賴
$ ./configure --prefix=/usr/local/nginx --with-http_gzip_static_module
$ make -j4 && make install
配置NGINX
我的另一篇部落格裡寫了
啟動專案(先執行前兩步,補足缺失的依賴,後一步nginx配置完以後再做)
$ python3.8 manage.py makemigrations
$ python3.8 manage.py migrate
$ python3.8 manage.py runserver 0:8080