本文已收录至我的个人网站:阿里云后台部署全过程-3-mysql、supervisor初始化
mysql是我用的关系数据库,是主流数据库之一。
supervisor是一个进程管理工具,.py后缀的Python程序,不能在linux下直接运行,需要借助这个工具来启动,它还能监控进程状态,异常退出时,会自动重启进程。
首先,我们要先写一个MySQL的初始化配置文件,记事本或者Notepad++来写就可以了,后缀改为.sql。内容如下:
drop database if exists awesome;
create database awesome;
use awesome;
grant select, insert, update, delete on awesome.* to 'root'@'localhost';
create table users (
`id` varchar(50) not null,
`email` varchar(50) not null,
`passwd` varchar(50) not null,
`admin` bool not null,
`name` varchar(50) not null,
`image` varchar(500) not null,
`created_at` real not null,
unique key `idx_email` (`email`),
key `idx_created_at` (`created_at`),
primary key (`id`)
) engine=innodb default charset=utf8;
上面这段话的大概意思:
1、创建一个数据库,如果前面存在,那就删掉重新创建。
2、选择这个数据库。
3、授予本机root账户对awesome数据库增删查改权限。
4、创建一张名为users的表,从`id`到`created_at`,都是表中的字段,3列依次为:字段、数据类型、是否可以为null。
5、单独的key相当于index,建立索引,有助于提高查询速度。unique key后面跟的是index name。primary key不需要index name,是因为会默认创建索引。
primary key每个表有且只有一个,值不为null且不重复。unique key每个表可以有多个,值不重复,可以有一个值为null。
6、使用的engine是默认引擎innodb,支持事务。
然后,我们通过scp命令,将这个文件,从本地上传到服务器,命令格式如下:
提醒一下,这里的CMD是本地窗口,不是登录SSH后的窗口。
拷贝完成后,切换到对应文件夹下,执行命令:mysql -u root -p < schema.sql,然后输入安装mysql时设置的密码,即可完成初始化。
下面,我们来检查一下初始化的结果。
1、登录数据库,命令:mysql -u root -p
2、查看当前有哪些数据库, show databases;
3、选择我们初始的数据库,命令:use awesome;
4、看一下 有几张表,命令:show tables;
5、最后退出命令:quit;
下面,我们初始化supervisor
1、创建一个配置文件,命令:touch /etc/supervisor/conf.d/awesome.conf
2、通过vim命令,编辑文件,文件内容如下。
command = /srv/awesome/www/app.py
directory = /srv/awesome/www
user = www-data
startsecs = 3
redirect_stderr = true
stdout_logfile_maxbytes = 50MB
stdout_logfile_backups = 10
stdout_logfile = /srv/awesome/log/app.log
3、执行supervisor重载和启动命令:sudo supervisorctl reload,重载;sudo supervisorctl start awesome,启动。
启动出错,找不到对应的文件,因为此时www文件夹是空的,里面没有supervisor要执行的app.py文件。
4、通过scp命令,把python代码和资源文件拷贝到对应文件夹,并安装解压软件,安装完成后,使用解压指令:unzip www.zip
5、编辑一下配置文件的路径,以匹配当前真实路径,再次执行初始化文件,还是报错。
6、切换到配置文件的文件夹下,执行命令,找不到文件错误消失,出现不可执行错误。
7、更改文件的权限,将其变更为可执行,命令:chmod 755 /root/srv/awesome/www/app.py
到这里,supervisor初始化完成。