安装支持mysql的DBI和pam_mysql
因为网站服务器的部署已经完成,马上要开始FTP服务的部署测试。之前proftpd的部署是失败了,根本就没法进行编译,更别提安装,老提示找不到模块郁闷!后来选用vsftpd,使用RPM安装发现不错,在做pam认证的时候出现了问题,安装pam_mysql总是出现找不到pam_mysql.so后来找了很多资料只能一点一点测试发现在安装了DBI后,再次编译pam_mysql时加入--with-openssl后编译安装都正常了,而且也省去了其他文章中提到的要拷贝一个文件到相应目录下的步骤,下面是安装步骤:
1、安装DBI
cd DBI-1.50 perl Makefile.PL
make
make test
make install
ln -s /usr/bin/perl /usr/local/bin/perl
ln -s /usr/local/mysql/bin/mysql_config /sbin/mysql_config
2、安装pam_mysql
cd pam_mysql-0.7pre3
./configure --with-mysql=/usr/local/mysql --with-mysql-libs=/usr/local/mysql/lib/mysql --with-openssl
make
make install
Apache两种虚拟主机方式及虚拟目录的配置方法
之前已经完成了网站服务器的部署,但是实际中一台网站服务器中不可能只存在一个站点,比如我的个人网站就存在很多二级域名的站点,有些还使用了非80的端口,而且经常要用到虚拟目录!所以搜索了一下,简单的总结一些这三种方式的实现方法,以备后用!
一、基于 Port (端口)的方式:
在Listen字段处找到默认的 Listen 80,在下面添加其它监听端口,如:8080、8086
Listen 8080
Listen 8086
添加或修改虚拟主机字段:
<VirtualHost 192.168.0.1:8080>
DocumentRoot /var/www/website1
</virtualHost>
<VirtualHost 192.168.0.1:8086>
DocumentRoot /var/www/website2
</virtualHost>
保存退出,并重新启动Apache服务。注:如果使用不同IP值需要修改VirtualHost处的IP就可以。
二、基于域名的方式
修改或添加虚拟主机字段:
NameVirtualHost 192.168.0.1
<VirtualHost www1.maytide.net>
DocumentRoot /var/www/maytidesite1
ServerName www1.maytide.net
</VirtualHost>
<VirtualHost www2.maytide.net>
DocumentRoot /var/www/maytidesite2
ServerName www2.maytide.net
</VirtualHost>
保存退出,并重新启动Apache服务。
三、创建虚拟目录
如果为哪个虚拟主机创建虚拟目录就查找此虚拟主机字段在<VirtualHost *:80>和</VirtualHost>之间加入
alias /bbs "/var/www/bbs/"
<Directory "/var/www/wwwroot">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
保存退出,并重新启动Apache服务。
实战部署基于 Linux 平台的 WEB 服务器(MySQL+Apache+GD+PHP+Zend+ImageMagick)
学习 Linux 总是断断续续,没有完全钻进去好好学。前段时间一个朋友找我帮忙部署 Postfix 邮件系统,我便意识到了技术方面的落后,虽然 Windows 平台的应用系统部署相对简易而且便于维护,可是他的授权费用却很高,一般要使用 Windows 平台搭建一个网站服务器需要几万块的授权费用,而使用 Linux 授权费用等于零,唯一需要支付的费用就是技术支持,如果外包部署那么此时才产生高昂的费用但还是远比 Windows 低,朋友找我部署 postfix 邮件服务器的费用是6500最低4000,感觉已经是一笔不小的收益了。虽然后来没能把活接下来,但是决定开始正式学习 Linux。入门真的是很艰苦,要摆脱 Windows 的操作理念,只能用一个字形容:“累”!为了找到问题,钻透故障就必须重复重复的安装和配置,已经记不得 Linux 被我安装了多少遍,配置了多少遍,而且还安装过很多发行版。VMwareGSX 真的是帮了我很大的忙,之所以选择 GSX 版本是因为他可以在后台运行,而且没有磁盘写延迟比 WKS 版稳定的要多很多,唯一遗憾的就是不支持差异盘,只能使用快照!
经过了半个月的学习、实验总算是入门 Linux 了。第一个感觉就是如果把 Linux 搞好,以后的安装完全可以通过远程来做,而且只需要在 putty 上通过复制粘贴就能轻松灌出一个系统并配置好,不过前期的学习中还是要积极地自己敲命令,这样才能加深印象!
我的学习实验主要以部署自己的网站服务器为蓝本,因为我喜欢 MySQL 喜欢 PHP,他们不但支持跨平台,而且功能、安全、性能、资源方面我都认为是比较好的。经过了多次反复的实验最终完成了部署,现在讲实战经过备忘下来,以后一定能用的上!
此次部署网站服务器设计到的软件:
1.Redhat Linux Fedora4
2.Apache-2.0.55
3.MySQL-4.4.15
4.Zlib-1.2.2
5.Freetype-2.1.5
6.Libpng-1.2.5
7.Jpegsrc.v6b
8.GD-2.0.33
9.GetText-0.12.1
10.ImageMagick-
11.Imagick-0.9.8.tgz
12.PHP-4.3.10
13.ZendOptimizer-2.6.0
Linux的安装部署
Linux 的安装到目前为止已经非常简单了,因为此次部署主要用途是网站应用,所以我打算只安装基础核心和开发工具,这样不但节省了硬盘空间还可以自己学习如何编译、安装、配置程序,况且网站也不需要那么多功能,只要在终端界面下操作就可以。为了能够在终端下显示正常,我默认编码选择的是英文并附加了中文支持,使用的是自动分区,组件中只选择了终端下的服务器配置工具和开发工具大概总容量在 1.3G 左右。
Linux 安装后,停掉不需要的服务,关于 Linux 服务的资料可以参考:http://goxia.maytide.net/p/linuxservices.php
MySQL 的安装配置 useradd mysql -g mysql tar zxvf mysql-4.4.15.tar.gz ./configure --prefix=/usr/local/mysql --with-charset=gbk make make install scripts/mysql_install_db --user=mysql chown -R root . chown -R mysql var chgrp -R mysql . cp support-files/my-medium.cnf /etc/my.cnf (cp /usr/local/mysql/share/mysql/mysql.server /usr/local/mysql/share/mysql/mysqld chmod a+x /usr/local/mysql/share/mysql/mysqld) 小注:在启动MySQL服务前我先修改my.cnf配置文件,添加 old_password 参数,这样可以避免修改root密码后,phpmyadmin无法访问MySQL数据库,不过我的做法通常都是在phpmyadmin可以使用后再去修改root帐号的密码,这样更安全!毕竟我是Linux新手,一些达人的解决方法我看着头晕! /usr/local/mysql/share/mysql/mysqld start 或 /usr/local/mysql/bin/mysqld_safe --user=mysql & /usr/local/mysql/bin/mysqladmin -u root -p password 'new_password'
MySQL我是非常认可的数据库服务器之一,我属于微软阵营但是对微软的 ASP 和 SQL2000 真的不敢恭维,所以最终我的个人网站选择了以 PHP+MySQL 为核心的架构,MySQL 不但免费而且他支持手工安装,这样是非常灵活的,因为在系统重新部署后我可以很轻易的恢复之前的 MySQL。安装步骤:
MySQL 的两种自启动方式: cd /etc/rc.d/init.d chkconfig --add mysqld ntsysv
第一种方式:将 MySQL 作为服务,当系统启动时自动加载此服务并自动运行,我个人喜欢这种方式,因为在开机的时候就可以看到 MySQL 是否正常启动。实现方法:
第二种方式:将 MySQL 作为批处理方式自动运行。实现方式: /usr/local/mysql/share/mysql/mysqld start
注:FreeBSD下则为:
#mysql_enable="YES"
至此,MySQL 的安装和配置就完成了,感觉还是很简单的!不过他的编译过程真的好慢估计跟我的虚拟机配置有关,希望有一天我能在实体机上真正应用!
Apache 的安装配置 ./configure --prefix=/usr/local/apache --with-mysql=/usr/local/mysql --enable-track-vars --enable-cgi --enable-so --enable-mods-shared=all --enable-xml --enable-module=rewrite --with-config-file-path=/usr/local/apache/conf make make install
Apache 全球性能卓越的开源 web 服务器,市场占有率最高!很多大型门户网站都在使用它。之前我选择的是1.0.33版本后来发现编译很麻烦,后来选择2.22.0版朋友又说版本太高不适合我,最后我选择了2.0.55。因为要支持 PHP 所以找了很多安装配置资料查编译参数,后来以网上一篇 Blog 为基础实现了适合自己的编译安装。
Apache的两种自启动方式: vi /etc/rc.d/init.d/httpd,在httpd文件的第三行下面,插入以下两句话: chmod +x /etc/rc.d/init.d/httpd chkconfig --add httpd chkconfig --list
第一种方式:将Apache以服务方式自运行,这个方法最终还是从 Discuz 官方论坛上找到的,当时找到并实验成功后,那叫兴奋!呵呵,谁叫俺是 Linux 菜鸟!实现方法:
# chkconfig: 345 85 15
# description: Starts and stops the Apache HTTP Server.
成功后,就可以用 service httpd start, service httpd restart, service httpd stop来启动、重启、和终止 httpd service。
第二种方式:以批处理自动运行,实现方法: /usr/local/apache/bin/apachectl start
添加Apache启动命令。以上完成后就可以在浏览器里测试一下网站是不是可以打开!
GD 支持的安装配置 mkdir /usr/local/modules/jpeg6 mkdir /usr/local/modules/jpeg6/bin mkdir /usr/local/modules/jpeg6/lib mkdir /usr/local/modules/jpeg6/include mkdir /usr/local/modules/jpeg6/man mkdir /usr/local/modules/jpeg6/man/man1
GD 的成功安装和使用还依赖其它的几个组件模块,所以在 GD 安装之前需要先安装好其它组件模块。为此,先建立模块的初始目录:
之所以要建立 Jpeg6 的目录是因为在实际编译安装时如果不事先建立Jpeg6的根目录和子目录编译就会失败,郁闷!
依照顺序安装 GD 的其它组件: cd zlib-1.2.2 ./configure make make install
A.安装 Zlib
B.安装 Freetype cd freetype-2.1.5 ./configure --prefix=/usr/local/modules/freetype make make install
C.安装 Libpng cd libpng-1.2.5 cp scripts/makefile.std makefile make test make install
D.安装 Jpeg6 ./configure --prefix=/usr/local/modules/jpeg6 --enable-shared --enable-static make make install
开始安装 GD 支持 ./configure --prefix=/usr/local/modules/gd --with-jpeg=/usr/local/modules/jpeg6 --with-png --with-zlib --with-freetype=/usr/local/modules/freetype make make install
至此,GD 库的支持就算是完成了!
PHP 的安装配置 ./configure --prefix=/usr/local/gettext make make install
此次的 PHP 安装,我加入了 gettext 组件和 ImageMagick 组件支持,如果不需要这两个组件的话可以直接开始 PHP 的编译安装,而我的方式是:
A.安装gettext
B.安装ImageMagick cd ImageMagick-6.2.5 ./configure --prefix=/usr/local/ImageMagick --enable-shared --enable-lzw --enable-modules make make install
因为被很多PHP的相片程序需要这个组件并且都说此组件的功能更加强大,所以最终我决定在我的此次部署中安装它。ImageMagick的安装需要先编译安装一遍PHP得到phpize,之后将ImageMagick For PHP的API拷贝到PHP的源代码对应目录后再次编译安装才能使PHP支持这个组件。为此我先安装的ImageMagick,之后编译安装PHP一遍得到phpize,执行准备工作,最后完成支持ImageMagick的PHP完整编译安装。
C.第一次编译安装PHP(没有对ImageMagick的支持) cd php-4.3.10 ./configure --prefix=/usr/local/php --with-gd=/usr/local/modules/gd --with-jpeg-dir=/usr/local/modules/jpeg6 --with-zlib --with-png --with-freetype-dir=/usr/local/modules/freetype --with-mysql=/usr/local/mysql --with-iconv --enable-mbstring --with-apxs2=/usr/local/apache/bin/apxs --with-gettext=/usr/local/gettext --enable-track-vars --enable-ftp --enable-safe-mode --enable-xml --enable-magic-quotes --disable-debug --with-config-file-path=/usr/local/php/etc make make install
小注:按照网上的按照资料,说是编译一次就可以得到phpize,可我执行phpize却提示无效命令,后来才知道phpize所在其它目录,并非像网上那样的操作!也正因此,我是完全编译安装PHP后才找到phpize在/usr/local/php/bin目录下。
D.安装Imagick API For PHP 然后把imagick-0.9.8.tgz解压到ext/imagick目录下 运行命令/usr/local/php/bin/phpize cd php源代码根目录 rm configure ./buildconf --force
E.第二次编译安装PHP(加入了对Imagick的支持) ./configure --prefix=/usr/local/php --with-gd=/usr/local/modules/gd --with-jpeg-dir=/usr/local/modules/jpeg6 --with-zlib --with-png --with-freetype-dir=/usr/local/modules/freetype --with-mysql=/usr/local/mysql --with-iconv --enable-mbstring --with-apxs2=/usr/local/apache/bin/apxs --with-gettext=/usr/local/gettext --with-imagick=/usr/local/ImageMagick --enable-track-vars --enable-ftp --enable-safe-mode --enable-xml --enable-magic-quotes --disable-debug --with-config-file-path=/usr/local/php/etc make make install cp php.ini-dist /usr/local/php/etc/php.ini
至此,完成了PHP的编译安装,下来对php.ini文件作修改,以满足需要!
使Apache支持PHP及CGI 找到DirectoryIndex index.html index.html.var
上面的工作全部完成后,还没有真正完成,因为此时的Apache还无法解释PHP和CGI语言,所以要对Apache的配置文件httpd.conf作一下修改才能实现解释PHP和CGI:
A.添加对PHP的支持:
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php-source .phps
根据需要在index.html前或此行最后添加index.php,这样做是为了使index.php成为默认页。
B.添加对CGI的支持: 改为:AddHandler cgi-script .cgi .pl
至此,任务都已经算是完成了。可以稍微休息一下!
ZendOptimizer的安装 cd ZendOptimizer-2.6.0-linux-glibc21-i386 ./install.sh 接下来弹出简单的图形安装界面,一路下一步,注意的是到Enter the location of your php.ini file这项配置时填入PHP的配置文件php.ini的文件位置,最终完成安装。
之所以要安装ZendOptimizer是因为一些商业的PHP程序对代码进行了加密,所以必须安装此组件才能正确地运行这些商业程序,比如:Discuz等等。ZendOptimizer的安装非常的简单:
/usr/local/php/etc
----------------------------------------------------------------------------------------------------------------------
现在总算完成了所有的工作,感觉真的很累但是却很有意思!因为一切都是在文字界面下和键盘操作下完成的,这对一个系统工程师来讲,实际上是一件非常轻松愉快的事情,因为远程操作在此种情形下要比windows人性的图形化操作更加快速便捷,文字显示所要求的带宽远远低于图形化界面;备忘完整的操作命令可以方面的灌出一个系统。
闲话少说,写一个php的测试文档看看成果吧。 phpinfo(); ?>