将 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/ 目录中,存在多个文件:
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'-LMLPHP
    其中 my.cnf -> /etc/alternatives/my.cnf, 而 /etc/alternatives/my.cnf -> mysql.cnf

  • 默认配置在 *mysql.conf.d/mysqld.cnf 中:
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'-LMLPHP

  • 将配置写到 /etc/mysql/my.cnf 中:
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'-LMLPHP
    注意: 保留文件中原有的两条 directory

# 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 **:
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'-LMLPHP
    可以发现 socketpid-file 均设置在 /var/run/mysqld/ 下。

  • 然后,检查云主机相应目录,发现没有相应文件,故报错。

  • 运行 sudo find / -type s 命令,查找所有 socket 文件

  • 自建相应的目录
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?”

10-06 18:35