删除了运行了100多天之后滴 Ubuntu 服务器之后,Linode里面还有40美金的余额没用完(这个是9月份的时候那个Linode的活动送的,没法儿取出来,也不能转移到其它的Linode帐户里面去,只能消费完),这段时间就尝试着玩玩各种各样的Linux发行版吧,基本上都是Linode提供的,最开始就选择OpenSUSE是因为昨天看到腾讯的开放平台提供的服务器基本上都是OpenSUSE的。

OpenSUSE还只是在北京的时候看公司里面一同事玩过,后来也就只是在自己的虚拟机里面装过一两回,不过从来没有深入的去研究过,我玩Linux基本上的作用都是做网站的服务器之用,所以,最开始我就会去了解如何在某一个Linux发行版上面更好的配置安装LEMP环境。

在本文中,我使用 opensuse.antusoft.com 作为服务器的域名,IP地址还是旧服务器的 50.115.16.100,这可能与你的情况有些不一样,不过也不影响整个安装。

安装 MySQL 5

首先,我们像下面这样的安装 MySQL 5:

yast2 -i mysql mysql-client mysql-community-server

接着我们为 MySQL 创建系统启动链接(这样一来,MySQL 就会随着系统启动而启动),再启动 MySQL 服务器:

chkconfig -f --add mysql
/etc/init.d/mysql start

我们可以像下面这样的来确定是否已经运行成功:

netstat -tap | grep mysql

这可能会输出像下面这样的内容:

cox: ~ # netstat - tap | grep mysql
tcp     0    0    *:mysql     *:*    LISTEN    8924/mysqld
cox: ~ #

如果没有出现类似上面这样的信息,你可能需要打开 /etc/my.cnf 然后注释掉 skip-networking 选项:

[...]
#skip-networking
[...]

修改配置之后,重起你的 MySQL 服务器

/etc/init.d/mysql restart

(如果你遇到*You do not have a valid vim binary package installed. Please install either “vim”, “vim-enhanced” or “gvim.”*,请运行下面这行命令来安装 VIM 之后再尝试修改。

yast2 -i vim

运行下面这行命令来设置 MySQL 服务器的 root 帐户密码:

mysql_secure_installation

否则的话,任何人都可以访问你的 MySQL 数据库。进行安装设置时,脚本会询问你一些问题,你只需要回答是(Y)或者否(n),下面是我的选择:

  • Enter current password for root ( enter for none): –> 直接回车
  • Set root password? [Y/n] –> Y
  • Remove anonymouse users? [Y/n] –> Y
  • Disallow root login remotely? [Y/n] –> Y
  • Remove test database and access to it? [Y/n] –> Y
  • Reload privilege tables now? [Y/n] –> Y

安装 Nginx

我先使用 search 或者 se 搜索最新的 Nginx 软件包:

cox:~ # zypper se nginx

现在得到的最新的Nginx版本是 Nginx-1.0,我也就安装这个版本的了,像下面这样安装它:

yast2 -i nginx-1.0

与 MySQL 一样创建 Nginx 的启动链接,然后启动 Nginx

chkconfig -f --add nginx
/etc/init.d/nginx start

启动之后,我们就可以访问 http://50.116.15.100 访问,Nginx 会返回一个 403 Forbidden 错误,这证明Nginx已经安装成功,这是因为在 OpenSUSE 12中,Nginx 的默认文档根目录是: /src/www/htdocs,而这个目录下面默认又是没有索引页的。

安装 PHP5

我们可以让 PHP5通过 PHP-FPM 在Nginx下工作(PHP-FPM:FastCGI Process Manager)是一个添加了一些特别功能的PHP的FastCGI实现,像下面这样安装:

yast2 -i php5-fpm

在运行 PHP-FPM 之前,我们将 /etc/php5/fpm/php-fpm.conf.default 修改为 */etc/php5/fpm/php-fpm.conf*:

mv /etc/php5/fpm/php-fpm.conf.default /etc/php5/fpm/php-fpm.conf

然后打开 /etc/php5/fpm/php-fpm.conf :

vi /etc/php5/fpm/php-fpm.conf

然后 error_log 为 /var/log/php-fpm.log 同时去掉 pm.min_spare_servers 与 pm.max_spare_servers 两个选项前的注释并修改为下面这样的值:

[...]
error_log = /var/log/php-fpm.log
[...]
pm.min_spare_servers = 5
[...]
pm.max_spare_servers = 35
[....]

保存刚才所作的修改,然后创建系统启动链接,并系统 PHP-FPM:

chkconfig -f --add php-fpm
/etc/init.d/php-fpm start

PHP-FPM 是一个由 /etc/init.d/php-fpm 创建的守护进程,它运行一个 FastCGI 服务器并监听 9000 端口,你可以看到下面这样的信息:

cox:~ # netstat -tapn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9473/nginx
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3407/sshd
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      9912/php-fpm.conf)
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      8924/mysqld
tcp        0      0 50.116.15.100:22        113.240.81.181:16158    ESTABLISHED 8184/0
tcp        0    300 50.116.15.100:22        113.240.81.181:18023    ESTABLISHED 9937/1
tcp        0      0 :::22                   :::*                    LISTEN      3407/sshd

