服务器安装Nginx+Apache+PHP

安装Apache

这个最简单:yum install httpd即可

然后就可以直接systemctl enable/start操作服务了

相关配置信息说明:

  • Apache默认将网站的根目录指向/var/www/html
  • 默认的主配置文件/etc/httpd/conf/httpd.conf
  • 配置存储在的/etc/httpd/conf.d/目录

安装PHP

这个也是必须,操作步骤如下:

  1. 先添加两个库:
    • yum install epel-release
    • yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
  2. 安装yum-utils: yum -y install yum-utils
  3. 启用PHP74:yum-config-manager –enable remi-php74
  4. 安装PHP74及各种包:sudo yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis
  5. 通过以下两个命令查看PHP安装信息:
    • php -v
    • php -module(s) 测试,加不加s都能成功

Continue Reading

MySQL常用操作

安装

在CentOS7上安装MySQL Community Server 8.0

通过Yum安装的是mariadb,为安装社区标准版,做如下操作:

  1. 官网查找最新的rpm包(repo)的下载地址https://dev.mysql.com/downloads/repo/yum/
  2. 下载rpm包,对CentOS7上的MySQL8来说是这个:https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
  3. 安装rpm包到系统:rpm -ivh xxxxx.rpm 其中xxxx.rpm是上面下载的rpm文件
  4. 安装mysql,注意mysql是命令行客户端,需要安装mysql-community-server
  5. 配置my.cnf文件:lower_case_table_names
    • lower_case_table_names=1
    • 此配置一定要在第一次启动MySQL前完成,否则将导致异常冲突;
    • 默认情况下:Linux=0, Windows=1, OSX=2
    • 区别在于:0,保存表名时大小写敏感(与create table语句一致),查找(比较)时亦是;1,保存表名时统一转换为小写,查找时亦统一转换为小写查询;2,保存表名时大小写敏感(与create table语句一致),查询(比较)时统一都转换为小写。
  6. 配置my.cnf文件,其它:
    • sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    • 配置此内容是为应对部分MySQL5.7与8.0的语法不兼容的问题,例如5.7的数据库在升级到8.0时,datetime字段不支持0000-00-00的字符串作为默认值(Wordpress)将提示:Invalid default value for xxxx;
    • MySQL8不支持NO_AUTO_CREATE_USER,删除此项配置即可;
  7. 启动MYSQL,常规的7.0启动服务命令:systemctl start mysqld,注意后面的d;
  8. 首次启动后会在日志中生成默认密码,通过grep ‘temporary password’ /var/log/mysqld.log查看默认密码;
  9. 修改密码ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘root_new_pwd’;
  10. 或通过mysql还是mysqladmin连接一次会自动提示修改密码;
  11. 通过update user set host =’%’ where user=’root’;允许任意IP连接;
  12. 注意上述操作需要执行flush privileges;

其它安装相关技巧

  1. rpm查询相关包:rpm -qa | grep “mysql”
  2. 删除相关rpm包:rpm -e –nodeps mariadb-server,其中mariadb-server是包名;
  3. 删除mysql的相关文件:sudo rm -rf /var/lib/mysql /var/log/mysqld.log
  4. 查看yum中的repo库:yum repolist
  5. 启用或禁用yum中某个安装包:sudo yum-config-manager –disable mysql80-community,其中–disable改为–enable即为启用;可以通过启用或禁用5.7或8.0版本来安装(当然也可直接指定版本安装);
  6. 查看密码策略:SHOW VARIABLES LIKE ‘validate_password%’;
  7. 本机启用防火墙的情况下,添加防火墙规则:firewall-cmd –zone=public –add-port=3306/tcp –permanent,还需要通过firewall-cmd –reload加载一次方能生效。
  8. 可以通过创建root@%的新用户的方式来允许远程IP连接入;需要执行如下指令:
    1. CREATE USER ‘root’@’%’ IDENTIFIED BY ‘root’;
    2. GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ WITH GRANT OPTION;
