在安装好Ubuntu 7.10 Server后,我在上面安装了 wordpress 2.2.1 带中文包,shopex V4.7.2 和 discuz 5.5 ,这里记录一些碰到的技术要点和疑问备忘。
1、修改 mysql 5.0.45的默认字符集,我准备统一使用 utf8 编码,所以改了服务器端和客户连接的默认字符集为 utf8。方法为:
在[client]下添加:
default-character-set=utf8
在[mysqld]下添加:
default-character-set=utf8
在控制台下用 mysql -hlocalhost -uroot -p 进入数据库后,status显示:
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
当数据库的字符集是utf8是, 在[client]下添加:default-character-set=utf8,并且本地控制台的locale为utf8的,才能在控制台中正常显示中文。
但在wordpress中,使用默认的latin1字符集,它创建的数据表是用utf8编码,但是数据库的编码是latin1,好像也不影响使用?不知道Server characterset和Db characterset 对mysql数据库的实际应用上有没有什么影响?即只是数据库表用utf8编码,status显示上面的4个characterset是默认的latin1对数据库表使用的utf8编码有没有什么影响?
2、服务器时间设置
ubuntu server 默认使用 UTC 时间,比CST (中国标准时间)慢(重庆时区是慢8小时),如果安装的时候没有使用CST时间,可以这样改变:
sudo tzselect
然后按照提示选择地区(如亚洲),国家(如中国)国内地区(如四川), 然后在你的家目录下的.profile中添加一行TZ变量,如:
TZ='Asia/Chongqing'; export TZ
使改变永久生效。
在 wordpress 中需要在“设置”的“日期和时间”中选择时区,我这里选择“本 blog 的时区:
小时 (您所在的时区,比如北京时间就填 8
。)”3、启用 mod_rewrite 模块,使 wordpress和 shopex可以使用URL伪静态化。sudo a2enmod rewrite
这里要注意在控制台w3m下面开启wordpress的 伪静态化不能生效,必须在图形界面的全功能浏览器下面进行!我在这上面折腾了好久,最后安装了一个X,在X下用firefox设置才发现问题;
然后,sudo vim /etc/apache2/sites-enabled/000-default下面<Directory />和<Directory /var/www/>中的“AllowOverride None”改为“AllowOverride All",其它的部分没有改(如<Directory "/usr/lib/cgi-bin">),在我的应用中使用正常。
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
</Directory>
然后:sudo /etc/init.d/apache2 restart 重启 apache2生效。
4、启动压缩传输功能:
sudo a2enmod deflate
重启 apache2生效。
5、启用目录默认文件功能:
如:输入 http://www.mydomain.com/ 实际上使用的是 http://www.mydomain.com/index.php 文件。
a2enmod dir
vim /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
DirectoryIndex index.php index.htm index.html index.cgi index.pl index.xhtml
</IfModule>
或者:
vim /etc/apache2/httpd.conf ,输入:
<IfModule mod_dir.c>
DirectoryIndex index.php index.htm index.html index.cgi index.pl index.xhtml
</IfModule>
也行。
6、使用 shopex 需要使用 Zend Optimizer 才能用
参见:在ubuntu环境中安装zend optimizer3.3.0
7、使用 shopex的上传图片自动生成略缩图功能和添加水印需要增加gd库
sudo apt-get install php5-gd
重启apache2 生效。
查看gd库生效没有可以调用一个写有一句phpinfo()的页面查看相关信息。
如名称为:phpinfo.php ,内容如下:
<?php phpinfo(); ?>
gd 库生效了会在其中显示相关信息,如:
gd
GD Support | enabled |
GD Version | 2.0 or higher |
FreeType Support | enabled |
... | ... |
等内容。
8、另外,还要注意一些目录的权限问题,在上面程序的安装说明中有。
还有,把wordpress的uploads 的所有者和组改为apache2的 www-data 就可以上传文件了,要不然把这个目录的权限改为777也行,个人感觉前者好像更好点?
9、另外,wordpress 和 discuz的邮件发送碰到一点问题: ubuntu server 下discuz 和 wordpress 程序不能用sendmail 正常发送非本地用户邮件的疑问 。解决了再补充一下。
在 shopex, ecshop, discuz 等程序中,如果在网站二级目录中布署程序,为了使用URL 伪静态化功能,需要在 .htaccess 文件中修改”RewriteBase /”为”RewriteBase /shop/”等二级目录。
ECShop URL 伪静态化 设置 (摘自ECSHOP v2.5.0 docs文档)
ECSHOP v2.0 以上版本 URL Rewrite 使用说明
*******************************************************************************
* 一、Apache 服务器
*******************************************************************************
1、首先您需要找到 Apache 安装目录,之后找到 conf 目录下的 httpd.conf 文件。
2、将下面的代码复制到 httpd.conf 文件中,注意将 /ecshop 替换为您的商店的实际
安装目录。
Options FollowSymLinks
AllowOverride All
3、在 httpd.conf 中搜索 LoadModule rewrite_module,将该行前面的 # 号删除。
如果您的 Apache 是1.3.x版本还需要查找 AddModule mod_rewrite.c,
请将前面的#删除。
4、保存 httpd.conf。
5、将 ecshop 目录下的 htaccess.txt 重命名为 .htaccess。
6、重新启动 Apache。
7、进入 ecshop 管理中心->商店设置,将 URL 重写设置为启用。
Ubuntu server 7.1 设置虚拟主机的方法(参考:Apache虚拟主机的配置!-Ubuntu中文技术网):
我发觉,ubuntu apache的配置本来就是虚拟主机的模式,在同一台主机加一个网站,我的方法是:
在 /etc/apache2/sites-available/ 目录下,把default 复制到一个新网站需的 new 文件,在new里修改几个地方,先是ServerName 改成新的网站域名,如:new.learndiary.com;然后:把DocumentRoot改成新网站的文件目录,如:/var/www/new/ ,后面的原来的改成;然后修改新网站的日志文件:
ErrorLog /var/log/apache2/new_error.log
CustomLog /var/log/apache2/new_access.log combined
还有,我把先前的那个网站也如法炮制,并把它的目录改成了如:/var/www/old/
然后:用sudo a2ensite new 命令启用新网站,实际就是在/etc/apache2/sites-enabled 增加了一个到 /etc/apache2/sites-available/new 的软链接。
然后:用sudo /etc/init.d/apache2 restart 重启apache 生效。
另:停止new网站的命令如下:
sudo a2dissite new
sudo /etc/init.d/apache2 restart
疑问:
我按照上面参考文章的方法把:
NameVirtualHost *
的*替换成主机所在的IP,并把新网站的配置文件中的 NameVirtualHost * 去掉,结果两个网站都不能访问了,报告404错误;这个主机是在局域网中,通过在路由器上通过路由器端口重定向主机实际公网的web服务的,不知道跟这个有没有关系?
另外,按照我上面的设置,用命令 sudo /etc/init.d/apache2 restart 重启apache 后,会有如下警告信息:
[warn] NameVirtualHost *:0 has no VirtualHosts