在 FreeBSD 上安装 Magento2

下载 magento,解压缩。

安装前先将magento下的文件夹全改为777权限,和chown -R www:www ./*
# find . -type d -exec chmod 777 {} \;
安装后再将所有文件夹权限改为755,保留几个文件夹的777权限
# find . -type d -exec chmod 755 {} \;
# chmod 777 ./app/etc
# chmod 777 ./var
# chmod 777 ./var/.htaccess
# chmod 777 ./app/etc
# chmod 777 ./pub/media
# chmod 777 ./generated
# find ./var -type d -exec chmod 777 {} \;

参考:https://devdocs.magento.com/guides/v2.3/install-gde/install/legacy-file-system-perms.html

打开 magento/setup/ 开始安装,带有样本数据的安装多半会失败,可能php内存不够。先安装不带数据,再导入吧。

magento 安装期间显示例外。
清除<magento_root>/generated/code之下,其他目录var和generated如下:
# cd magento
# rm -rf ./generated/code/* ./generated/metadata/* ./var/cache/*

并且清除cookie,再重新安装。

导入样本数据库,参考教程, https://devdocs.magento.com/guides/v2.3/install-gde/install/cli/install-cli-sample-data-clone.html

# cd magento

# php bin/magento setup:upgrade

可能会提示php内存不够,重新设置下内存就好

# ee /usr/local/etc/php.ini
memory_limit = 2048M

# /usr/local/etc/rc.d/php-fpm restart

重启php,即可

装完 magento 2.3.2 第二天就删除了,因为不支持PostGreSQL数据库,而且运行速度极其慢。

.htaccess 和 .user.ini

FreeBSD 12 下

apache 2.4
ee /usr/local/etc/apache24/httpd.conf
<Directory />

AllowOverride None 改为 AllowOverride All

</Directory>
重启 apachectl restart

如果 .htaccess
php_flag display_errors on
报500错误了,查看apache的error_log找到了如下的错误信息:
.htaccess: Invalid command ‘php_flag’, perhaps misspelled or defined by a module not included in the server configuration
是suPHP的问题,写另外一个文件”.user.ini”
error_reporting = E_ALL
display_errors = On
更改过”.user.ini”要重启php-fpm生效
#/usr/local/etc/rc.d/php-fpm restart

https://www.php.net/manual/zh/configuration.file.per-user.php

利用FreeBSD的Livesf CD盘拷贝数据

X60换固态硬盘,原来的日立5400转的硬盘太慢了,试一试固态硬盘。

但是原来硬盘的系统和数据要拷过去,不想重装了。ghost是必须的,但是要注意Fat32格式的分区不能存超过4g的文件,要分割。

ghost之前要清理一下系统,做个磁盘碎片整理,把虚拟文件关了,或者转移到不ghost的分区。

ghost的过程就不说了,网上教程很多。

ghost之后发现文件太大,12G,刻盘也不行,U盘也没有那么大。想一下,只能用FreeBSD的livesf cd。

先把x61的xp装个FileZilla Server,做成ftp服务器。不过要记得打开xp防火墙的ftp功能,然后把ghost备份的目录设为ftp的目录即可。

把固态硬盘插到T61上,用MaxDOS光盘启动,用PQ分区,记得要把其中一个逻辑分区格式成fat32。

然后用FreeBSD的Livesf CD盘启动。进入安装界面后选 急救模式(Fixit),再选 CD/DVD。

设置下网卡,ifconfig看看网络怎么样。

然后把硬盘挂起来。

先去 /dev 看看硬盘,注意要选择fat32的分区挂,freebsd的逻辑分区是从5开始的。

# mkdir /disk1
# mount_msdosfs /dev/ad1s6 /disk1
# cd /disk1
# fetch ftp的文件地址

这样就可以把ghost的文件下载到固态硬盘上,然后再用MaxDOS启动,用ghost恢复系统即可。然后把固态硬盘插到x61上,无法启动,估计是ghost分区的时候擦掉了分区信息,所以重新插到t61上,用MaxDOS启动用DG重新激活下分区。

然后就一切ok了,固态硬盘速度真快。

备注一下,FreeBSD无法写操作NTFS,只能读操作。如果xp毁掉了,要读回C盘上的重要数据的话,也可以这样操作,把C盘的数据拷贝到其他分区(fat32)。

# kldload /mnt2/boot/kernel/ntfs.ko

如果是中文命名的文件,还要
# kldload /mnt2/boot/kernel/libiconv.ko
# kloload /mnt2/boot/kernel/ntfs_iconv.ko

修改FTP.py 的list_files ,gedit插件 FTP Browser 支持 ln -s 链接

gedit的FTP Browser插件有个BUG, ln -s 链接的文件夹不能识别为文件夹。lrwxr-xr-x权限的文件就是ln -s 链接的文件。

自己修改下 ~/.gnome2/gedit/plugins/FTP.py 文件,就可以了,方法在最后,自己改一下,其实就是将所有权限”-“开始的都是文件,其余的都是文件夹,这样的话软链接文件就没有办法了,没有两全其美的办法!

还有如果之前有连接过链接的文件夹,会留下缓存文件,造成文件不能编辑,根据提示去/tmp把那个缓存删除就可以了!

软链接和硬链接我认为,软链接可以链接文件夹而硬链接不可以。具体可以参考这里:http://linux.chinaunix.net/bbs/viewthread.php?tid=461282Continue Reading

FreeBSD 8.0 安装 Tor 翻墙

安装Tor
# cd /usr/ports/security/tor && make install clean

Tor配置文件
# cp /usr/local/etc/tor/tor-tsocks.conf.sample /usr/local/etc/tor/tor-tsocks.conf
# cp /usr/local/etc/tor/torrc.conf.sample /usr/local/etc/tor/torrc

设置开机自启动Tor
# echo ‘tor_enable=”YES”‘ >> /etc/rc.conf

手动启动Tor
# /usr/local/etc/rc.d/tor start

安装FireFox的FoxyProxy插件,https://addons.mozilla.org/zh-CN/firefox/addon/2464。FoxyProxy插件的设置这里就不说了,网上很多自己去Google下,设置还是比较傻瓜的。记住配置Tor向导时,privoxy选不使用,其他都默认,端口是9050。

最近GFW的功力大长,不配置Tor网桥恐怕难以奔向自由。不过不怕,下面来看怎样配置Tor网桥:
发送邮件给:bridges@torproject.org,主题为”get bridges”,内容随便。
收到回复邮件后,将回复邮件中的bridge列表附加至torrc配置文件末尾:
# ee /usr/local/etc/tor/torrc

UseBridges 1(0为关闭)
bridge 213.47.159.85:11001
bridge 91.35.132.68:9001
bridge 217.11.52.30:443

重新启动Tor
# /usr/local/etc/rc.d/tor restart
查看Tor
# sockstat -4 | grep 9050

gedit 支持 FTP 编辑

FreeBSD 8.0
Xfce4
Gedit2
gedit-ftp-browser(http://code.google.com/p/gedit-ftp-browser/)

gedit 是FreeBSD下的轻型文本编辑器,我用它来编辑我的网站,默认的安装是不支持 FTP 远程连接编辑的,需要安装插件来支持。下面就介绍一个 gedit-ftp-browser 插件的安装过程。

# cd ~/.gnome2/gedit/plugins

如果没有plugins文件夹就新建一个
# mkdir ~/.gnome2/gedit/plugins

# fetch http://gedit-ftp-browser.googlecode.com/files/gedit-ftp-browser.tgz
# gunzip gedit-ftp-browser.tgz

打开 gedit ,编辑 -> 首选项 -> 插件 -> 点选 FTP Browser,快捷键 F9 打开侧边栏,点击 FTP Browser,输入服务器、用户名、密码,ok!

GRUB 引导 8.0-RELEASE-i386-bootonly.iso 安装 FreeBSD 8.0

下载 Grub4Dos,解压缩在 fat32 分区,修改或添加以下代码在 menu.lst 文件:

title find and boot 8.0-RELEASE-i386-bootonly.iso
fallback 5
find --set-root /8.0-RELEASE-i386-bootonly.iso
map --mem /8.0-RELEASE-i386-bootonly.iso (0xff)
map --hook
chainloader (0xff)

下载 FreeBSD 8.0-RELEASE-i386-bootonly.iso 放在主分区的第一分区,也就是第一个分区,我当时第一分区是安装 Win2000 的 NTFS 分区,也可以引导,但是 Grub 得放在 fat32 分区。

纯DOS启动,没有纯DOS的用 vfloppy 来虚拟 Win98 DOS 启动。

进入 Grub 目录,启动 grub 命令,比如 C:\GRUB>grub 。在选项里选择 boot 8.0-RELEASE-i386-bootonly.iso 启动,就可以进入 FreeBSD 8.0 的安装,安装的过程参考 用memstick.img 安装 FreeBSD8.0-releases。安装的介质可以选择 MS-DOS 分区安装(硬盘安装)或FTP安装,网络好的话FTP安装是不错的选择。

MS-DOS 分区安装参考这里,可以识别 NTFS
FTP安装参考这里,并且要提前配置网卡,也有可能会失败 🙂 。注意不要中国的 FTP 服务器,因为线程的限制会掉线,我就是先无比自豪的选择了 ftp.cn.freebsd.org ,然后掉线后无可奈何的选择了 ftp.jp.freebsd.org。

FreeBSD 8.0 Firefox 安装 Flash 插件

# cd /usr/ports/www/nspluginwrapper && make install clean
如果没有加载Linux核心模块,会出错,请加载Linux后重新安装

# kldload linux
# echo ‘linux_enable=”YES”‘ >> /etc/rc.conf

# cd /usr/ports/www/linux-f10-flashplugin10 && make install clean
# mkdir /usr/local/lib/browser_plugins
# ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so /usr/local/lib/browser_plugins/

按照 FreeBSD 版本, 在安装了正确的 Flash port 之后, 插件必须由每个用户运行 nspluginwrapper 安装
% nspluginwrapper -v -a -i

# mount -t linprocfs linproc /usr/compat/linux/proc

# ee /etc/fstab

把以下这行加入 /etc/fstab:
linproc /usr/compat/linux/proc linprocfs rw 0 0

# cd /usr/local/lib/firefox3/plugins && ln -s /usr/local/lib/browser_plugins/npwrapper.libflashplayer.so npwrapper.libflashplayer.so

参考:http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/desktop-browsers.html

PHP 条形码 Image_Barcode

# cd /usr/ports/graphics/pear-Image_Barcode && make install clean

<?php
require_once('Image/Barcode.php');
Image_Barcode::draw('RR651943036CN', 'Code39', 'gif');
exit;
?>

安装 GeoIP

FreeBSD 7.0-RELEASE-i386 + PHP5 + Apache2.2

# cd /usr/ports/net/pecl-geoip && make install clean
# apachectl restart
# cd ~
# fetch http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
# gunzip GeoIP.dat.gz
# mv GeoIP.dat /usr/local/share/GeoIP/GeoIP.dat
# fetch http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# gunzip GeoLiteCity.dat.gz
# mv GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat

<?php
echo geoip_database_info(GEOIP_COUNTRY_EDITION);

$country = geoip_record_by_name('wangblog.org');
if($country){
	echo "\nThis host is located in: \n";
	print_r($country);
}
?>

可以写个定时更新IP地址库的程序:

cd ~
/usr/bin/fetch http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
/usr/bin/gunzip GeoIP.dat.gz
mv GeoIP.dat /usr/local/share/GeoIP/GeoIP.dat
/usr/bin/fetch http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
/usr/bin/gunzip GeoLiteCity.dat.gz
mv GeoLiteCity.dat /usr/local/share/GeoIP/GeoIPCity.dat

以上保存为:update-ipdata-cron.sh

crontab -e
添加以下一行,每月5日0点10分运行:
10 0 5 * * /bin/csh /path/to/update-ipdata-cron.sh