加拿大华人论坛 加拿大百科FREEBSD升级及优化全攻略



在加拿大


http://journal.cnfug.org/issue10/000056.html欢迎转载╋本文遵循GNU协议规则? 前言 升级源码树 安装cvsup 升级系统源码树及ports 重新编译内核 优化编译环境 升级操作系统 升级配置文件 重新编译内核 重新启动服务器 优化FREEBSD 检查升级情况 打开防火墙 优化内核参数 安装防火墙 安装数据库MYSQL 安装mysql40-server和mysql40-client 安装phpmyadmin 安装FTP服务器 安装ftp软件(使用pure-ftpd/) 安装pureftpd_php_manager 安装APACHE服务器 安装apache13-modssl 安装PHP语言 安装php 安装ZendOptimizer 安装APACHE其它整合软件 安装mod_bandwidth 安装mod_fastcgi 安装mod_gzip 安装mod_limitipconn 安装mod_perl 安装mod_throttle 安装mod_watch 安装APACHE第三方软件 安装限制每个虚拟主机的并发数软件 安装防止ddos攻击的软件 其它需要安装的软件? 安装MRTG 安装net-snmp 安装mrtg 设置虚空间的mrtg和流量分析 安装BIND 9 安装bind9 安装邮件服务器 安装qmail邮件系统 安装WEBMIN和USERMIN 安装webmin 安装usermin 结束语 前言 FREEBSD系统是一种非常 UNIX、非常 Free、非常 BSD -- UNIX 的操作系统,因为它过UNIX化,太过专业化了,教很多新手无从下手学习。我 也是从几年前开始学习FREEBSD,并且在王波写的<FREEBSD使用大全>指导下,正式使用FREEBSD的。在这段使用和管理过程中,自己也积累了 不少文章和实战经验。为了让更多的朋友喜欢上FREEBSD,喜欢上UNIX,我特地做了几次升级和优化实例,结合自己管理服务器空间的经验写出 此文,希望在此抛砖引玉。 本文的目的是使新手可以根据此文章的步骤和方法,架设一台专业,高效,安全的FREEBSD出来,并且可以立即投入实际运用,故文章中对运用 及命令的使用多于理论化的知识点的描述,如果您不明白命令有何作用,建议您查查相关资料。 本文假设已经架设好或者新安装了一台FREEBSD系统主机。 本文中引用了很多FREEBSD官方站数据及网上数据,还有更多的是自己在实际工作中的经验,当然,里面的参数并不一定完全适合您,所以请您 在使用时,尽可能根据您的实际需要调整一些参数,使您的SERVER的性能完全的发挥出来。本文只是一个总的线索,如果我要拆开来一个一个 详细解释,我想会花更多的篇幅来写的,因为我忙着04年1月的自考,只写了实际中的运作情况,请各位朋友见谅。 升级源码树 安装cvsup 进入:/usr/ports/net/cvsup make clean make deinstall make install make clean 即可 升级系统源码树及ports 更新/usr/share/examples/cvsup目录下stand-cvsup和ports-cvsup文件,并执行cvsup ?g ?L2 standard-supfile和cvsup ?g ?L2 ports -cvsup两个文件,升级ports树? 重新编译内核 优化编译环境 更新/etc/make.conf文件,做适当的编译优化,我的CPU是Intel的: CPUTYPE=i686 CFLAGS= -O3 -pipe COPTFLAGS= -O3 -pipe 升级操作系统 进入/usr/src 执行make world 整个过程很久,需要2小时左右。 升级配置文件 执行mergemaster升级配置文件,在此过程中,需要按i以便系统执行升级? 重新编译内核 到/sys/i386/conf里面,cp GENERIC onlinecq,再vi onlinecq优化内核,注意加入下面的内容 #disable ctrl+alt+delete options SC_DISABLE_REBOOT #quota limit options QUOTA #ipfw support options IPFIREWALL options DUMMYNET options HZ=3000 options IPDIVERT options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 options IPSTEALTH options TCP_DROP_SYNFIN options IPFIREWALL_DEFAULT_TO_ACCEPT options ICMP_BANDLIM options ACCEPT_FILTER_DATA options ACCEPT_FILTER_HTTP #ipfilter support #options IPFILTER #options IPFILTER_LOG #options IPFILTER_DEFAULT_BLOCK 再执行: /usr/sbin/config onlinecq cd ../../compile/onlinecq make depend make make install 重新启动服务器 到此为止,服务器操作系统及内核升级成功 reboot 优化FREEBSD 检查升级情况 使用ssh进入系统,使用uname ?a 可以查到是否升级成功? 打开防火墙 更新rc.conf里面的设置,加上: #enable_quotas="YES" #check_quotas="YES" firewall_enable="YES" firewall_script="/etc/rc.firewall" firewall_type="/etc/ipfw.rules" #create it! firewall_quiet="NO" firewall_logging_enable="YES" log_in_vain="NO" tcp_drop_synfin="NO" tcp_restrict_rst="YES" icmp_drop_redirect="YES" 优化内核参数 修改系统内核参数,实现微调:vi /etc/sysctl.conf kern.ipc.somaxconn=8192 kern.ipc.maxsockbuf=2097152 kern.maxfilesperproc=32768 kern.maxfiles=65536 kern.securelevel=-1 net.inet.tcp.sendspace=65536 net.inet.tcp.recvspace=32768 net.inet.udp.maxdgram=57344 net.inet.icmp.drop_redirect=1 net.inet.icmp.log_redirect=0 net.inet.ip.redirect=0 net.inet6.ip6.redirect=0 net.inet.icmp.icmplim=100 net.inet.tcp.always_keepalive=0 net.inet.tcp.delayed_ack=0 net.inet.tcp.log_in_vain=0 net.inet.udp.log_in_vain=0 net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1 net.local.stream.sendspace=65535 net.local.stream.recvspace=32768 net.inet.ip.fastforwarding=1 vfs.vmiodirenable=1 安装防火墙 防火墙在上面已经编译入了内核,并且在上面的rc.conf里面已经打开了,所以在此只要设置一下即可! 允许所有IP通过,免得把自己给挡在外面了。 ipfw add all from any to any 其它规则根据实际情况来做,如果您想系统每次启动都使用上一次的规则,可以把这些内容加到: vi /etc/ipfw.rules 里面,语法规则同ipfw。 安装数据库MYSQL 安装mysql40-server和mysql40-client 进入/usr/ports/databases/mysql40-server 执行: make clean make deinstall make WITH_OPENSSL=yes WITH_LINUXTHREADS=yes BUILD_OPTIMIZED=yes install 或者使用下面可参考的编译参数:BUILD_STATIC=yes 编译成静态执行版本 make clean 更改mysql的root密码: mysqladmin ?uroot ?p password 123456 生成/etc/my.cnf,使用如下命令: vi /etc/my.cnf [client] #password = your_password port = 3306 socket = /tmp/mysql.sock [mysqld] skip-innodb skip-locking skip-networking set-variable = port=3306 set-variable = socket=/tmp/mysql.sock set-variable = back_log=50 set-variable = connect_timeout=3 set-variable = key_buffer=128M set-variable = max_connections=1000 set-variable = max_allowed_packet=1M set-variable = net_buffer_length=8K set-variable = wait_timeout=3 set-variable = read_buffer_size=1M set-variable = sort_buffer_size=1M set-variable = table_cache=256 set-variable = myisam_sort_buffer_size=32M set-variable = log_slow_queries=/var/log/log_slow_queries.log #log-bin server-id = 1 [mysqldump] quick set-variable = max_allowed_packet=16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] set-variable = key_buffer=20M set-variable = sort_buffer=20M set-variable = read_buffer=2M set-variable = write_buffer=2M [myisamchk] set-variable = key_buffer=20M set-variable = sort_buffer=20M set-variable = read_buffer=2M set-variable = write_buffer=2M [mysqlhotcopy] interactive-timeout 安装phpmyadmin 注意,此步骤需要在apache和php之后再执行 进入/usr/ports/databases/phpmyadmin 执行:make clean make deinstall make install make clean 新建立一个system的数据库备用。 安装FTP服务器 安装ftp软件(使用pure-ftpd/) 进入/usr/ports/ftp/pufe-ftpd 执行: make clean make deinstall make WITH_MYSQL=1 install 或者使用下面可参考的编译参数:WITH_LANG=simplified-chinese 使用简体中文语言包 make clean 配置pure-ftpd,主要需要做以下的工作: cp /usr/local/etc/pure-ftpd.conf.sample /usr/local/etc/pure-ftpd.conf cp /usr/local/etc/pureftpd-mysql.conf.sample /usr/local/etc/pureftpd-mysql.conf 再修改/usr/local/etc/pure-ftpd.conf的如下部份为: NoAnonymous yes MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf 再修改/usr/local/etc/pureftpd-mysql.conf的如下部份为您的设定值: # Mandatory : user to bind the server as. MYSQLUser demo # Mandatory : user password. You must have a password. MYSQLPassword demo # Mandatory : database to open. MYSQLDatabase demo 再进入使用mysql ?uroot ?p123456 进入mysql的文本方式? 使用如下命令建立新表: use system; DROP TABLE IF EXISTS users; CREATE TABLE users ( User varchar(16) NOT NULL default '', status enum('0','1') NOT NULL default '0', Password varchar(64) NOT NULL default '', Uid varchar(11) NOT NULL default '-1', Gid varchar(11) NOT NULL default '-1', Dir varchar(128) NOT NULL default '', ULBandwidth smallint(5) NOT NULL default '0', DLBandwidth smallint(5) NOT NULL default '0', comment tinytext NOT NULL, ipaccess varchar(15) NOT NULL default '*', QuotaSize smallint(5) NOT NULL default '0', QuotaFiles int(11) NOT NULL default 0, PRIMARY KEY (User), UNIQUE KEY User (User) ) TYPE=MyISAM; 安装pureftpd_php_manager 下载pureftpd_php_manager.zip 解压并放到指定的目录里面,比如:/usr/local/www/data chmod ?R 755 /usr/local/www/data/pureftpd_php_manager 再加入一个普通用户和一个群组,以供ftp使用: pw groupadd ftpusers pw useradd ftpuser ?g ftpusers ?s /sbin/nologin 记住他们的uid和gid号,备用! 进入并编辑pureftp.config.php文件 更改里面的如下行: $PUREFTP_CONFIG_FILE = '/usr/local/etc/pureftpd-mysql.conf';^M $DefaultUser = "ftpuser"; # Default User Logon^M $DefaultPass = ""; # Default User Password^M $DefaultUid = "1002"; # Default User ID ( must be a re al user acct )^M $DefaultGid = "1001"; # Default Group ID ( must be a r eal group acct )^M $DefaultDir = "/home"; # Default User Dir ( use /./ at the end to chroot )^M $DefaultUL = "0"; # Default Upload Throttl e ( 0 disables it )^M $DefaultDL = "0"; # Default Download Throt tle ( 0 disables it )^M $Defaultip = "*"; # Default IP restriction s ( * = any IP )^M $DefaultQS = "200"; # Default Quota Size ( 0 disable s it )^M $Defaultcmt = ""; # Default Comment for us er^M ^M // UA^M $DefaultQF = "0"; # Default Quota Files ( 0 disabl 安装APACHE服务器 安装apache13-modssl 进入/usr/ports/www/apache13-modssl 执行: make clean make deinstall make WITH_APACHE_SUEXEC=yes APACHE_HARD_SERVER_LIMIT=1024 APACHE_PERF_TUNING=yes install 编译时带上suexec和优化。 Make clean 取消所有Options里面的Indexes,禁止浏览目录及文件。 设置KeepAlive Off 安装PHP语言 安装php 进入/usr/ports/www/mod_php4 执行: make clean make deinstall make install 编译常用的选项即可,一定记得选择上mysql和gd。 Make clean 安装完成后,在/usr/local/etc/apache/httpd.conf里面,加入如下内容: AddType application/x-httpd-php .php .php3 .php4 .phtml AddType application/x-httpd-php-source .phps 替换DirectoryIndex细节为: <IfModule mod_dir.c> DirectoryIndex index.html index.htm index.wml index.cgi index.shtml index.jsp index.js index.jp index.php4 index.php3 index.php index.phtml default.htm default.html home.htm </IfModule> 再cp php.ini-recommended /etc/php.ini 以及修改php.ini里面的参数 vi /etc/php.ini 修改下面两处为: register_globals = On magic_quotes_gpc = On 安装ZendOptimizer 先下载ZendOptimizer-2.1.0b-FreeBSD4.0-i386.tar.gz 再执行 tar zxvf ZendOptimizer-2.1.0b-FreeBSD4.0-i386.tar.gz cd ZendOptimizer-2.1.0b-FreeBSD4.0-i386 sh setup 即可完成傻瓜式的安装。 注意:此时您的php.ini配置文件,一般会移到 /usr/loca/Zend/etc/php.ini 并且底部会增加以下几行: [Zend] zend_optimizer.optimization_level=15 zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-2.1.0 zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-2.1.0 zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so 您可以根据需要,改变15为1023,来提升加速的等级。 安装APACHE其它整合软件 安装mod_bandwidth 进入/usr/ports/www/mod_bandwidth 执行: make clean make deinstall make install 编译完成后,一定记得 vi /usr/local/etc/apache/httpd.conf LoadModule bandwidth_module libexec/apache/mod_bandwidth.so AddModule mod_bandwidth.c make clean 语法及作用: * BandWidthModule 该模块的开关,可以对每个Server进行配置 * BandWidthPulse 设定计时单位,MS(微秒),建议为:1000000 (1秒) * BandWidth 可以针对特定来源的对象控制流,rate以字节为单位,但当rate为0时,为不限制流速。 例子: BandWidth ecp.fr 0 BandWidth 138.195 0 BandWidth all 1024 * LargeFileLimit 当传送一个大于等于filesize KB大小的档时,设定一个最大流速(字节/秒),当rate 为0的时候,不限速。 例子: LargeFileLimit 200 3072 LargeFileLimit 1024 2048 以上例子设定小于200KB的档将不会被限制流速,大小在200K到1024K之间的档将会被 限速3072 B/s,大于1024KB的文件将会被限速2048 B/s. * MinBandWidth 设定每个连接传送数据的基本带宽占用,以Byte为单位。默认值:256 B/s。 当rate设定为0时,使用默认带宽限制。 安装mod_fastcgi 进入/usr/ports/www/mod_ fastcgi 执行: make clean make deinstall make install 编译完成后,一定记得 vi /usr/local/etc/apache/httpd.conf LoadModule fastcgi_module libexec/apache/mod_fastcgi.so AddModule mod_fastcgi.c AddHandler fastcgi-script fcgi fcgi fpl make clean 安装mod_gzip 进入/usr/ports/www/mod_gzip 执行: make clean make deinstall make install 编译完成后,一定记得 vi /usr/local/etc/apache/httpd.conf LoadModule gzip_module libexec/apache/mod_gzip.so AddModule mod_gzip.c make clean 安装mod_limitipconn 进入/usr/ports/www/mod_limitipconn 执行: make clean make deinstall make install 编译完成后,一定记得 vi /usr/local/etc/apache/httpd.conf LoadModule limitipconn_module libexec/apache/mod_limitipconn.so AddModule mod_limitipconn.c make clean 安装mod_perl 进入/usr/ports/www/mod_perl 执行: make clean make deinstall make install 编译完成后,一定记得 vi /usr/local/etc/apache/httpd.conf LoadModule perl_module libexec/apache/mod_perl.so AddModule mod_perl.c make clean 安装mod_throttle 进入/usr/ports/www/mod_throttle 执行: make clean make deinstall make install 编译完成后,一定记得 vi /usr/local/etc/apache/httpd.conf LoadModule throttle_module libexec/apache/mod_throttle.so AddModule mod_throttle.c make clean 安装mod_watch 进入/usr/ports/www/mod_watch 执行: make clean make deinstall make install 编译完成后,一定记得 vi /usr/local/etc/apache/httpd.conf LoadModule watch_module libexec/apache/mod_watch.so AddModule mod_watch.c make clean 安装APACHE第三方软件 安装限制每个虚拟主机的并发数软件 mod_vhost_limit 安装: apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so 在 httpd.conf 加入: LoadModule vhost_limit_module libexec/mod_vhost_limit.so AddModule mod_vhost_limit.c 配置: MaxClients 150 ExtendedStatus On NameVirtualHost * <VirtualHost *> ServerName server1 DocumentRoot /some/where/1 MaxVhostClients 100 </VirtualHost> <VirtualHost *> ServerName server2 DocumentRoot /some/where/2 MaxVhostClients 30 </VirtualHost> <VirtualHost *> ServerName server3 DocumentRoot /some/where/3 </VirtualHost> 其中: server1 被限制为 100 个并发线程数。 server2 被限制为 30 个并发线程数。 server3 没有被限制。 注:需 mod_status 的 ExtendedStatus On 支持!! 如超出限制的并发数在客户端就会出现503错误: Service Temporarily Unavailable The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later. -------------------------------------------------------------------------------- Apache/1.3.27 Server at server1 Port 80 在 error_log 中将会有类似以下的错误提示: [Mon Jun 23 15:22:24 2003] [error] client access to server1 deferred, MaxVhostClients 100 exceeded 安装防止ddos攻击的软件 dosevasive1.8.tar.gz 安装方法: tar zxvf mod_dosevasive.tar.gz cd dosevasive/ /usr/local/apache/bin/apxs -i -c mod_dosevasive.c vi /usr/local/apache/conf/httpd.conf 加入 LoadModule dosevasive_module libexec/mod_dosevasive.so AddModule mod_dosevasive.c <IfModule mod_dosevasive.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 </IfModule> 其它需要安装的软件? 可选择安装的有: CPU温度监控软件 CPU负载监控软件 封包流量监控软件 …… 安装MRTG 安装net-snmp 进入/usr/ports/net/net-snmp 执行: make clean make deinstall make install make clean 安装mrtg 进入/usr/ports/net/mrtg 执行: make clean make deinstall make install make clean 设置虚空间的mrtg和流量分析 生成流量控制?: /usr/local/sbin/apache2mrtg.pl /usr/local/etc/apache/httpd.conf > /usr/local/etc/apache/mod_watch.cfg 修改此文件,并且加如下头部信息: WorkDir:/usr/local/www/data/mrtg Options[_]: growright,bits #Language: gb2312 #Title[^]: Traffic Analysis for PageTop[^]: <H1>Traffic Stats for OnlineCQ.COM User</H1><HR> #PageTop[$]: Contact QQ: 151482576<HR> PageFoot[^]: WWW.OnlineCQ.COM MSN: [email protected] QQ:151482576 保证WorkDir目录可以被浏览器访问,并且目录存在!如果不是,您可以自己修改! 执行一下,看是否正确: /usr/local/sbin/mrtg /usr/local/etc/apache/mod_watch.cfg 如果有错误,多执行几次即可! 再将此加入到排程里面,15分钟自动执行一次: vi /etc/crontab */15 * * * * root /usr/local/bin/mrtg /usr/local/e tc/apache/mod_watch.cfg 安装BIND 9 安装bind9 这是一套域名解析系统,可以让您的SERVER做DNS SERVER,非常不错的! 进入/usr/ports/dns/bind9 make clean make deinstall make install make clean 然后再记得修改name.conf 等配置文件,具体的内容太复杂,建议看一下其它专门讲授这方面的书籍。 安装邮件服务器 安装qmail邮件系统 使用iceblood的安装包,傻瓜式的安装就可以了!注意第一次安装时,多看几遍它的说明,不要弄错了! 安装完成后,自己再加上qmailadmin,它可以让您在一台主机上面,开多个域名的企业邮局! 安装WEBMIN和USERMIN 安装webmin 先下载webmin最新版 再解压: tar zxvf webmin-1.100.tar.gz 进入目录开始安装: cd webmin-1.100 sh setup.sh 安装时使用它的默认设置即可,自己要设置好管理员密码,这一定要注意保密! 并且请设置为自动启动,以便以后可以通过此来管理。 安装完成后,可以通过如下方式访问: http://IP:10000/ 注意,默认埠是10000 安装usermin 先下载usermin最新版 再解压: tar zxvf usermin-1.030.tar.gz 进入目录开始安装: cd usermin-1.030 sh setup.sh 安装时使用它的默认设置即可。 安装完成后,可以通过如下方式访问: http://IP:20000/ 注意,默认埠是20000。 Usermin会自动和webmin整合的,使用webmin的管理员密码,并且可以在webmin里面启动它。 结束语 至此为止,一般可以实际运作的FREEBSD系统就建立起来了,您可以reboot一下,让最新的设置及软件生效。 如果在安装过程中出现错误,您可以先检查完错误,再接着安装下去。或者你可以选择你感兴趣的某些部份安装! 当然因为时间仓促,涉及到的知识太广,加上本人能力有限,其中错误在所难免,恳请各位读者提出来,大家共同提高,共同进步!

  ·汽车 问及M7事故,21世纪经济需要转载和销售。
