debian11安装最新mysql5.7 + php8.2 +nginx1.23+lent`s自动SSL

mysql参考了这篇文章 https://blog.csdn.net/weixin_44071721/article/details/124450528

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
在使用mysql8的时候,发现很多地方有了改进,不如5.7用的习惯,于是想尽一切办法切回5.7.

这里记录一下,debian安装5.7的步骤。

官网下载地址:

https://downloads.mysql.com/archives/community/
1.下载 mysql-server_5.7.32-1debian10_amd64.deb-bundle.tar

2.解压 tar xvf mysql-server_5.7.35-1debian10_amd64.deb-bundle.tar

3.准备安装

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libsuma1

4.开始安装(需要按照顺序)

sudo dpkg -i mysql-common_5.7.35-1debian10_amd64.deb
sudo dpkg-preconfigure mysql-community-server_5.7.35-1debian10_amd64.deb

提示输入root密码

输入后继续执行下面命令

sudo dpkg -i libmysqlclient20_5.7.35-1debian10_amd64.deb
sudo dpkg -i libmysqlclient-dev_5.7.35-1debian10_amd64.deb
sudo dpkg -i libmysqld-dev_5.7.35-1debian10_amd64.deb
sudo dpkg -i mysql-community-client_5.7.35-1debian10_amd64.deb

如果提示缺少libaio1就安装上,不提示就继续
sudo apt-get install libaio1

继续
sudo dpkg -i mysql-community-client_5.7.35-1debian10_amd64.deb
sudo dpkg -i mysql-client_5.7.35-1debian10_amd64.deb
sudo dpkg -i mysql-common_5.7.35-1debian10_amd64.deb

安装依赖包
sudo apt-get -f install
sudo apt-get -f install libmecab2

安装mysql-server
sudo dpkg -i mysql-community-server_5.7.35-1debian10_amd64.deb
sudo dpkg -i mysql-server_5.7.35-1debian10_amd64.deb

5.安装完毕,执行mysql

注意,如果出现如下错误

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (40)

请先启动mysql服务,可执行如下命令

/etc/init.d/mysql start
此时再去使用mysql

zhw@debian:~$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

安装成功。

6.启动,停止,重启

$sudo service mysql start

$ sudo service mysql stop
$ sudo service mysql restart

7.卸载(参考)

$ sudo apt-get --purge remove mysql-server
$ sudo apt-get --purge remove mysql-client
$ sudo apt-get --purge remove mysql-common

最后再通过下面的命令清理残余
$ sudo apt-get autoremove
$ sudo apt-get autoclean
$ sudo rm /etc/mysql/ -R
$ sudo rm /var/lib/mysql/ -R

============================= 正文内容=========================

一、下载安装程序

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.36-1debian10_amd64.deb-bundle.tar
二、程序解压

tar -xvf mysql-server_5.7.36-1debian10_amd64.deb-bundle.tar
三、依次依赖程序

apt install psmisc libaio1 libnuma1 libatomic1 libmecab2
四、安装MySQL程序(需要按照顺序依次安装)

dpkg -i mysql-common_5.7.35-1debian10_amd64.deb
dpkg -i mysql-community-client_5.7.35-1debian10_amd64.deb
dpkg -i mysql-client_5.7.35-1debian10_amd64.deb
dpkg -i mysql-community-server_5.7.35-1debian10_amd64.deb
# 期间会提示输入密码, 并确认密码
dpkg -i mysql-server_5.7.35-1debian10_amd64.deb
五、修改相关配置

# 1.允许远程访问, 修改bind-address的值为0.0.0.0
# 2.配置数据库默认字符集,新增参数character-set-server=utf8
vim /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 0.0.0.0
character-set-server=utf8

# 配置客户端默认字符集,新增参数default-character-set=utf8
vim /etc/mysql/conf.d/mysql.cnf

default-character-set=utf8

# 执行赋权语句并刷新生效,在进入mysql环境后执行!
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;

# 查看字符集
show variables like '%character%';
六、配置定时备份任务(定时备份参考示例)

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
#数据库用户名
db_user=root
#数据库密码
db_password=********
#数据库名称
db_name=db_name
#备份存放路径
backup_dir=/var/data_backup
#备份命名所使用的日期格式
date=$(date +%Y%m%d_%H%M%S)
#导出备份
mysqldump -u$db_user -p$db_password $db_name>$backup_dir/$db_name$date.sql
#对备份进行压缩:
mysqldump -u$db_user -p$db_password $db_name gzip >$backup_dir/$db_name$date.sql.gz

安装最新php

1
2
3
4
5
6
sudo apt install curl wget gnupg2 ca-certificates lsb-release apt-transport-https
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt install php php-mysql php-fpm php-xml php8.2-curl php8.2-zip php8.2-imagick php8.2-mbstring php8.2-zip php8.2-gd php8.2-intl
nano /etc/php/8.2/fpm/pool.d/www.conf
# listen = /run/php/php8.2-fpm.sock => listen = 127.0.0.1:9000

下面这些选项统一加10倍

1
2
3
4
5
6
nano /etc/php/8.2/fpm/php.ini
upload_max_filesize
post_max_size
max_execution_time
max_input_time

安装最新的nginx

1
2
3
4
5
echo "deb http://nginx.org/packages/debian/ bullseye nginx" > /etc/apt/sources.list.d/nginx.list
echo "deb-src http://nginx.org/packages/debian/ bullseye nginx" >> /etc/apt/sources.list.d/nginx.list
wget http://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
apt update
apt install nginx
1
nano /etc/nginx/nginx.conf

修改以下内容

1
2
3
4
5
6
7
user  www-data;
http {
server_tokens off;
gzip on;
client_max_body_size 20m;
}

nginx 开启php支持

1
2
3
4
5
6
7
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/index$fastcgi_script_name;
include fastcgi_params;
}

网站目录要给www-data权限

certbot自动SSL证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
自动配置证书nginx.conf
sudo certbot --nginx
手动配置证书nginx.conf
sudo certbot certonly --nginx
手动申请证书
sudo certbot certonly --webroot -w 网站目录 -d 域名
申请通配符域名
certbot certonly -d "*.332b.cn" -d 332b.cn --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
测试续签证书是否正常
sudo certbot renew --dry-run

设置定时任务

crontab -e