猫窝私语 — Makumo's Blog

玛酷猫的温馨小窝,记录生活点点滴滴。

@玛酷猫3 周前

12/30
20:58
建站日志

挪窝记2024

历史总是惊人的相似呀,距离上次挪窝没几年(小窝迁移升级),类似的事情再次上演,前几年续费都有大力度折扣,算下来续费一年才300不到,哪知道今年直接蹦到600多,幸好11月份阿里云有活动,99元新购,续费也是99,这样一买一续,198到手两年,还是挺不错的。为了省钱就辛苦下手指头了。而且配置也有提升,原来的1U1G1M直接换成2U2G3M,直接换改善型小窝,等2年后看看有没有其他活动再换好了。

本来挪窝不复杂,阿里云有“搬家”的教程,做一个镜像备份,跨区拷贝,在还原就好了。但是考虑过了好几年了,系统、环境的老版本慢慢没有官方维护了,索性重新搭建一边好了。在购买的时候就舍弃了CentOS,直接用了阿里云自己的Alibaba Cloud Linux 3,原来PHP用的8.1,直接用最新的8.4,其他环境都使用最新的稳定版。架构还是和以前一样,选用LANMP模式,Nginx跑静态文件和代理,Apache跑PHP8,预配NodeJS,平时做简单的调试用,通过Nginx转发访问。

流程和以前差不多,区别也还是有的,首先就是命令由yum换成dnf(这下又知道dnf的一个新的解释),虽然两者有一大堆区别,从使用者角度来看,用起来感觉是一样的。阿里的官方教程也很齐全手动部署LNMP环境手动部署LAMP环境,照着文档操作,安装Nginx、Apache,配置方面也和老服务器没什么的大区别,参考老服务器配置,配置好Nginx、Apache以及各个站点。

数据库没有用Mysql,还是用的MariaDB,安装和以前一样,只不过把yum换成dnf。MariaDB初始化会有一系列问题,对应的回答下就好。

1、Enter current password for root (enter for none):
# 输入root密码,新装直接回车。
2、Switch to unix_socket authentication [Y/n]
# 是否切换到unix_socket权限验证,考虑安全性,直接n,回车
3、Change the root password? [Y/n]
# 是否修改root密码,y回车,输入新密码,再次输入一遍新密码。
4、Remove anonymous users? [Y/n]
# 是否删除匿名用户,y回车
5、Disallow root login remotely? [Y/n]
# 禁止root远程登录,y回车
6、Remove test database and access to it? [Y/n]
# 删除测试库,y回车
7、Reload privilege tables now? [Y/n]
# 刷新授权表,使设置立即生效,y回车

接着参照老服务器账号,新建一个账号用户用于正常的使用,先进入MariaDB,

mysql -u root -p
# 输入刚才的密码
# 新建用户
GRANT ALL ON *.* TO '新用户'@'localhost' IDENTIFIED BY '密码' WITH GRANT OPTION;
# 刷新权限
FLUSH PRIVILEGES;
# 退出
exit;

接着将老服务器数据库备份,在新服务器上还原

# 使用mysqldump备份
mysqldump -u用户 -p密码 库名 2>/dev/null |gzip >文件路径和名称.sql.gz
# 下载到本地在上传到新服务器并解压
# 登录mariaDB
mysql -u新用户 -p
# 创建数据库
CREATE DATABASE 数据库名;
exit
# 从sql文件还原数据库
mysql -u用户 -p密码 < 文件路径和名称.sql

接着打包老服务器站点文件,下载,上传到新服务器。其实可以在服务器之间传输,考虑打包后没多大,就下到本地在上传,顺便本地留一个备份。

# 打包
tar czvf 压缩包名.tar.gz 路径
# 解压
tar xzvf 压缩包名.tar.gz -C 路径
# 修改权限
chown -R apache:apache 站点根目录

