Debian下的SSH+Nginx+MySQL+PHP+FTP安装

虚拟机装上Debian.然后第一件事就是开始启动SSH

方法也很简单了,直接

apt-get install openssh-server

于是默认就帮你配置好了

然后,让我们关掉那个每次让自己卡到半死的DNS反查功能吧.

vim /etc/ssh/ssh_config

在末尾行加入

UseDNS no

然后重启SSH

网上很多说重启可以用

/etc/init.d/ssh restart

但是我运行这个命令似乎没有效果...于是还是用很土鳖的办法

/usr/sbin/sshd stop
/usr/sbin/sshd start


虽然我在SSH上执行这个命令的,但是执行了stop命令之后我并没有丧失当前的SSH链接,而且可以正确的再次启动它,当然了,这个更改的效果也只有在第二次登录的时候可以体会到了.

结果现在就碰到了问题:安装的时候选择的语言是中文呢的,Putty连上去了之后中文的显示是乱码,于是就需要做以下设置了:

首先确认你自己所在的local是zh_CN.utf-8

方法是运行:

dpkg-reconfigure locales

会出现界面让你选择,选择为zh_CN.UTF-8即可

系统会进行重新配置

然后编辑environment

vim /etc/environment

添加以下一行进去:

LC_CTYPE="zh_CN.UTF-8"

保存退出就可以了.

接下来是客户端的Putty的设置:

在Window-Translation中把字符集改为UTF-8

然后再把界面字体更换为宋体或者其他随便支持中文字符的字体.

再次连接界面进入就会发现已经可以显示中文了,不过伴随而来的就是....英文字体真是无比的丑恶...于是还是把它改回来成英文好了...

接下来需要修改一下Bash了,先把ls的染色功能打开好了


#cd ~
~#vim .bashrc

修改
# export LS_OPTIONS='--color=auto' 
# alias ls='ls $LS_OPTIONS'
去掉前面的#

然后自己添加一个
vi='vim'

这样就好了...(我还是更加习惯vim,虽然不得不在AIX上用vi...)

现在的任务是开始安装PHP+Nginx+MySQL了:

具体的参考对象是这篇文章:
Debian 5 VPS下的nginx+php+mysql的解决方案
Ubuntu/Debian包管理命令大全

唯一有变化的就是Nginx的版本了...我现在看到的Nginx最高稳定版本为0.8.54,但是排除掉架构区别,光i386上的版本就有extras,full,light版,不好决策...所以直接还是下载了full版(dbg标识的是代表Debug包,没必要安装).

wget http://ftp.us.debian.org/debian/pool/main/n/nginx/nginx-full_0.8.54-2_i386.deb

然后

dpkg -i ./nginx-full_0.8.54-2_i386.deb

结果报错..看来是先决条件没有安装完成...

没辙了,只能启动新立得,然后看看自带的0.6版本的先决条件:

Depends: libc6(>=2.7-1)
Depends: libpcre3(>=7.4)
Depends: libssl0.9.8(>=0.9.8f-5)
Depends: zlib1g(>=1:1.1.4)

那现在只能逐个的安装它们咯,首先检查它们在不在系统中:

dpkg -l| grep libc6
....

然后把没有安装的安装上

apt-get install libssl
...

结果一切装完之后,发现还是没办法安装...我就傻了,没辙,跑到Debian的官方网站查看一下,结果发现nginx的软件依赖其实是更加高版本的....也就是Debian整个需要升级才可以.

因为是在家里虚拟机上的环境,我觉得还是放弃升级比较方便一点,于是还是选择直接安装老版本的算了...于是很简单的开始安装...

apt-get install nginx
apt-get install mysql-server-5.0

这俩都很简单,然后到安装PHP的时候又碰上了问题..因为PHP有CGI和CLI两种模式,老实说,我写这么多年的PHP,却并没有分析这两种模式的不同,于是参考了以下文章:

nginx +php-cgi,apahce+php-cli,cgi的比较

所以,起码知道了一点:那就是nginx只能和CGI配合,于是确定安装PHP-CGI

apt-get install php5-common php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

接下来就需要安装php-fpm了..这个东西需要严格的跟你所安装的PHP的版本相对应,选择高版本是只能造成兼容性问题的,所以首先查看它的版本对应列表

http://php-fpm.org/downloads/

然后,我安装的PHP是5.2.6,对应的只有0.59版,于是下载它..

结果捣鼓了半天不知道该怎么玩,最后才发现原文里面有句话:使用php-fpm就必须重新编译php,不能使用系统自带的php。既然要自己重新编译PHP,那还不如下载最新的PHP算了,至少最新的PHP还自带了有PHP-fpm这个东西的...于是

