服务器环境:centos7+nginx+uwsgi+python3+django 数据库:MySQL 8.0 项目框架:Django 2.2 + Vue + ElementUI 注明:这是我在校期间做的学校的一个项目,部署到服务器是学校分配的CentOS 7,使用堡垒机登录,纯命令行操作,所以这里没有图形界面操作,做这篇教程是方便自己回忆,不一定适用于所有开发者。搬砖内容如有错误请指正!
1、服务器部署
更新系统软件包
yum update -y
安装软件管理包和可能使用的依赖
yum -y groupinstall
"Development tools"
yum
install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel
1.1、Python安装
python版本:3.7
下载Pyhton3到/usr/local 目录
cd /usr/local
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
解压
tar -zxvf Python-3.7.3.tgz
进入Python-3.7.3路径
cd Python-3.7.3
编译安装到指定路径。(/usr/local/python3 路径可以自己指定,自己记着就行,下边要用到。)
./configure --prefix
=/usr/local/python3
安装python3
make
make install
安装完成之后建立软链接,添加变量,方便在终端中直接使用python3
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
Python3安装完成之后pip3也一块安装完成,不需要再单独安装,同样给pip3建立软链接
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
查看Python3和pip3安装情况
1.2、virtualenv安装和使用
安装virtualenv,方便不同版本项目管理
pip3
install virtualenv
建立软链接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
安装成功在根目录下建立两个文件夹,主要用于存放env和网站文件的。
mkdir -p /data/env
mkdir -p /data/wwwroot
切换到/data/env/下,创建指定版本的虚拟环境
虚拟环境名称:pyweb指定python版本python3,不然会默认使用系统自带的python2
virtualenv --python
=/usr/bin/python3 pyweb
然后进入/data/env/pyweb/bin,启动虚拟环境
cd /data/env/pyweb/bin
source activate
启动成功之后,红线位置会出现虚拟环境名称,代表启动成功。
退出虚拟环境
退出虚拟环境不用进入指定目录,在任意路径下面执行下面命令即可。
deactivate
1.3、django和uwsgi的安装
非虚拟环境下,安装uwsgi
pip3
install uwsgi
给uwsgi建立软链接,方便使用,一次就可以,虚拟环境中安装不需要此操作。
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
进入虚拟环境pyweb的bin目录下,激活该虚拟环境
为什么要进入虚拟环境呢?因为我们可能不止部署一个项目,每个项目到环境配置不一样,一个虚拟环境相当于一个独立的空间。
cd /data/env/pyweb/bin
source activate
安装django和uwsgi
django版本:2.2uwsgi要安装两次,先在系统里安装一次,然后进入对应的虚拟环境安装一次。
pip3
install django
==2.2
pip3
install uwsgi
1.4、nginx安装
进入home目录,执行下面命令
cd /home/
wget http://nginx.org/download/nginx-1.13.7.tar.gz
下载完成后,执行解压命令
tar -zxvf nginx-1.13.7.tar.gz
进入解压后的nginx-1.13.7文件夹,依次执行以下命令
./configure
make
make install
1.5、Mysql8.0安装
安装前,我们可以检测系统是否自带安装 MySQL
rpm -qa
| grep mysql
如果你系统有安装,那可以选择进行卸载
rpm -e mysql // 普通删除模式
rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址为:https://dev.mysql.com/downloads/repo/yum/
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
yum update
yum
install mysql-server
权限设置
chown mysql:mysql -R /var/lib/mysql
初始化 MySQL
mysqld --initialize
启动 MySQL
systemctl start mysqld
查看 MySQL 运行状态
systemctl status mysqld
Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码
[root@host
]
2、代码准备
2.1、Django代码
在项目目录下用下面的命令把当前的环境依赖包导出到requirements.txt文件
pip freeze
> requirements.txt
django项目集成vue,修改django的setting.py文件
TEMPLATES
= [
{
'DIRS': [os
.path
.join
(BASE_DIR
, 'vue/dist')],
},
]
DEBUG
= False
ALLOWED_HOSTS
= ['*']
STATICFILES_DIRS
= [
os
.path
.join
(BASE_DIR
, 'vue/dist/static'),
]
修改django的url.py文件
from django
.views
.generic
.base
import TemplateView
urlpatterns
= [
path
(r
'', TemplateView
.as_view
(template_name
='index.html')),
]
文件上传
linux系统可以在本地将代码文件打包成zip格式或者其他格式到压缩包,并上传服务器到/data/wwwroot/目录下windows系统图形界面压缩即可
zip -r zzbceping.zip zzbceping
解压,使用命令:
unzip zzbceping.zip
项目文件名称为zzbceping。
进入虚拟环境然后进入项目路径安装requirements.txt里的依赖包
cd /data/env/pyweb/bin/
source activate
cd /data/wwwroot/zzbceping/
pip3
install -r requirements.txt
2.2、vue代码
进入vue项目路径下找到并打开存放baseURL到文件,修改baseURL
baseURL: 'http://127.0.0.1:8000/', //原来的
baseURL: 'http://域名/', //有域名就填域名,网址输入域名就可以访问
baseURL: 'http://ip/', //没有域名就填写ip,网址输入ip就可以访问
baseURL: 'http://ip:80/', //指定80端口,网址输入ip:80 可以访问
build 项目
进入vue代码根目录,执行命令此命令会生成dist文件,打包dist文件
npm run build
zip -r dist.zip dist
在django项目根目录下面创建vue文件夹,将dist.zip上传到此处,并解压,目录结构为:/data/wwwroot/zzbceping/vue/dist
2.3、数据库文件
在本地将数据库文件以sql格式导出,上传到服务器。
mysqldump -uroot -ppassword qiantai
>qiantai.sql
打开终端,运行命令:
mysql -uroot -pxxx
use 数据库名
;
source /path/to/your/qiantai.sql
;
exit;
3、运行配置
进入对应到虚拟环境中,进入django目录下通过如下命令运行一下项目,如果能正常启动则进行下一步,不能正常运行往上检查。
python3 manage.py runserver
3.1、uwsgi配置文件
在django项目根目录:/data/wwwroot/zzbceping/下创建uwsgi配置文件:uwsgi.ini
[uwsgi
]
socket
=0.0.0.0:81
chdir
=/data/wwwroot/zzbceping
wsgi-file
=zzbceping/wsgi.py
processes
=9
threads
=30
master
=True
pidfile
=uwsgi.pid
daemonize
=uwsgi.log`
通过下面的命令启动运行uwsgi
uwsgi --ini uwsgi.ini
ps -ef
|grep uwsgi
uwsgi --stop uwsgi.pid
uwsgi --reload uwsgi.pid
killall -0 uwsgi
3.2、nginx配置
进入nginx目录
cd /usr/local/nginx/conf/
备份nginx.conf
cp nginx.conf nginx.conf.bak
编辑nginx.conf
vi nginx.conf
按Ins键开始编辑
---------------------------------
events
{
worker_connections 1024
;
}
http
{
include mime.types
;
default_type application/octet-stream
;
sendfile on
;
keepalive_timeout 65
;
include /usr/local/nginx/conf/vhost/*.conf
;
}
保存并退出
按Esc键退出编辑
:wq
:q
创建文件夹vhost
mkdir vhost
cd vhost
创建文件zzbceping.conf,并编辑
mkdir zzbceping.conf
vi zzbceping.conf
按Ins键开始编辑
----------------------------------
server
{
listen 80
;
server_name 域名
;
charset utf-8
;
location /
{
include uwsgi_params
;
uwsgi_pass 127.0.0.1:81
;
}
location /static/
{
alias /data/wwwroot/zzbceping/vue/dist/static/
;
}
access_log /data/wwwroot/zzbceping/access.log
;
error_log /data/wwwroot/zzbceping/error.log
}
如果同一服务器部署多个项目,只要再创建一个虚拟环境,进行同样的操作,另外再vhost中创建另外一个项目的conf文件即可。进入/usr/local/nginx/sbin/目录
cd /usr/local/nginx/sbin/
检查配置文件是否有错
./nginx -t
运行nginx
./nginx
3.3、注意事项
以上大部分操作都在虚拟环境中操作修改相关文件之后都要将nginx和uwsgi重启附上常用操作合集
uwsgi
------------------
uwsgi --ini uwsgi.ini
uwsgi --stop uwsgi.pid
uwsgi --reload uwsgi.pid
killall -9 uwsgi
ps -ef
|grep uwsgi
nginx
------------------
cd /usr/local/nginx/sbin/
./nginx
./nginx -s reload
./nginx -s quit
参考
https://www.django.cn/article/show-4.htmlhttps://www.runoob.com/mysql/mysql-install.html