配置 Nginx

Nginx的配置都由 /etc/nginx/nginx.conf 文件定义,我们现在打开它:

vi /etc/nginx/nginx.conf

Nginx的文档是十分简单的,你可以Google一下如何对Nginx进行配置,在我的这个网站里面,我的配置是下面这样的:

首先,我提高了 worker_processes 到5,同时让 keepalive_timeout 为 2

[...]
worker_processes 5;
[...]
    keepalive_timeout 2;
[...]

在Nginx中,虚拟主机是在 server {} 容器中定义的,我修改了默认的虚拟主机为下面这样的:

[...]
    server {
        listen       80;
        server_name  _;
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
        location / {
            root   /srv/www/htdocs/;
            index  index.php index.html index.htm;
        }
        #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   /srv/www/htdocs/;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ .php$ {
            root               /srv/www/htdocs;
            try_files $uri =404;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /srv/www/htdocs$fastcgi_script_name;
            include            fastcgi_params;
        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /.ht {
            deny  all;
        }
    }
[...]
  • server_name _; 让服务器监听任何没有在其它虚拟主机中定义了的域名(当然你还可以指定为某一个特定的域名,比如: *opensuse.antusoft.com*)。
  • 在 location / 部分,我给 index 添加了一个 index.php ,这让Nginx知道最先以 index.php 为索引页,同时 root /srv/www/htdocs 表示该虚拟主机的根目录是 */srv/www/htdocs*。
  • 最重要的部分就是 location ~ .php$ {} 部分,修改 root 为虚拟主机的根目录,还需要确定fastcgi_param 那一行已经修改成为了 *fastcgi_param SCRIPT_FILENAME /srv/www/htdocs$fastcgi_script_name;*,否则有可能 Nginx 找不到脚本文件

保存所做的修改,然后重新启动 Nginx

/etc/init.d/nginx restart

接着我们创建一个 info.php 文件,并保存到 /srv/www/htdocs 目录中:

vi /srv/www/htdocs/info.php

它的内容是:

<?php
    phpinfo();
?>

现在我们打开 http://50.116.15.100/info.php 即可看到下面这样的画面了:

安装 PHP5 的MySQL 支持

要让PHP支持MySQL,我们只需要安装 php5-mysql 包即可,我在这里还安装了一些其它的模块,这些都是很有可能在我的应用里面会用到的,像下面这样:

yast2 -i php5-mysql php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-pear php5-sysvmsg php5-sysvshm

安装完成之后我们需要重新启动 PHP-FPM:

/etc/init.d/php-fpm restart

重新启动之后再去查看 http://50.116.15.100/info.php,向下滚动网页直到 Modules 章节,你应该就可以看到现在PHP所支持的模块了,当然,包括了MySQL。

测试环境是否满足我的需要

我一般使用 phpMyAdmin 来管理数据库,同时使用 WordPressDrupalTextPattern 等 基于PHP 语言的CMS程序,我这里就安装了 phpMyAdmin:

一些链接

标签: none

评论已关闭