NGIX之项目布署
CRM项目部署
第一步,安装启动mariadb数据库
1.安装
yum install mariadb-server mariadb -y
2.通过yum安装的软件,怎么启动
systemctl start/stop/status/restart mariadb
3.登录数据库
mysql
4.导出windows的数据库,导入到linux
导出命令
mysqldump -uroot -p crm > crm.sql
# 指定数据库导出到crm.sql数据文件中
传输到linux中,进行导入
简单的利用 lrzsz工具传输
或者下载xftp工具
导入数据的命令
方式1:
1.创建一个crm数据库
create database crm;
# 导入数据的命令
mysql -uroot -p crm < crm.sql
#指定crm数据库,导入一个sql文件
方式2:
登陆数据库之后,用命令导入数据
1.创建一个crm数据库
create database se_crm;
2.切换数据库
use crm;
3.读取sql文件,写入数据集
mareiadb> source /opt/crm.sql;
第二步,准备python3环境,以及虚拟环境
1.编译安装python3,解决环境变量
2.下载virtualenvwrapper工具
3.使用mkvirtualenv命令,创建新的虚拟环境,用于启动crm
mkvirtualenv crm
4.拷贝crm项目代码到linux机器
5.解决crm项目运行所需的依赖环境
方式一:
pip3 install -i https://pypi.douban.com/simple django==1.11.23
pip3 install -i https://pypi.douban.com/simple pymysql
pip3 install -i https://pypi.douban.com/simple django-multiselectfield
方式二:
导出python解释器模块的命令
pip3 freeze > requirements.txt
# requirements.txt文件是python程序员公认的模块依赖文件
安装这个requirements.txt文件中所有的模块
pip3 install -r requirements.txt
# 指定依赖文件安装,读取文件中所有的模块信息
第三步,安装uwsgi
1.通过pip3安装
pip3 install -i https://pypi.douban.com/simple uwsgi
2.通过uwsgi命令去启动django
启动方式一:
uwsgi --http :8000 --module 项目名.wsgi
--http指定http协议启动socket服务端,可以通过浏览器直接访问
--module 是找到crm项目第二级目录下的wsgi.py 文件
uwsgi --http :8000 --module crm.wsgi
启动方式二:
1.创建配置文件
touch uwsgi.ini
2.写入如下内容 uwsgi.ini内容如下
[uwsgi]
# Django-related settings
# the base directory (full path)
# 填写crm项目的绝对路径,第一层
chdir = /opt/CRM
# Django's wsgi file
#填写crm项目第二层目录中的wsgi文件
module = CRM.wsgi
# the virtualenv (full path)
#填写解释器的安装绝对路径(虚拟环境)
home = /root/Virs/crm
# process-related settings
# master
master = true
# maximum number of worker processes
#指定uwsgi的多进程数量,指定为cpu的核数即可(填cpu的4倍数量)
processes = 4
# the socket (use the full path to be safe
#指定crm启动的协议,当你和nginx结合进行反向代理,就用unix-socket协议 ,这种方式无法直接访问,只能通过nginx反代
socket = 0.0.0.0:8000
#指定http协议启动,不安全,没有意义,只是自己调试使用
#http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
# 后台运行uwsgi
daemonize=yes
3.收集django的所有静态文件,交给nginx处理
打开 django的settings.py,修改为如下行
STATIC_ROOT='/opt/crm/crmstatic'
# 加上这个参数就行了
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
通过命令收集django的所有静态文件
python3 manage.py collectstatic
4.指定uwsgi.ini配置文件启动
uwsgi --ini uwsgi.ini
# 参数 --ini是指定文件的意思
第四步,启动nginx,配置反向代理
1.安装nginx
2.修改配置文件nginx.conf
注意server{}多虚拟主机是自上而下的加载顺序
因此修改第一个server{}虚拟主机,修改为如下反代的写法
且添加nginx处理django的静态文件方式
server {
#nginx监听的地址
listen 80;
#定义网站的域名
server_name _;
#charset koi8-r;
#nginx的url匹配 , /这个斜杠就代表这样的请求: 192.168.13.117:85/
#这个是最低级匹配,所有的请求都会进入location,进行处理
#好比 http://192.168.13.117/crm/login/
location / {
#基于uwsgi协议的请求转发,给后端django的启动地址
uwsgi_pass 0.0.0.0:8000; #这个是请求转发
include uwsgi_params; #这个是添加一个文件,添加请起头信息的
}
#当以后请求是从static开始,我就让他去这个目录去找
#http://192.168.13.117/static/css/reset.css
#不加斜杠
location /static {
alias /opt/crm/crmstatic;
}
}
Vue+Drf项目部署
端口配置:
uwsgi部署drm项目使用端口: 8002
nginx部署vue项目使用端口: 85
nginx监听vue请问端口: 8001
第一步,将项目代码移动到Linux上
第二步,配置Vue
1.首先需要安装nodejs环境
通过yum安装
下载编译安装
修改环境变量
测试node和npm的版本
2.安装项目所需node模块,打包node项目
1.进入vue源码目录,安装package.json的模块内容
npm install
注意事项:
此时注意,本地写的vue代码,接口很可能连接的服务器地址有问题,注意Axios.POST提交的地址,一定要发送给django应用(如果用了nginx,就发送给nginx的入口端口)
确保vue的route模式是history
2.准备编译打包vue项目,替换配置文件所有地址,改为服务器地址
注意端口号,如需替换端口号,/旧ip:端口/新ip:端口/
sed -i 's/127.0.0.1/122.51.103.227/g' /vue项目路径/src/restful/api.js
3.打包vue项目,生成一个dist静态文件夹
npm run build
4.检查dist文件夹
index.html static
3.配置nginx
server {
# 用户访问域名或者ip,默认是nginx的80端口
listen 80;
server_name _;
location / {
root /项目路径/dist;
index index.html;
}
}
第三步,配置后端代码
1.创建虚拟环境,在虚拟环境下安装项目所需依赖模块,数据库等
可以从项目中导出所需依赖模块
pip freeze > requirements.txt
在Linux中安装
pip install -r requirements.txt
前面说了mysql,这里说一下redis的安装
yum install redis -y
systemctl start redis
验证登陆redis
[root@linux ~]# redis-cli
127.0.0.1:6379> ping
PONG
2.通过uwsgi启动drf项目
在drf项目第一次目录中创建
touch uwsgi.ini
修改此文件
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir = /项目第一层目录的路径
# Django's wsgi file
module = 项目名.wsgi
# the virtualenv (full path)
home = /虚拟环境的路径
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 1
# the socket (use the full path to be safe
socket = 0.0.0.0:8002
# clear environment on exit
vacuum = true
# 后台运行uwsgi
daemonize = yes
uwsgi --ini 项目路径/uwsgi.ini
第四步,配置nginx
server {
listen 80;
server_name _;
location / {
root /vue项目路径/dist;
index index.html;
# 这一条参数确保vue页面刷新时候,不会出现404页面
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 8001;
server_name _;
location / {
uwsgi_pass 0.0.0.0:8002;
include uwsgi_params;
}
}