Continue Reading

迁移gitea遇到的remote rejected的问题

备案域名之后,把git服务从原来的aws免费主机搬回了国内,同时修改了域名指向,恢复了gitea服务之后,有同事反映说commit失败:

Snipaste 2020 02 08 00 05 50

一般的说法是权限问题,但是整个恢复(迁移)过程并未对gitea的用户权限做修改,而用管理员账号做过新的repo的commit操作均是正常的,后面在gitea@github找到答案:

https://github.com/go-gitea/gitea/issues/2270

UntitledImage

登录gitea后台,dashboard执行一下(Resynchronize pre-receive, update and post-receive hooks of all repositories.)搞定。

UntitledImage

Continue Reading

阿里云DDNS重复A记录问题

前面提到使用了阿里云的动态DDNS,发现域名解析中出现了多个A记录,一开始以为会自动失效(过期),后来发现不是,于是又开始了折腾:

1. 用的是Padavan固件所带的脚本功能;界面上没怎么仔细写逻辑需求,链接里也没仔细的写要求,只写了需要几个KEY,这个当然是正确的(不然A记录也没办法新增),于是通过SSH登录进去,终于在/etc/storage/script下找到了Sh42_aliddns.sh文件;

2. 读完脚本大概确定逻辑,脚本会先通过API获取所有的域名记录,并尝试获取recordid;如果获取成功则updateRecord,反之则addRecord,显然问题出现在:)

3. 脚本是通过“query_recordid | get_recordid”两个函数获取返回值,前一个是通过API获取域名解析记录,后一个是从中解析出相应域名的recordid,所以也不能判断到底是返回值错误还是解析结果出现了问题,于是写了一test函数,加到脚本中:sh Sh42_aliddns.sh test测试query_recordid的结果,错误提示非常明确:“”Code”:”Forbidden.RAM”,”Message”:”User: not authorized to operate on the specified resource, or this API doesn’t support RAM.”。 看起来不像是这个API不支持RAM的原因(连ADD都支持没道理Query不支持的)。

4. 查看阿里云的授权配置:)感觉没有异常,如下:

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "alidns:AddDomainRecord",
                "alidns:DescribeDomainRecords",
                "alidns:UpdateDomainRecord"
            ],
            "Resource": "acs:alidns:*:*:domain/brallow.cn",
            "Effect": "Allow"
        }
    ]
}

问题其实就出现在这里,因为这个策略是我从网上抄来的,并没有仔细研究alidns有什么Action列表,实际上alidns:DescribeDomainRecords与alidns:DescribeSubDomainRecords是两个不同的Action,而脚本使用的是后者,我并没有授权这个独立的RAM访问,新增授权,问题解决。

Continue Reading

2020……

祝大家新年快乐!

Happy New Year!

今年的第一个开发任务,居然会是MFC……上一次用MFC做开发应该有快20年了吧,还是MFC4 ……Lj4OrMore:)可惜的是我居然连源代码都找不到了。

Continue Reading

Upgrade to 5.0

首先是这个事情:)

然后是因为某些特殊原因,换了一次IP:)

最后帖上常用的BTTracker:)备用 

udp://tracker.coppersurfer.tk:6969/announce

udp://tracker.internetwarriors.net:1337/announce

http://tracker.internetwarriors.net:1337/announce

udp://tracker.opentrackr.org:1337/announce

udp://9.rarbg.to:2710/announce

udp://exodus.desync.com:6969/announce

udp://explodie.org:6969/announce

http://explodie.org:6969/announce

udp://ipv4.tracker.harry.lu:80/announce

udp://tracker1.itzmx.com:8080/announce

http://tracker1.itzmx.com:8080/announce

udp://tracker.torrent.eu.org:451/announce

udp://tracker.port443.xyz:6969/announce

udp://open.demonii.si:1337/announce

udp://denis.stalker.upeer.me:6969/announce

http://tracker.port443.xyz:6969/announce

udp://thetracker.org:80/announce