接着配置域名证书,和之前配置一样(阿里云设置泛域名SSL证书

export DP_Id='ID数字'
export DP_Key='Token字符串'
acme.sh --issue -d makumo.com -d *.makumo.com --dns dns_dp

系统出现如下提示

acme.sh is using ZeroSSL as default CA now.
Please update your account with an email address first.
acme.sh --register-account -m my@example.com
See: https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA

原来acme.sh把CA服务器由Let’s Encrypt更换成ZeroSSL了,那就按着提示注册一个用户好了,注册完后,再重新运行一遍,耐心等待一会,证书搞定。
重头都检查了一遍,没发现啥大问题,结果启动Nginx就报错了,提示证书文件没找到。仔细看了下,原来证书生成的路径不太一样,修改了下Nginx站点证书路径,Nginx启动正常。
接着httpd启动报错,提示Invalid command php_admin_value,以前踩过的坑又踩一遍(升级PHP8踩坑记),用命令装了下mod_php,结果提示already installed,这就费解了。网上搜了半天也没找到如果解决这个问题,大部分版本都比较老,用之前方法就能解决。按道理两台服务器环境差的不多,老的Apache2.4.6+php8.1,新的Apache2.4.37+php8.4,配置文件都一样,不应该出现这个问题。暂时先注释掉这一行,等找到解决方案了在来处理了。

最后把域名解析到新服务器上,确定解析完成后,访问了下,站点都顺利打开。挪窝完成,再过两天就2025了,期待着新年新气象。

挪窝记2024

@玛酷猫6 年前

01/3
22:08
建站日志

小窝迁移升级

今天忽然收到阿里云的提示,个人的云服务器要到期了,连忙登录上去准备续费,一看价格,我勒个擦,8XX,当初买的时候才3XX,去年续费的时候5XX,这涨的也太快了,看了下新购,同样配置同一地区也才5XX,算了算了,还是重新购买台好了,虽然要重新配环境迁移网站麻烦点,谁让咱穷呢。

下单付款,等会就开通,ssh连上去,先配置下环境,之前那台服务器用的lnmp一键包,当初菜鸟一只啥都不会。现在基本了解了后,一键包方便是方便,但是问题也不少,首先就是文件的安装位置都变了,配置文件也和默认的不太一样,详细配置的时候各种别扭,其次就是带着一些不用的软件,还有就是版本升级的问题。所以还是自己配好了,好在CentOS配置起来比较简单,几行命令就好了。服务结构还是像往常那样,Nginx跑静态文件和代理,Apache跑PHP7,预配NodeJS和Ruby,平时做简单的调试用,通过Nginx转发访问

# 安装nginx
yum install nginx
# 由于yum源没有php7,所以要更换
yum install epel-release
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 安装php7.2以及相关扩展
yum install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml
# 安装mariadb
yum install mariadb mariadb-server
# 设置mariadb密码,需要先运行mariadb服务
mysql_secure_installation

新建站点和相关配置就不多说了,有几点要注意下,
1、httpd的默认配置文件里面,所有请求会全部拒绝,要删掉或者注释掉

<Directory />
    Options FollowSymLinks
    AllowOverride none
    Require all denied
</Directory>

2、站点的目录用户组要调整成为apache:apache

httpd服务的端口调整为88,在Nginx站点配置的时候,添加相关的配置说明,如下例子

location /
{
    try_files $uri @apache;
}
location @apache
{
    internal;
    proxy_pass http://127.0.0.1:88;
    include proxy.conf;
}

location ~ [^/]\.php(/|$)
{
    proxy_pass http://127.0.0.1:88;
    include proxy.conf;
}

proxy.conf里面存放一些代理设置

proxy_connect_timeout 300s;
proxy_send_timeout   900;
proxy_read_timeout   900;
proxy_buffer_size    32k;
proxy_buffers     4 32k;
proxy_busy_buffers_size 64k;
proxy_redirect     off;
proxy_hide_header  Vary;
proxy_set_header   Accept-Encoding '';
proxy_set_header   Host   $http_host;
proxy_set_header   Referer $http_referer;
proxy_set_header   Cookie $http_cookie;
proxy_set_header   X-Real-IP  $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header   X-Forwarded-Proto $scheme;

最后迁移站点文件、还原数据库,启动各服务并设置随系统启动,测试没问题后将域名切换过来就ok了。

systemctl enable nginx.service
systemctl enable httpd.service
systemctl enable maridb.service
systemctl start nginx.service
systemctl start httpd.service
systemctl start maridb.service

顺便一提的是本次迁移也干掉的www,www是个很奇怪的历史遗留的问题,这是个二级域名,可能很多人认为方便呀,直接ctrl+enter就自动补全了,可是最早的IE浏览器直接ctrl+enter的话补全的是www.xxx.cn.co而并不是www.xxx.com,方便无从谈起,直到后续大量的国产带壳浏览器的出现才修正过来,况且那时候.net域名还是很流行的,还有不少.cn的域名,而且大部分人都不会直接打域名来访问网站,基本上都是打开百度搜索网站,要不就是收藏夹或者聚合网址来上网。所以www就是多余的,去掉后网址还精简一些。虽然去掉www会影响搜索引擎的搜录,好在小窝文章本来就不多,写的也是断断续续的,大部分都是方便自己以后查找用的,也不在乎那点收录了。

小窝迁移升级

@玛酷猫17 年前

08/6
13:30
Linux

redhat9下安装 MySQL5+Apache2+php5[转]

(正在研究LINUX,寻找了点资料,大家一起分享。)

准备工作: 下载安装文件mysql-standard-5.0.27-linux-i686.tar.gz、httpd-2.2.3.tar.gz、php-5.2.0.tar.gz ,并把它们放在/usr/local/src/ 文件夹里。
一、安装MySQL5
  
1、 在 /usr/local/  里建立 mysql 文件夹。
   # cd /usr/local
   # mkdir mysql
 
2、在 mysql 文件夹里解压文件( 这样解压出的文件夹就是当前文件夹下面 )。
   # cd mysql
   # tar -zxfz  /usr/local/src/mysql-standard-5.0.27-linux-i686.tar.gz
   # ln -s mysql mysql-standard-5.0.27-linux-i686 
//为文件夹 mysql-standard-5.0.27-linux-i686 建立快捷方式。
 
3、# groupadd mysql   
// 建立mysql组
   # useradd mysql -g mysql 
//建立mysql用户并且加入到mysql组中 
 
4、# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf  
//在 support-files目录下有4个模版文件,我们选择其中一个座位Mysql的配置文件,覆盖/etc/my.cnf(系统默认的配置,其中设置了性能参数和Mysql的一些路径参数)。
 
5、# ./scripts/mysql_install_db –user=mysql    
//初试化表并且规定用mysql用户来访问。初始化表以后就开始给mysql和root用户设定访问权限。
 
6、# chown -R root .    
 //设定root能访问/usr/local/mysql ( 注意root 后面有一个空格和点)。
 
7、 # chown -R mysql data     
//设定mysql用户能访问/usr/local/mysql/data ,里面存的是mysql的数据库文件.这个目录是在/etc/my.cnf中有配置,在mysql_install_db时产生。
 
8、# chown -R mysql data/.    
//设定mysql用户能访问/usr/local/mysql/data/mysql下的所有文件
 
9、# chgrp -R mysql .      
//设定mysql组能够访问/usr/local/mysql
 
10、# /usr/local/mysql/bin/mysqld_safe –user=mysql &     
//运行mysql,如果没有问题的话,应该会出现类似这样的提示:[1] 42264
   # Starting mysqld daemon with databases from /usr/local/mysql/var    
//如果出现 mysql ended这样的语句,表示Mysql没有正常启动,你可以到log中查找问题,Log文件的通常在/etc/my.cnf中配置。大多数问题是权限设置不正确引起的。
 
11、# /usr/local/mysql/bin/mysqladmin -u root password yourpassword    
//默认安装密码为空,为了安全你必须马上修改.
 
12、# cp support-files/mysql.server /etc/rc.d/init.d/mysqld     
//copy编译目录的一个脚本
   # chmod 700 /etc/init.d/mysqld    
//设置使mysql每次启动都能自动运行
   # chkconfig –add mysqld
   # chkconfig –level 345 mysqld on
 
13、# service mysqld start    
//启动mysqld服务
   # netstat -atln     
//查看3306端口是否打开。要注意在防火墙中开放该端口。
  
二、安装apache2
  
1、解压文件
   # cd /usr/local 
   # tar -zxvf /usr/local/srchttpd-2.2.3.tar.gz
 
2、安装
   # cd httpd-2.2.3
   # ./configure –prefix=/usr/local/apache –enable-track-vars –enable-cgi –enable-so –enable-rewrite –enable-mods-shared=all –with-config-file-path=/usr/local/apache/conf
   # make
   # make install
 
3、启动
   # /usr/local/apache/bin/apachectl start
   # netstat -utl   //并检查是否启动
 
4、把apache加入开机启动,把下面这一行加入到/etc/rc.local中。
   /usr/local/apache/bin/apachectl start
  
三、安装php5
  
请先安装libxml,2.6.10以上版本的。

1、# cd /usr/local
   # tar -zvxf /usr/local/src/php-5.2.0.tar.gz 
   # cd php-5.2.0
 
2、# ./configure –prefix=/usr/local/php –with-mysql –with-apxs2=/usr/local/apache/bin/apxs
–enable-trace-vars –with-zlib-dir=/soft/zlib-1.2.3/
 
3、 # make; make install
 
4、拷贝PHP配置文件php.ini:
   # cp ../php5.2.0/php.ini-dist /usr/local/php/lib/php.ini
 
5、添加php类型
   # vi /usr/local/apache/conf/httpd.conf
   AddType application/x-httpd-php .php (230行左右)
 
6、重启
   # /usr/local/apache/bin/apachectl stop
   # /usr/local/apache/bin/apachectl start
 
7、测试
   # cd /usr/local/apache/htdocs
   # vi test.php
   <?php
      phpinfo();
   ?>
最后输入 http://您的地址/test.php 测试

redhat9下安装 MySQL5+Apache2+php5[转]