找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 3780|回复: 2

关于 FreeBSD12.2 + MySQL + Nginx + PHP7.4 的使用记录

[复制链接]
发表于 2021-3-28 01:43:00 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
本帖通过Markdown创建 ( 当然存在冲突的时候 附带了点 bbcode

FreeBSD 是A5推荐的 一款比Linux性能更高效的真Unix-like系统

曾经我以为运维是十分有趣的一件事,直到遇到了FreeBSD,它——让我感受到了痛苦。

硬件信息

https://img.shields.io/badge/CPU-2%20核-blue.svg?style=for-the-badge&logo=freeBSD  

https://img.shields.io/badge/内存-4%20G-black.svg?style=for-the-badge&logo=freeBSD  

https://img.shields.io/badge/OperatingSystem-FreeBSD%2012.2-red.svg?style=for-the-badge&logo=freeBSD   

https://img.shields.io/badge/server_environment-NGINX%201.18.0-green.svg?style=for-the-badge&logo=nginx   

https://img.shields.io/badge/Sql-MySQl%201.18.0-informational.svg?style=for-the-badge&logo=mysql   

https://img.shields.io/badge/Server-PHP%207.4.16-lightgrey.svg?style=for-the-badge&logo=php  

升级系统

1、阿里云ECS 升级系统

在此之前 强烈建议先安装vim wget curl 这三个
pkg install -y vim wget curl
正常情况下 升级FreeBSD 其实很简单,耗时过程在于需要访问外网
而且国内没有什么好的update镜像站,所以一个命令可以睡一天。
只有两步:  

screenshot

详细情况统一说明一下

(为了让它看起来更像控制台的结果 以及方便我节选内容 我选择使用carbon code 展示 ):
freebsd-update 的镜像大陆的基本没有
最近的也就只有日本和台湾 而且也不全   ( 主要是freebsd官方不允许 )
所以如果忍不了巨慢的速度
可以先行使用freebsd.cn的镜像 速度很快 ( 至于觉得安全与否看个人了 )   

vim /etc/freebsd-update.conf    
将 ServerName update.FreeBSD.org  
修改为 ServerName update.freebsd.cn

这样速度就会快很多
screenshot
但是 如果你是阿里云的ECS
你可能需要打补丁 阿里云目前不少机器已经支持了 12.1
但是没有支持到12.2 所以需要自行升级 燃鹅 自行升级是有问题的,重启是绝对启动不起来
在执行 freebsd-update upgrade -r 12.2-RELEASE 以及 /usr/sbin/freebsd-update install 后千万不要重启!!!!

2、给阿里云的系统打补丁

需要进行以下操作

  1. 下载并解压FreeBSD内核源码。

    wget https://mirrors.aliyun.com/freebsd/releases/amd64/12.2-RELEASE/src.txz -O /src.txz
    cd /
    tar -zxvf /src.txz
  2. 下载补丁包。
    本示例中,为virtio驱动打补丁包0001-virtio.patch。   

    cd /usr/src/sys/dev/virtio/    
    wget `https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/0001-virtio.patch`
    patch -p4 < 0001-virtio.patch   
  3. 复制内核文件,并编译安装内核。
    make -j<N> 表示指定编译时的并行数,需要根据您执行编译的环境配置来决定。
    例如,1 vCPU环境建议设置-j2,即vCPU核数与变量N的比值为1:2。
    buildworld的时候 不建议用较多的线程 会出现失败 剩下两个可以   

    cd /usr/src/
    cp ./sys/amd64/conf/GENERIC .
    make -j2 buildworld KERNCONF=GENERIC
    make -j2 buildkernel KERNCONF=GENERIC
    make -j2 installkernel KERNCONF=GENERIC
  4. 编译完成后,删除源码。   

    rm -rf /usr/src/*
    rm -rf /usr/src/.*
  5. 最后reboot重启 自此阿里云的ECS升级就完成了

FreeBSD系统如何打补丁编译内核?

3、后续步骤

freebsd 更新并不会像自称unix-like的系统那样更新所有组件
它只更新内核 所以还需要自行使用pkg upgrade 进行升级组件

cloud-init

这里有个坑 你需要通过 pkg lock py37-cloud-init-20.3
至于名称的话 可以通过 pkg info | grep cloud-init 查询获得
不然新升级的cloud-init 20.4.1 会覆盖之前的Python文件
导致cloud-init启动和初始化报错
这样你也无法更新你的ssh密钥和hosts名称等信息   

# 清空本机缓存信息
cloud-init clean
# 初始化
cloud-init init --local
cloud-init init

然后就可以下载从控制台绑定的密钥到本机了
( 最好把root里的.ssh中的authorized_keys清空一下 ,不然你会有很多以前的密钥可以登录
233333 等服务器自己重启更新实在是太慢了 反正我是没成功过的)   

 vim /etc/cloud/cloud.cfg
 #注释掉以下两个 根本不指望cloud-init还能帮你重置磁盘分区 我更建议手动处理
 # - growpart
 # - resizefs

因为实际上是这么干的   

 # 查看磁盘信息 会显示出磁盘设备名称 例如 ada0
 gpart show
 gpart recover ada0
 # 尝试修复,修改后剩余未分配容量显示正确 ( 一般也没啥可修复的)
 gpart resize -i 3 ada0 
 # 扩展第3分区,将所有未分配容量加到第3分区里
 # 一般看情况 gpt就通常是第三分区 mbr通常是第一分区 实际按显示的分区来
 service growfs onestart # 启动 growfs 服务,自动完成扩展

ssh

建议更换默认的port端口
不然会被扫描攻击 ( 虽然阿里云默认通过密钥登录 而且 密码是随机生成的 )

vim /etc/ssh/sshd_config
以下内容为去掉#  额外的 // 为注释信息 
Port 211 // 更改端口号 
PasswordAuthentication yes // 验证权限 
PermitEmptyPasswords no // 不允许空密码
PermitRootLogin yes // 允许root登录
vim /etc/inetd.conf 修改该文件 去掉ssh前面的#

否则会经常的出现ssh异常信息在vnc界面里
虽然在ssh控制台里没有   

hosts

vim /etc/hosts
127.0.0.1 localhost

后面接上你的域名 以及本机ip后面也接上你购买的域名
当然 前提是得先解析上

MySql

有可能会出现以下情况 先按照其中的修改方案先执行 比较保险  

===> Creating groups.
Creating group ‘mysql’ with gid ’88’.
===> Creating users
Creating user ‘mysql’ with uid ’88’.
pw: user ‘mysql’ disappeared during update
===> Creating homedir(s)
install: unknown user mysql
pkg: PRE-INSTALL script failed

出现该原因,是因为数据未同步,不止pkg安装,包括自己创建用户时,也可能会出现
_解决方案: /usr/sbin/pwd_mkdb -p /etc/master.passwd_

安装错误 创建用户失败 PRE-INSTALL script failed

PHP

安装php7.4以及一些常见用得着的模块

pkg install -y php74-ctype-7.4.16 php74-filter-7.4.16 php74-gd-7.4.16 php74-iconv-7.4.16 php74-json-7.4.16 php74-mbstring-7.4.16 php74-mysqli-7.4.16 php74-openssl-7.4.16 php74-pdo-7.4.16 php74-pdo_mysql-7.4.16 php74-session-7.4.16 php74-xml-7.4.16 php74-zlib-7.4.16 php74-curl-7.4.16
sysrc php_fpm_enable=yes # 使php-fpm开机自启
# vim /usr/local/etc/php.ini
max_execution_time = 300 # 设置的脚本被解析器中止之前允许的最大执行时间

安装WordPress 可能会遇到504错误
在这里更新下 默认是30 单位是秒
自己按需给
然后启动php-fpm service php-fpm start   

其实也可以不着急先启动

Nginx

安装Nginx
pkg install -y nginx
安装 certbot
pkg install py37-certbot
官方有两种方式 standalone 需要 先停止80端口的 Nginx
webroot不需要
certbot certonly --standalone
certbot certonly --webroot
以 standalone 为例 都可以接多个 但你需要先拥有域名 以及先解析到正确的ip
certbot certonly --standalone --email ident@mail.com -d domain.com -d www.domain.com -d abab.domain.com
不出意外 控制台会告诉你 把证书存储在
/usr/local/etc/letsencrypt/live/domain.com/ 目录下 里面都是软连接
fullchain.pem 是总证书文件 privkey.pem 是key文件
如果你要换别的地方 可以直接复制这些软链接到其它位置
nginx 默认是www用户启动 空密码的 无法切换过去
所以 解压文件后 需要 chown -R www:www 将 解压的文件夹所有者变更为 www用户
真实的路径在 /usr/local/www/nginx-dist
剩下便是 /usr/local/etc/nginx/nginx.conf 的配置文件信息
同样的 还是放图片 以便好康一点点
关于监听多个域名我只是图方便 所以重复的比较多
但一定有更简洁的方式 我现在懒得写
另外如果要放开文件上传限制
不光nginx.conf 还有 php.ini 也需要 例如 upload_max_filesize = 10M

修改php-fpm 后 需要重启 php-fpm 和 nginx 只修改nginx不用

nginx

回复

使用道具 举报

发表于 2021-3-28 02:36:21 | 显示全部楼层
这边表示腾讯云给的 FreeBSD 11 虽然太老了但是可以逐步顺利升级到 FreeBSD 12.2。

以及

不喜欢 wget ,宁愿用 curl 也不用 wget 。无法信任 wget 的行为。此外,我肯定会装 screen ,它总之是必备软件。
回复 赞! 靠!

使用道具 举报

 楼主| 发表于 2021-3-28 10:11:58 | 显示全部楼层
0xAA55 发表于 2021-3-28 02:36
这边表示腾讯云给的 FreeBSD 11 虽然太老了但是可以逐步顺利升级到 FreeBSD 12.2。

以及



0.markdown 的排版很方便就是了
1.阿里云这边如果服务器配置很低,仍然只有11.2,直接跃迁也是不行
2.我买的是3月促销的 实际花了1k左右 原价好像8k
3.你不信任wget是腾讯魔改的缘故,阿里云还是可以信任的
所以 装机日常就是更换源...把不信任的卸载了重新装
3.实际上我并不喜欢curl也不喜欢wget 我更喜欢直接上传
4.screen 对我来说不是必备的 _(:з」∠)_

回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-11-22 05:39 , Processed in 0.033234 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表