实现步骤:
第一步:准备操作系统,安装必备的软件
第二步:配置nginx
第三步:部署Vue.js
第四步:部署Django项目
一、nginx安装
sudo yum install yum-utils
切换到/etc/yum.repos.d/nginx.repo 插入(如果没有nginx.repo 就 vim nginx.repo新建一个)
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
配置
sudo yum-config-manager --enable nginx-mainline
安装
sudo yum install nginx
执行
nginx
可以使用ps命令看有没有启动
ps -ef | grep nginx
二、使用WinSCP上传前端项目
将Vue项目api地址(原:localhost:8080/api => 将localhost:8080去掉)
将vue项目 构建执行 npm run bulid ,把打包好的文件压缩成zip文件
在服务器端新建文件夹用于存放项目
使用WinSCP将前端项目上传到服务器文件夹中
使用unzip将文件解压(未安装unzip 可使用 yum install unzip安装)
按pwd获取当前目录并复制 /mnt/www/trip-mobile/dist
去nginx配置文件 cd /etc/nginx/conf.d 编辑里面的default.conf文件,root处改为刚才复制的路径,然后重启nginx配置生效
nginx -s reload
三、安装mysql
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
然后使用yum进行安装
yum install mysql80-community-release-el7-7.noarch.rpm
执行看有没有相关版本
yum repolist enabled | grep "mysql.*-community.*"
执行安装
sudo yum install mysql-community-server
执行启动mysql服务
systemctl start mysqld
查看mysql状态
systemctl status mysqld
找到初始用户密码,复制下来
sudo grep 'temporary password' /var/log/mysqld.log
登录root账户
mysql -uroot -p
修改新的密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
看一下现在有哪些数据库
show databases
添加远程访问权限
select user,host from mysql.user;
update mysql.user set host = '%' where user = 'root';
flush privileges; //刷新数据库
使用navcat远程连接
防火墙配置
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看端口是否开放
firewall-cmd --query-port=3306/tcp
# 开放3306端口
firewall-cmd --permanent --add-port=3306/tcp
# 移除3306端口
firewall-cmd --permanent --remove-port=3306/tcp
# 重启防火墙 (修改后要重启生效)
firewall-cmd --reload
四、安装redis和python
4.1 redis
下载
wget https://download.redis.io/releases/redis-5.0.14.tar.gz
解压
tar -zxvf redis-5.0.14.tar.gz
进入 redis-5.0.14文件夹
cd redis-5.0.14
编译安装需要安装gcc
yum install gcc gcc-c++
进行编译
make
进行安装
make install
启动redis服务
cd src
./redis-server
修改redis设置,将 daemonize 改为yes 使其长期启动
cd ..
vim redis.conf
4.2 安装python3
下载
wget https://registry.npmmirror.com/-/binary/python/3.8.6/Python-3.8.6.tgz
解压
tar -zxvf Python-3.8.6.tgz
进入目录
cd Python-3.8.6
执行文件检测(绿色的可以直接执行)(执行前提是安装了gcc)
sh configure
安装python需要的软件包依赖
yum install zlib zlib-devel openssl openssl-devel
yum install glib2-devel openssl-devel pcre-devel bzip2-devel gzip-devel
yum install libffi-devel -y
yum install zlib zlib-devel
yum install libjpeg libjpeg-devel
yum install freetype freetype-devel
新建装python3的文件夹
mkdir /usr/local/python3
安装完重新
./configure prefix=/usr/local/python3
编译python源代码
make
安装python
make install
由于CentOs自带python2所以pip并不能用,需要更改软连接使得python指向python3,同时设置python2指向python2.7
将python的软链接指向python3
ln -s /usr/local/python3/bin/python3.8.6 /usr/bin/python
由于yum不支持python3,只有用python2才能正常运行,因此需要修改yum的相应配置,使其默认的指向改为python2.7版本,
将#! /usr/bin/python修改为#! /usr/bin/python2;
vim /usr/libexec/urlgrabber-ext-down
vim /usr/bin/yum
五、上传Django后端项目
打开django项目,通过pip freeze > requirements.txt 将相关依赖提取出来
打开WinSCP,将项目上传到nmt/www目录下
安装mysql-devel
yum install mysql-devel
安装python-devel
yum install python-devel
到Django项目上传目录
cd /mnt/www/trip1019
cat requirement.txt
安装所需依赖
pip install -r requirements.txt
修改django下的settings.py文件 修改一下数据库的密码,改成linux中的密码
使用navicat 创建数据库trip
linux中执行,注意不要执行python manage.py makemigrations 因为做项目中时已经执行
python manage.py check
python manage.py migrate
安装uWSGI
Quickstart for Python/WSGI applications — uWSGI 2.0 documentation
pip install uwsgi
uwsgi配置
[uwsgi]
socket = 127.0.0.1:9090 # Django项目运行的地方
master = 1
processes =1
pidfile = /var/run/trip1019.pid
daemonize = /var/log/uwsgi/trip1019.log
module = trip1019.wsgi:application
chdir = /mnt/www/trip1019
listen = 100
buffer-size = 32768
max-requests = 200
新建 trip1019.ini 将配置文件中内容复制进去
cd /mnt/www
vim trip1019.ini
mkdir -p /var/log/uwsgi/
uwsgi --ini trip1019.ini
查看进程有没有成功
ps -ef | grep uwsgi
重启uwsgi
kill -HUP 6431
进入到nginx文件夹将default.conf文件复制一份命名为django.conf
cd /etc/nginx/
cd conf.d
cp default.conf django.conf
vim django.conf
把django.conf 中location中修改为
执行
nginx -t
重启nginx
nginx -s reload
进入到django项目的settings.py中
cd /mnt/www/trip1019/trip1019
vim settings.py
在 ALLOWED_HOSTS = [] 中添加公网ip地址和 127.0.0.1
重启uwsgi
kill -HUP 6431
在阿里云防火墙中添加8000端口规则
进入到nginx配置,在里面添加location反向代理
cd /etc/nginx/conf.d
vim default.conf
执行
nginx -t
重启nginx
nginx -s reload
nginx反向代理
location ^~/api/{
proxy_pass http://127.0.0.1:8000/;
add_header X-Slave $upstream_addr;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
重启nginx
nginx -s reload
数据库中要填充数据
把前端static中的图片复制到Django项目中,并把Django项目中settings.py中 MEDIA_URL =[],中添加公网的ip