·汽车 我想知道我的情况算肇事逃逸吗?

加拿大百科-加拿大

不打游戏,我买了个游戏键盘

华人网原因无他,好键盘都是游戏键盘 我最基本的诉求是键帽字体清晰可见。我打字时虽然会盲打,但有些键还是要看的,例如数字/符号键、F功能键等。当把眼睛从屏幕转到键盘时,由于屏 ...

加拿大百科-加拿大

视频编辑器

华人网最近去百幕大,波士顿旅行,拍了不少视频。有的是用相机拍的,有的是用GoPro 拍的。想把这些视频根据日期,地点等加在一起。谷歌后发现微软Windows 11 带有 Clipchamp 这个视频编辑器, ...

加拿大百科-加拿大

开车的成本,我的10年Ford Edge

华人网我的福特开了10年,里程是85000公里,去养护时,问了一下这些年花费了多少维修费用?工作人员告诉我一共$4700,加上我前两年换了轮胎$1000,电池几百刀,合计6千多加元。在国内时我 ...

加拿大百科-加拿大

temu霸屏,怎么驱除?

华人网随便打开一个网页,发现temu的广告到处都是,上下左右,霸占了一大半面积,简直是强行抢占了别人的页面,非常离谱。我试图使用Google Report an ad/listing功能,填写Complaint on multiple ad ...