udp://retracker.lanta-net.ru:2710/announce

udp://open.stealth.si:80/announce

udp://bt.xxx-tracker.com:2710/announce

udp://tracker.vanitycore.co:6969/announce

udp://tracker.uw0.xyz:6969/announce

udp://tracker.iamhansen.xyz:2000/announce

udp://zephir.monocul.us:6969/announce

udp://tracker.cyberia.is:6969/announce

https://tracker.fastdownload.xyz:443/announce

https://opentracker.xyz:443/announce

http://tracker3.itzmx.com:6961/announce

http://torrent.nwps.ws:80/announce

http://opentracker.xyz:80/announce

http://open.trackerlist.xyz:80/announce

http://open.acgnxtracker.com:80/announce

udp://tracker.filepit.to:6969/announce

udp://bittracker.ru:6969/announce

http://tracker.city9x.com:2710/announce

http://retracker.telecom.by:80/announce

http://bittracker.ru:80/announce

udp://tracker4.itzmx.com:2710/announce

udp://tracker.tvunderground.org.ru:3218/announce

udp://tracker.kamigami.org:2710/announce

udp://torrentclub.tech:6969/announce

udp://pubt.in:2710/announce

http://tracker4.itzmx.com:2710/announce

http://tracker2.itzmx.com:6961/announce

http://tracker.tvunderground.org.ru:3218/announce

http://tracker.torrentyorg.pl:80/announce

http://torrentclub.tech:6969/announce

http://t.nyaatracker.com:80/announce

http://retracker.mgts.by:80/announce

http://private.minimafia.nl:443/announce

http://prestige.minimafia.nl:443/announce

http://open.acgtracker.com:1096/announce

http://0d.kebhana.mx:443/announce

wss://tracker.openwebtorrent.com:443/announce

wss://tracker.fastcast.nz:443/announce

wss://tracker.btorrent.xyz:443/announce

wss://ltrackr.iamhansen.xyz:443/announce

udp://tracker.justseed.it:1337/announce

udp://packages.crunchbangplusplus.org:6969/announce

https://1337.abcvg.info:443/announce

http://tracker.tfile.me:80/announce.php

http://tracker.tfile.me:80/announce

http://tracker.tfile.co:80/announce

http://share.camoe.cn:8080/announce

http://peersteers.org:80/announce

http://fxtt.ru:80/announce

http://agusiq-torrents.pl:6969/announce
Continue Reading

神级输入法!Rime:)

一个高度可定制的输入法:)
绝大部分功能都可以通过配置、重新部署的方式实现,效率高,性能好!

还没有研究透,发这个blog也是为了测试输入法的适应程度,先写到这里,后面补充重点。

有几点是可以确定的:

1. 快捷键各项操作等可以实现自定义或定制化,这样一来无论你之前是习惯何种输入法,总可以“适应”之。
2. 码表可以自己挂,86,98各种拼音都不是问题。
3. 可以增加自己的词库。

可以想像的缺点是:1. 不能互联网自动更新,所以一些新词汇是不能自动入库的,必须要自己来想办法了。

Continue Reading

迁移到GCP

一直是不能忍受DO的蜗牛速度,之前GOOGLE有赠送300$也没怎么用,今天用上!
为了以后备份续费方便用的是最便宜的0.6G RAM,1 shard vCPU,10G Standard Disk方案,同样是5$/mon,但是DO确实配置高一点(之前是500MB RAM现在升级到1G了,而且是25G SSD)。

GCP的好处:
1. 很多机房,很多选择,尤其是有亚洲(台湾,东京,新加坡,孟买,香港(没开通))的机房:
2. 有其它功能可供选择。

延时从接近300ms一下子跳到30ms左右,这种心情是一般人不能理解的。

顺便把一直想干的wordpress数据库清理工作干了,只导入了post,term表,其它全部不要了,手工重新配了thems之类的,保存一个二次的备份。

顺便把ssr,intellijsrv也做成自动启动,不纠结。

Continue Reading