Centos7 部署Nginx +项目
1.首先确保阿里云实例运行状态(如果过下面过程中遇到不可解决问题,初始化实例)
2.Xshell 连接登录服务器
现在我们的状态是在一个新的实例化下进行操作,换言之我们需要安装:
- MariaDB
- python3.6
- virtualenv
- nginx
- uwsgi
3.安装MariaDB
1 | yum -y install mariadb mariadb-server |
安装完成MariaDB,首先启动MariaDB
1 | systemctl start mariadb |
设置开机启动
1 | systemctl enable mariadb |
设置密码
命令: mysql_secure_installation
1 | Enter current password for root:<–初次运行直接回车 |
如果忘记上面密码,更改密码
1 | 1. # systemctl stop mariadb /先停掉当前的mysql进程,不然执行下一步说进程已经存在/ |
打开mysql 新建连接 主机写公网ip
开启远程连接
在mysql数据库中的user表中可以看到默认是只能本地连接的,所有可以添加一个新的用户,该用户可以远程访问
本人创建用户时是 面向所以的ip 所以执行下面第三条命令 和最大权限命令
1. 创建用户
1 | # 先使用数据库 |
2. 授权
1 | # 给用户最大权限 |
接下来就可以在远程的数据库可视化工具中直接访问该服务器中的mysql了。
1 | # 访问数据库 |
4.安装python3.6
在centos中,系统默认只提供python2.7的版本,但是项目我们使用的python3.6的版本。所有我们自己安装python3
安装Python3的方法
首先安装依赖包
1 | yum -y groupinstall "Development tools" |
然后根据自己需求下载不同版本的Python3,我下载的是Python3.6.2
ps:这里把下面Python-3.6.2.tar.xz 改成 Python-3.6.5.tar.xz 就是安装的3.6.5版本了
1 | wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz |
最后创建软链接
1 | ln -s /usr/local/python3/bin/python3 /usr/bin/python3 |
安装环境
- 安装virtualenv
1 | yum install python-virtualenv |
- 创建虚拟环境
1 | virtualenv --no-site-packages env |
- 安装环境需要的包
ps:这里需要先确定 在项目里有写的一个txt文件
然后在你放该txt文件夹下执行
1 | pip3 install -r pip.txt |
5.部署
该部署采用的是cenots7系统来部署
Django的项目中,在工程目录下settings.py文件中有一个DEBUG=True参数,如果DEBUG=False则会出现js,css,img无法加载的情况出现。
原因如下:
Django框架仅在开发模式下提供静态文件服务。当我开启DEBUG模式时,Django内置的服务器是提供静态文件的服务的,所以css等文件访问都没有问题,但是关闭DEBUG模式后,Django便不提供静态文件服务了。想一想这是符合Django的哲学的:这部分事情标准服务器都很擅长,就让服务器去做吧!
1. 测试环境中部署方式
在测试环境中一般都直接使用python manage.py runserver的方式去运行项目。其中就涉及到DEBUG=False的修改,静态目录的修改等,具体修改如下:
1 | 修改settings.py配置文件中的DEBUG=False模式,修改ALLOEWD_HOST=['*'] |
进入项目虚拟环境
在虚拟环境下进入项目manage.py目录执行,测试是否成功
1 | python3 manage.py runserver 0.0.0.0:8080 |
这里本地测试就成功了!!
2. 正式环境中部署方式
正式环境中部署为nginx+uwsgi来部署django项目
2.1 安装nginx
a)添加nginx存储库
1 | yum install epel-release |
b) 安装nginx
1 | yum install nginx |
c) 运行nginx
Nginx不会自行启动。要运行Nginx
1 | systemctl start nginx |
nginx的运行命令:
1 | systemctl status nginx 查看nginx的状态 |
d)系统启动时启用Nginx
1 | systemctl enable nginx |
e)如果您正在运行防火墙,请运行以下命令以允许HTTP和HTTPS通信:
1 | sudo firewall-cmd --permanent --zone=public --add-service=http |
运行结果如下:
3.配置uwsgi
3.1 安装uwsgi
1 | pip3 install uwsgi |
然后进行环境变量的配置, 建立软连接
1 | ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi |
4. 配置项目代码,配置项目nginx,配置uwsgi.ini等
本案例的文件,都习惯将每一个项目的配置文件,日志文件,虚拟环境放在一起,这样开发方便,运维也方便维护
项目的目录结构如下:conf env logs src
其中:
conf是配置文件,用于存放项目的nginx.conf文件,uwsgi.ini文件
logs是日志文件,用于存放nginx的启动成功和失败文件,以及uwsgi的运行日志文件
env是用于存放虚拟环境
src是项目文件,该目录下上传的是目录代码
4.1 配置nginx.conf文件
首先:编写自己项目的nginx.conf文件如下:
每一个项目对应有一个自己定义的nginx的配置文件,比如爱鲜蜂项目,我定义为axfnginx.conf文件
1 | server { |
4.2 配置uwsgi文件
在conf文件夹下除了包含自定义的axfnginx.conf文件,还有我们定义的uwsgi.ini文件
1 | [uwsgi] |
其次:修改总的nginx的配置文件,让总的nginx文件包含我们自定义的项目的axfnginx.conf文件
总的nginx配置文件在:/etc/nginx/nginx.conf中
这不是文本开始位置,是在文本中间位置的include添加下面的一句话!!
以上步骤操作完成以后,需要重启nginx:
1 | systemctl restart nginx |
如果自定义的axfnginx.conf文件没有错误的话,查看nginx的运行状态会有如下的结果:
最后运行项目:
1 | uwsgi --ini uwsgi.ini |
绑定域名:
Ps:域名必须备案 ,或者国外服务器国外域名
server {
listen 80;
server_name cdldb.cn;
access_log /home/logs/access.log;
error_log /home/logs/error.log;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8890;
}
location /static/{
alias /home/src/axf/static/;
}
重启nginx:
1 | systemctl restart nginx |
要启用才可以生效