加拿大百科-加拿大

大家在拼多多上买东西了吗

华人网拼多多最近在加拿大开店了。 评论 拼多多app被Goolge下架了。Google suspends Chinas Pinduoduo app on security concernsAlphabet Incs Google suspended the Play version of PDD Holdings Incs Pinduoduo app for security concerns ...

加拿大百科-加拿大

请问抗焦虑症的替代药物

华人网家人在国内一直每天服用下面两种抗焦虑症的药,试过其他药都没有效果。准备回加拿大了,但是在加拿大的医保卡已经过期,另外不知道来加拿大有没有同样的替代药物?请问有没有 ...

加拿大百科-加拿大

亚马逊账号被黑记

华人网上来报个到,亚马逊账号被黑了,都不知道对方是怎么操作的...故事有点长,等有时间了再来更新。 评论 现在都有two step authentication,还能被黑,难道魔高一丈?最有效的解决途径是打 ...

加拿大百科-加拿大

大统华升职!!

华人网在大统华做supervisor要什么条件才可以升副主管,主管?薪水大约多少? 评论 大统华labor太卷了 评论 zxzwan2010 说:大统华labor太卷了点击展开...我问卷不卷了吗? 评论 赞!!! 太棒啦! ...

加拿大百科-加拿大

关于立遗书

华人网大家觉得有必要立遗嘱吗在安省 现在自住房想以后留给孩子独生子 评论 有比没有好, 没有的话万一有事真的很麻烦 评论 平安书有钱有业有孩子的必须做,如果大吉利是忽然走了,所 ...

加拿大百科-加拿大

世界十大最丑建筑。转帖

华人网互联网 榜首反而最具设计感? 评论 美学向来没有一定的準则,每个人的审美观各有不同,话虽如此,但当大多数人都认为一件事物是美或醜,总会有一定的参考价值。 评论 早前国外一 ...