wget http://cn2.php.net/get/php-5.3.5.tar.gz/from/this/mirror

然后

tar zxvf php-5.3.5.tar.gz

准备开始编译安装的..结果又卡在了默认的MySQL安装目录不清的问题上了,查了半天大概认为这个应该可以成功了吧:

./configure --prefix=/usr/bin/php5 --with-config-file-path=/etc/php --with-mysql=/var/lib/mysql --with-mysqli=/etc/mysql/my.cnf --with-iconv-dir=/usr/bin --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap -with-fpm-user=www –with-fpm-group=www

结果发现了一个更加简单的安装办法:

Debian Lenny安装nginx+PHP+MySQL傻瓜手记

里面提到了一个更加简单的编译好了的安装源


deb http://php53.dotdeb.org stable all 
deb-src http://php53.dotdeb.org stable all

于是毫不犹豫的中途停掉了那个编译的打算,然后开始编辑/etc/apt/source.list,然后加入以上两行,然后apt-get update,然后按照文章所说的开始

apt-get install php5-cgi php5-fpm

很顺利的就开始安装了,而且安装完成了之后直接就是最新版的PHP-5.3.5,真的很强大...

按照文章所说的,运行了

ps aux|grep php

但是却没有检查到PHP在跑,运行php-cgi -i又可以看到正常的输出,说明了PHP-CGI没有启动,于是手动启动它.

/etc/init.d/php5-fpm start

之后就可以看到正常了,然后最后一步就是编辑Nginx的conf文件了..两种办法,一种是直接修改/etc/nginx/sites-enabled/default文件,第二种是在/etc/nginx/sites-enabled/下随便建立一个.conf文件,这文件全部会被Nginx自动载入进来成为配置文件的一部分.

我修改的结果如下:


# You may add here your
# server {
#       ...
# }
# statements for each of your virtual hosts


server {
        listen   80;
        server_name  localhost;
        root /var/www/nginx-default;


        access_log  /var/log/nginx/localhost.access.log;


        location / {
                root   /var/www/nginx-default;
                index  index.php index.html index.htm;
        }


        location /doc {
                root   /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        location /images {
                root   /usr/share;
                autoindex on;
        }

        #error_page  404  /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /var/www/nginx-default;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;

                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                 fastcgi_param SERVER_NAME $http_host;
                 fastcgi_ignore_client_abort on;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
                #deny  all;
        #}
}

多余的注释文件我就没有在这里写出了
然后运行

/etc/init.d/nginx restart

重新启动Nginx,然后到/var/www/nginx-default文件夹下建立一个index.php,内容也就是最简单的:

phpinfo();
?>

看到正常的页面输出就是正确的标志了.

那么再之后的任务就是安装FTP了...我可不想一直用vi来写程序,会疯掉的...

FTP服务器就有很多了,最后还是选择了安装vsftpd,据说这个比较轻量级,毕竟我的电脑也只是开发用而已,不需要那么多的FTP功能,能读能写就足够了.

apt-get install vsftpd

这就完成了安装,然后我需要让它能够读写www目录下的文件了.用户就用我自己就行了,不用多做添加了.首先把自己的home目录给换到www下面去

usermod -d /var/www/nginx-default/ siglud

修改一下目录的所有者为此用户,并更改权限为755

chown siglud /var/www/nginx-default/

chmod 755 /var/www/nginx-default/

再修改一下conf文件,/etc/vsftpd.conf

Anonymous_enable=NO
禁掉匿名登录
Local_enable=YES
允许本地帐户登录
Chroot_local_user=YES
锁定主目录
Userlist_enable=yes
允许黑名单
Ascii_upload_enable=yes
启用ASCII上传
Ascii_download_enable=yes
启用ASCII下载
Write_enable=YES
允许删除和修改文件
local_umask=022
默认上传的文件权限为755

然后重启服务器

/etc/init.d/vsftpd restart

结果发现传上去的文件权限一塌糊涂,竟然连PHP都无法执行了...没办法,只能更改默认权限了,首先切换到FTP用户执行

umask 022

然后再次重启vsftpd,但是这个时候建立文件夹的权限正确了,但是上传文件后的权限居然变成了644,而不是预想的755..很奇怪的问题,但是却并不妨碍使用就是了..于是就这样听之任之了..

接下来就差不多了...下一步计划安装OpenVPN



评论

此博客中的热门博文

转一下关于Fuck的用法

远程记录OpenWRT日志

用OpenWRT打造自动翻墙路由器(详解篇)