2019-5-9 20:40:29
终于弄完了,贴上步骤先(在Linux总结里面也有)
好有成就感的样子,已经成功部署自己的项目真的感觉很爽!中午刚整理完Linux笔记
Linux 笔记
经历了小半个月终于部署完了自己项目!感觉到自己真的很开心!
越努力,越幸运!永远不要高估自己!
关于Nginx 重启报错问题!困扰了好久终于解决了!
1.nginx 重新加载命令./nginx -s reload,出现
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"问题。
解决办法:
第一步:执行命令 killall -9 nginx 杀掉nginx 进程
第二步:执行命令 /opt/nginx1-12/sbin/nginx -c /opt/nginx1-12/conf/nginx.conf
重新加载配置文件
第三步:执行命令 /opt/nginx1-12/sbin/nginx -s reload 重新启动nginx
注意: 第二步是自己的Nginx的所在目录
服务器部署自己的bbs项目!(Nginx+uWsgi+Django1.11.1+mariadb+virtualenvwrapper+supversior)
项目源码在自己的GitHub中: www.github.com/TrueNewBee/my_blogs
1.准备python环境,准备虚拟环境,激活了虚拟环境
mkvirtualenv nbcrm
检测是否虚拟环境正常
which pip3
which python3
worken nbcrm
(3,4由于没用mysql故忽略,根据实际情况)
2.1.安装django模块(此时的操作都是在nbcrm这个虚拟环境下了)
pip3 install django==1.11.11
1.2.安装pymysql连接mysql数据库
pip3 install pymysql
1.3.安装django的一个django-multiselectfield
pip3 install django-multiselectfield
1.4.解决项目的数据库连接问题,修改settings.py
1.启动linux的数据库,创建对应的数据库,密码设置等等
create database nb_crm;
2.更改settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'nb_crm', #数据库名
'HOST': '127.0.0.1', #这里服务器的ip地址
'PORT': 3306, #端口
'USER': 'root', #用户名
'PASSWORD': 'redhat123', #用户密码
}
}
3.更改允许主机
ALLOWED_HOSTS = ['*']
4.线上关闭debug
debug=True
*******************************************
使用uwsgi启动django(没有静态文件,需通过Nginx配合使用才有)
1.安装uwsgi
pip3 install -i https://pypi.douban.com/simple uwsgi
2.通过uwsgi命令启动python应用
uwsgi --http 0.0.0.0:8888 --wsgi-file test1.py
--http 指明是http协议
--socket 启动一个socket 链接
--wsgi-file 指明一个python应用文件
3.通过uwsgi启动django项目(问题是,uwsgi不处理static静态文件的配置)
uwsgi --http :8888 --module Nb_crm.wsgi
4.uwsgi可以热加载项目
uwsgi --http :9999 --module mycrm.wsgi --py-autoreload=1
--py-autoreload是告诉uwsgi自动重启加载django项目
5.通过uwsgi的配置文件启动项目(把这个文件放在项目的根目录中,和manage.py同级)
1.手动创建uwsgi.ini文件
touch uwsgi.ini
2.写入如下配置
[uwsgi]
#项目的绝对路径,定位到项目的第一层
chdir = /opt/my_blogs
#指明项目的wsgi文件路径(/my_blogs/bbs_demo/uwsgi.py)
module = bbs_demo.wsgi
#指明你的虚拟解释器的第一层路径
home = /root/Envs/bbs#指明通过uwsgi,启动多少个进程
processes = 5
#非常重要
#非常重要
#非常重要
#如果你已经配置了nginx(启动了nginx服务,配置了uwsgi_pass),请用这个socket连接
socket = 0.0.0.0:8000
#如果你没用nginx,想通过uwsgi直接启动web服务,指明http协议
# http = 0.0.0.0:9999
#在退出uwsgi环境后,清空环境变量
vacuum = true
module :可以这么来理解,对于- myweb_uwsgi.ini文件来说,与它的平级的有一个NB_crm目录,这个目录下有一个wsgi.py文件
*******************************************
6.通过配置文件启动NB_crm(注意uwsgi不会处理静态文件,如果有,也是浏览器的缓存!!!!)
uwsgi --ini uwsgi.ini
7.配置django的settings.py,收集所有NB_crm项目所需的静态文件
1.#通过命令,收集整个项目所有的静态文件,放入到/opt/static/
STATIC_ROOT='/opt/static/'
2.执行命令
python3 manage.py collectstatic
3.此时my_blogs的所有静态文件,都跑到/opt/static/底下了
(bbs) [root@node1 /opt/my_blogs11:09:33]#ls /opt/static/
admin css imgs js plugins
8.配置nginx
1.配置一个网站入口,当用户访问192.168.12.96:80 这个web应用时,自动将请求转发给uwsgi,uwsgi处理后,返回给nginx,返回给用户
当请求是192.168.12.96:80的时候,其实访问的是192.168.12.96:9999 这是动态请求,因为我是找到的uwsgi
#匹配度最低的写法,因此就是任何的请求都访问到这里
2.通过nginx去处理静态文件
3.nginx.conf配置如下
#定义负载均衡池,里面放入uwsgi的地址
upstream bbs {
server 0.0.0.0:8000;
}
server {
listen 80;
server_name 112.74.32.62;
#讲nginx入口的请求,直接反向代理给uwsgi
location / {
uwsgi_pass bbs;
include /opt/nginx1-12/conf/uwsgi_params;
}
#通过nginx处理nbcrm的静态文件
location /static {
alias /opt/static/;
}
}
9.更改uwsgi.ini ,指明socket连接,结合uwsgi 和nginx
#如果你已经配置了nginx,请用这个socket连接
socket = 0.0.0.0:8000
10.启动uwsgi.ini (-d 后台运行)
uwsgi -d --ini uwsgi.ini
启动nginx
/opt/nginx1-12/sbin/nginx -t 检测nginx.conf 配置文件的语法正确性
/opt/nginx1-12/sbin/nginx -s reload #平滑重启(修改了nginx配置文件,不重启服务就加载配置且生效)
并且访问nginx的域名入口,查看是否能访问到uwsgi项目,并且静态文件是否正常
112.74.32.62 查看浏览器状态
# 到这一步已经把网站部署完成了!感觉很吊的样子(已经很成功的访问)
*******************************************
11.配置supversior,管理uwsgi进程
注意,请退出虚拟环境,在宿主机环境下,安装supvervisor
1.安装easy_install ,python2的软件包管理工具 ,如果有了可以忽略
yum install python-setuptools
#安装软件
easy_install supervisor
2.使用supervisor命令,常用命令如下
生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
3.修改配置文件,添加任务,按照自己的机器环境修改此命令
[program:s14nbcrm]
#启动uwsgi的命令就是这个
command=/root/Envs/nbcrm/bin/uwsgi --ini /opt/NB_crm/uwsgi.ini
#自动启动uwsgi,挂了之后自动加载
autorestart=true
4.启动supvervisord服务,启动uwsgi
#服务端命令,用于启动这个服务
supervisord -c /etc/supervisord.conf
5.通过命令管理uwsgi
supervisorctl 直接回车,进入交互式管理状态
[root@node1 ~ 11:53:32]#supervisorctl
s14nbcrm RUNNING pid 2008, uptime 0:01:56
也可以通过命令交互式的管理uwsgi
#服务端启动后,通过命令管理软件
supervisorctl start s14nbcrm
supervisorctl stop s14nbcrm
supervisorctl status s14nbcrm