将 web app 部署到云主机(vultr in this case)
- 系统为 Ubuntu 16.04
- 完成各类依赖安装(包括 supervisor、nginx)
- 安装 MySQL server(5.7.23)
配置 mysql-server
-
更改默认字符为 UTF-8 (Change MySQL default character set to UTF-8 in my.cnf?)
-
注意 Ubuntu 下 的 /etc/myql/ 目录中,存在多个文件:
其中my.cnf -> /etc/alternatives/my.cnf
, 而/etc/alternatives/my.cnf -> mysql.cnf
-
默认配置在 *mysql.conf.d/mysqld.cnf 中:
-
将配置写到 /etc/mysql/my.cnf 中:
注意: 保留文件中原有的两条 directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
# For Ubuntu:
sudo service mysql start;
# For CentOS or RHEL:
sudo service mysqld start
sudo /etc/init.d/mysqld start
注: web app 启动前,需要 flask db upgrade
后来远程登录 web app 时,报错 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
, 并且无法 stop
或者 restart
-
首先,检查 MySQL 的默认配置文件 **/etc / mysql / mysql.conf.d / mysqld.cnf **:
可以发现 socket 和 pid-file 均设置在/var/run/mysqld/
下。 -
然后,检查云主机相应目录,发现没有相应文件,故报错。
-
运行
sudo find / -type s
命令,查找所有 socket 文件
To find all socket files on your system
- 自建相应的目录
sudo mkdir -p /var/run/mysqld/
- 自建相应的文件
sudo touch /var/run/mysqld/mysqld.pid
sudo touch /var/run/mysqld/mysqld.sock
- 更改目录及文件所属权限为 mysql:mysql
sudo chown mysql:mysql -R /var/run/mysqld
- 重启
sudo service mysql restart
注:如果没有相应的目录(/var/run/mysqld),可以自建目录,然后依据上述方法排错。Why is “mysqld.pid” and “mysqld.sock” missing from my system even though the values are set in “my.cnf?”