项目环境部署
一、MySQL5.7安装
1、安装方式
1.1 方式一 yum安装(推荐使用该方式)
在CentOS中默认安装有MariaDB,这个是MySQL的分支
如果必须要安装MySQL,首先必须添加mysql社区repo通过输入命令:
rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
然后再yum install -y mysql-server
# yum安装,需要外网环境
1.2 方式二 rpm安装(不建议)
rpm -ivh perl-*.rpm
#安装所有perl依赖rpm -Uvh mysql-libs-5.1.73-7.el6.i686.rpm
#更新mysql的类库rpm -ivh mysql-5.1.73-7.el6.i686.rpm mysql-server-5.1.73-7.el6.i686.rpm
#安装mysql主服务
2、启动MySQL服务
systemctl start/stop/restart/status mysqld
查看MySQL运行状态:
systemctl status mysqld.service
3、使用MySQL
注意:以下方式针对mysql5.7
初次使用,需要找到root的密码:
grep "password" /var/log/mysqld.log
找到密码后,连接数据库 mysql -uroot -p密码
输入初始密码,此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
1 | 遇到错误: |
- 选择数据库
use mysql
- 选择表
- 查询表
4、MySQL远程连接
- 到mysql库的user表中
update user set host='%' where user='root';
#添加可以远程访问的账号 MySQL5.7版本flush privileges;
#刷新权限,保证新添加的账号可用- 关闭linux的防火墙,保证3306可以访问
5、MySQL卸载
rpm -e mysql-server需要完整的包名 通过rpm -qa | grep mysql查找包名
#只需卸载主服务即可rm -rf /var/lib/mysql
#删除所有mysql的数据
6、MySQL root密码找回(重置)
找到/etc/my.cnf
1 | [mysqld] |
1 | [root@Server ~] mysql -uroot |
然后将如上配置删除或注释
1 | # 将开发好的项目部署到Linux系统 Linux 而不是windows (开发) |
二、Python安装
1、安装依赖
- yum -y install python-devel openssl-devel bzip2-devel zlib-devel expat-devel ncurses-devel sqlite-devel gdbm-devel xz-devel tk-devel readline-devel gcc
- yum -y groupinstall “Development tools”
如上两步,汇总安装了python生产环境的各种第三方依赖包
2、安装Python
将python的tar包发送给linux (建议位置:/usr/local/)
解压tar包:
tar -zxvf Python-3.5.2.tgz
cd到解压目录中配置:
./configure --prefix=/usr/local/python3 --enable-optimizations
目的:检测环境中依赖是否完整,设置python的安装位置,
同时生成一个编译文件,用于进行python编译:make在解压目录中:先
make
编译 然后make install
安装
1 | 安装后的日志如下 |
将python3 设置为系统默认python解释器
将/usr/bin下的
python
文件改名mv /usr/bin/python /usr/bin/python2.7.5
将python3的执行文件链接到 /usr/bin/python
ln -s /usr/local/python3/bin/python3 /usr/bin/python
1 | # 执行以上两步操作并不是把python3安装目录添加到环境变量中 |
- 设置环境变量:/etc/profile中添加配置
1 | 在文件末尾追加,不要改动文件的其他内容!!!!!!! |
注意,设置好后,为了让环境变量生效:source /etc/profile
,然后 python3
即可进入python3的环境
- 更新pip
pip3 install --upgrade pip
补充:
安装
yum install mysql-devel
由于
yum
用python2编译执行,所以需要单独为yum
设置为python2,找到/usr/bin/yum
文件,修改文件头:#!/usr/bin/python2.7.5
修改 /usr/libexec/urlgrabber-ext-down 文件的第一行改为 ‘
#!/usr/bin/python2.7.5
’
1 | # 总结Python安装步骤: |
三、Django安装
安装数据库驱动:
pip install mysqlclient
pip install django=="2.0.6"
测试使用:
django-admin startproject testproj
在当前目录下创建一个project:”testproj”cd到testproj目录下的testporj目录下settings.py 修改配置:
ALLOWED_HOSTS = ["*"]
启动django内置的web服务器。cd到testproj目录下,执行:
python manage.py runserver 0.0.0.0:port
在Windows的浏览器中访问:
ip:port
– ip为Linux系统的ip地址
四、uWSGI服务器
1、WSGI协议
使用Django或Flask框架编写的Web应用程序,在
python manage.py runserver
时都启动的是框架内置的服务器来运行Web应用程序,而内置的服务器遵循了WSGI协议(WSGI Server)。WSGI:全称是
Web Server Gateway Interface
,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web server如何与web application通信的规范。WSGI server
负责从客户端接收请求,将request
转发给application
,将application
返回的response
返回给客户端;WSGI application
接收由server
转发的request
,处理请求,并将处理结果返回给server
。
要实现WSGI协议,必须同时实现web server和web application,当前运行在
WSGI
协议之上的web
框架有Bottle
,Flask
,Django
。
总结:WSGI是Web 服务器(uWSGI)与 Web 应用程序或应用框架(Django)之间的一种低级别的接口。
2、uWSGI服务器安装
WSGI协议下web服务器很多:django内置,uWSGI,gunicorn。
2.1 服务器安装
将uWSGI的tar包发送linux
解压tar:
tar -zxvf uwsgi-2.0.17.tar.gz
cd到解压目录下,编译:
make
为了可以更方便的执行 uwsgi 启动uWSGI服务器,定制链接:
ln -s /usr/local/uwsgi-2.0.17/uwsgi /usr/bin/uwsgi
则可以在任意目录下执行
uwsgi
去启动uWSGI服务器测试使用python的wsgi服务器-uWSGI
在任意的一个目录中定义一个python脚本:hello.py
1
2
3def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html;charset=utf-8')])
return [bytes('你好啊!!','utf-8'),b'Mr_lee'] # 基于wsgi协议规范实现的代码启动uWSGI服务器,并部署hello.py程序
uwsgi --http 192.168.248.128:8001 --wsgi-file hello.py
#注意hilo.py可以写成绝对路径浏览器访问:
192.168.248.128:8001
3、 uWSGI部署django项目
在数据库中建好项目需要的database:“ems”
- 使用Navicat创建即可,注意字符集为 utf8
在Django项目的settings.py中修改配置
1
2
3
4
5
6
7
8
9
10
11
12
13DEBUG = False #去掉开发模式
ALLOWED_HOSTS = ["*"] #开放访问host
DATABASES = { #合适数据库参数
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'ems',
'USER': 'root',
'HOST': 'localhost',
'PORT': '3306',
'PASSWORD': '123456'
}
}发送项目到linux并做移植
python manage.py makemigrations
python manage.py migrate
编写uWSGI的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#随意找一个目录,创建一个文件:config.ini -- 建议放在项目的根目录下
[uwsgi]
http = 192.168.134.128:9000 # uWSGI服务器访问地址
#uWSGI和nginx通信的port
socket = 192.168.134.128:9001
# the base directory (full path)
chdir = /usr/local/django_projects/ems #项目所在目录
# Django's wsgi file
wsgi-file = ems/wsgi.py #基于项目目录的相对路径
# maximum number of worker processes
processes = 4
#thread numbers startched in each worker process
threads = 2
#monitor uwsgi status 通过该端口可以监控 uwsgi 的负载情况
stats = 192.168.134.128:9002
# clear environment on exit
vacuum = true
pidfile = /usr/local/django_projects/ems/uwsgi.pid #进程ID存放于此文件,位置可以自定义
#daemonize-run ,file-to-record-log
daemonize = /usr/local/django_projects/ems/uwsgi.log #后台启动模式,日志文件记录位置自定义
#http://ip:port/static/...请求会进入该目录找资源,此处可以指向某个app下的static目录
#或是将所有静态文件汇总到项目的某一个目录下,然后配置在此是更好的选择
#汇集所有已安装app的静态资源到一个目录下,请参见后续内容
#http://ip:port/static/a/b/c/d.png ==> /usr/local/xxxx/static/a/b/c/d.png
static-map =/static=/usr/local/xxx/static # 只在你写的static-map中找静态资源根据如上配置启动uWSGI服务器
uwsgi --ini config.ini
#注意:config.ini是一个相对路径关闭服务器
uwsgi --stop uwsgi.pid
#通过进程id文件使用uwsgi服务器运行项目后,出现静态资源无法加载的问题
1 | # 分析原因: |
- uwsgi如何处理静态资源
1 | # 在config.ini配置文件的最后面来告诉uwsgi服务器要在哪里去找静态资源 |
- 如果你的app过多,每个app自己管理静态资源,此时需要添加的static-map太多
1 | # 只需要做两步操作就可以把所有app下的静态资源static目录的文件收集到某一个目录下 |
STATIC_URL = ‘/static/‘ # 每个静态资源URL的访问前缀
STATICFIELS_DIRS = [os.path.join(BASE_DIR,’static’)] # 添加django内置服务器查找静态资源的路径
STATIC_ROOT = os.path.join(BASE_DIR,’static’) # 收集静态资源时的路径
static-map=/static=xxxx # 告诉uwsgi服务器到哪里去找静态资源