第七十期-网站迁移记录(Ubuntu18.04 Nginx+PHP7.2+MySQL5.7)

发布于 2021-06-30  288 次阅读


一、变化
网站从 阿里云上海 迁移到了 Azure HK
终于可以摆脱反人类的路由了 由于域名没有备案
该站点一直是
阿里云上海->natfrp.com 洛杉矶CN2->Cloudflare->Client
现在是
Microsoft Azure HK B1s -> Cloudflare -> Client

但是迁移后 站点的live2d炸了 不知道为什么 懒得管了

二、问题

1.apt源问题。
本人技术实在很菜,起初本人在自己本地虚拟机上搭建了一遍,apt源全程清华 没有问题。(其实没问题很奇怪,一会儿会说)
奇怪的地方来了:
到了Azure机子上就是另外一回事,改清华源,什么东西都不听使唤 。
让装php7.2 他给装php7.4。
虚拟机默认mysql5.7 Azure就默认mysql8
反正清华源就是一个奇怪的源,后来推掉了几次机子,改用了ubuntu官方源,就是默认源。。。才解决了这些鸡毛蒜皮的问题。

2.phpmyadmin搭配Nginx的问题
在虚拟机上,我默认Apache2代理phpmyadmin,想着反正把/etc/apache2/ports.conf里的端口改成与Nginx不冲突的端口。
在Azure机子上 我考虑到B1s配置有限。不想装Apache2,又尝试 用Nginx来代理phpmyadmin. 就总是502。
后来发现其实我有一个php插件没装(php7.2-xml),然后又遇上不能上传zip,php7.2-zip没装。
别人告诉我,phpmyadmin页面地址后面加上/setup就能知道自己有什么php依赖插件没有安装了。
bzip2那个依赖对应的是php7.2-bz2.

3.宝塔与手动配置构造不同问题
原本自己就不喜欢用宝塔,但由于技术烂,不得不用。
但是Azure b1s这捉襟见肘的配置,任何资源都是宝贵的,我不想用宝塔,全手动配置。
我是个懒狗,而且不会配置Nginx,于是耍了个小聪明。
想着宝塔有配置文件,里面的 路径 按需修改,,网站文件放到自己想要的路径,include的内容找 原文件 代码 复制黏贴回去 不就行。其实要比我想象的复杂得多。
我根本不懂什么php7.2-cgi和php7.2-fpm的区别,改了 fastcgi_pass unix:,因为宝塔那边原本是/tmp/php7.2-cgi.sock我这里没有,就改成了/run/php/php-fpm-7.2.sock这个错误折腾了我很久,我都没发现,应该是php7.2-fpm.sock。
改完东西申请完证书,nginx -t提示OK没问题,打开站点提示502.。。(为什么nginx -t不告诉我fastcgi_pass那里有错误啊)(恼

才PATH_INFO就不通用,后来只能找Sakura Frp避难所的群友帮我改。
然后不知道为什么 FASTCGI那块好像有点问题,看起来是和宝塔一样的。。。
群友帮我加上了

fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
include fastcgi_params;

反正我看不懂。。。

然后宝塔的组名www:www和Nginx手动安装不一样,Nginx那个叫www-data:www-data
4.宝塔给我吃的药
一直以来我都不知道防跨站攻击是干嘛的,后来才知道这功能是防自己人的。
好不容易把配置文件的问题修好了,站点提示No input file specified. F12提示404(为下文埋下伏笔)
一看百度,要把php.ini里大约第773行的位置修改一下,把;这个注释去掉,0改成1.
重启了php和nginx还是一个德性,我看了配置文件许久都没找出个错误来,就一直在fastcgi_param SCRIPT_FILENAME上修改,该怎么样还是怎么样。
我去做了个PHP测试页面和html测试页面的站点(test.eastern.moe,没做解析)
(index.php代码)

发现PHP和html都能打开
自己的站里html能开 PHP死活就不能开???

我无聊去ls自己网站目录,才看见.user.ini那玩意,
我才想起宝塔防跨站攻击这玩意,cat这个文件,里面赫然写着我宝塔上网站文件的位置,他妈的不404才怪,不No input file specified.才怪啊
删掉这个文件,重启nginx,好像世界都宁静了???

三、安装过程(笔记 供参考)

sudo apt install nginx php7.2 php7.2-fpm php7.2-mysql mysql-server

sudo systemctl start nginx
sudo mysql_secure_installation
sudo systemctl start mysql.service
sudo mkdir -p /var/www/html/phpmyadmin/phpMyAdmin-5.1.1-all-languages
sudo chown -R www-data:www-data /var/www/html/phpmyadmin/phpMyAdmin-5.1.1-all-languages
wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip
sudo apt install unzip
unzip phpMyAdmin-5.1.1-all-languages.zip

cd phpMyAdmin-5.1.1-all-languages
sudo mv * *.* /var/www/html/phpmyadmin/phpMyAdmin-5.1.1-all-languages/

sudo chown -R www-data:www-data /var/www/html/phpmyadmin/phpMyAdmin-5.1.1-all-languages
sudo nano /etc/nginx/sites-available/phpmyadmin.conf
sudo systemctl restart nginx.service
sudo systemctl start php7.2-fpm.service

sudo ln -s /etc/nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-enabled/

sudo mkdir /var/wwwlogs;sudo touch /var/wwwlogs/phpmyadmin-access.log
sudo systemctl restart nginx.service

sudo adduser jacksonzwang mysql
sudo apt install php7.2-xml

mysql> create user "test"@"localhost" identified by 'testpasswd';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on *.* to "test"@"localhost";
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

Skyler
2021/6/30 14:59


Skyler & Harry 's Notes