Debian下使用apt-get安装 Nginx + MySQL + PHPMyAdmin 备忘

!本文可能 超过1年没有更新,今后内容也许不会被维护或者支持,部分内容可能具有时效性,涉及技术细节或者软件使用方面,本人不保证相应的兼容和可操作性。

首先添加必要的apt源,并使用下面的命令使服务器保持最新:

apt-get update
apt-get upgrade

假设服务器没有配置Web服务和MySQL数据库,首先安装Web服务,这里首选Nginx:

apt-get install nginx

其次安装MySQL数据库,尝试使用下面的命令(其间可能需要交互输入密码):

apt-get install mysql-server

接下来简单介绍一下PHP的安装,这里使用FastCGI模式,仍然使用apt-get命令,配置来至lowendscript,其中部分配置对于小内存VPS进行了优化,建议按要求修改,例如PHP_FCGI_CHILDREN和PHP_FCGI_MAX_REQUESTS等参数值:

apt-get install php5-cgi php5-cli php5-mysql
# 以下参考至lowendscript小内存PHP配置
# https://github.com/lowendbox/lowendscript
cat > /etc/init.d/php-cgi <<END
#!/bin/bash
### BEGIN INIT INFO
# Provides:          php-cgi
# Required-Start:    networking
# Required-Stop:     networking
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start the PHP FastCGI processes web server.
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
NAME="php-cgi"
DESC="php-cgi"
PIDFILE="/var/run/www/php.pid"
FCGIPROGRAM="/usr/bin/php-cgi"
FCGISOCKET="/var/run/www/php.sock"
FCGIUSER="www-data"
FCGIGROUP="www-data"
 
if [ -e /etc/default/php-cgi ]
then
    source /etc/default/php-cgi
fi
 
[ -z "\$PHP_FCGI_CHILDREN" ] && PHP_FCGI_CHILDREN=1
[ -z "\$PHP_FCGI_MAX_REQUESTS" ] && PHP_FCGI_MAX_REQUESTS=5000
 
ALLOWED_ENV="PATH USER PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS"
 
set -e
 
. /lib/lsb/init-functions
 
case "\$1" in
start)
    unset E
    for i in \${ALLOWED_ENV}; do
        E="\${E} \${i}=\${!i}"
    done
    log_daemon_msg "Starting \$DESC" \$NAME
    env - \${E} start-stop-daemon --start -x \$FCGIPROGRAM -p \$PIDFILE \\
        -c \$FCGIUSER:\$FCGIGROUP -b -m -- -b \$FCGISOCKET
    log_end_msg 0
    ;;
stop)
    log_daemon_msg "Stopping \$DESC" \$NAME
    if start-stop-daemon --quiet --stop --oknodo --retry 30 \\
        --pidfile \$PIDFILE --exec \$FCGIPROGRAM
    then
        rm -f \$PIDFILE
        log_end_msg 0
    else
        log_end_msg 1
    fi
    ;;
restart|force-reload)
    \$0 stop
    sleep 1
    \$0 start
    ;;
*)
    echo "Usage: \$0 {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac
exit 0
END
    chmod 755 /etc/init.d/php-cgi
    mkdir -p /var/run/www
    chown www-data:www-data /var/run/www
 
    cat > /etc/nginx/fastcgi_php <<END
location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
 
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
    if (-f \$request_filename) {
        fastcgi_pass unix:/var/run/www/php.sock;
    }
}
END
update-rc.d php-cgi defaults
invoke-rc.d php-cgi start

最后安装PHPMyAdmin,使用下面的命令安装:

apt-get install phpmyadmin

注意会提示你选择Apache或者lighttpd服务器,我们用的是Nginx,所以这里按Esc退出选择,然后会提示你输入数据库root密码,输入后按OK确定。

安装完成后,phpmyadmin所有代码文件都默认位于/usr/share/phpmyadmin路径下,假设我们的Web主路径位于/var/www下,接下来做个链接就可以了:

ln -s /usr/share/phpmyadmin/ /var/www/

最后建立Nginx配置文件:

cat > "/etc/nginx/sites-enabled/www.conf" <<END
server {
    server_name example.com; # 你的域名
    root /var/www;
    include /etc/nginx/fastcgi_php;
    location / {
        index index.php;
    }
}
END

好了,最后还有一步别忘记了,那就是重启php-cgi并让Nginx重新加载配置:

invoke-rc.d php-cgi restart
nginx -s reload

基本上步骤就是这样。

若无特别说明,本网站文章均为原创,原则上这些文章不允许转载,但是如果阁下是出于研究学习目的可以转载到阁下的个人博客或者主页,转载遵循创作共同性“署名-非商业性使用-相同方式共享”原则,请转载时注明作者出处谢绝商业性、非署名、采集站、垃圾站或者纯粹为了流量的转载。谢谢合作!

    • 呵呵,共同学习,共同进步吧。我也是最近搞VPS才接触点Linux,也是新手,就知道点apt-get安装管理软件,再上网找找配置方面的文章,现在Linux有了软件包管理后,安装软件和配置都挺方便的,而且升级也容易,所以基本上都apt-get了。
      现在真的不想再跟着微软后面做事了,争取以后全部用开源软件取代微软的商业软件。

  1. 老大,按照你的方法一步步的做,可是不行,我安装了nginx,mysql-server,php5,phpmyadmin都安装成功了
    就是“PHP的安装,这里使用FastCGI模式,仍然使用apt-get命令,配置来”这个地方不懂,我跳过了,还有“建立Nginx配置文件”我没有写,
    问题我用:IP/phpmyadmin访问出现“无法加载 mysqli (外链,英语) 扩展,请检查您的 PHP 配置。 – 文档”
    能不能给我讲详细点啊,我最近才接触VPS,找了几天的资料了,还是没让网站运行起来

    • 这里还是配置命令,主要是
      apt-get install php5-cgi php5-cli php5-mysql
      (其余见原文,这里略)
      你直接输入命令即可,难以理解的那段是cat > /etc/init.d/php-cgi < ...这句吧,其实这个是为了优化php-cgi占用资源而导入的配置,适合小型网站,可以略过。
      另外下面这段是

      cat > /etc/nginx/fastcgi_php <<END...
      # (其余略过,见原文)

      是导入的Nginx配置,如果你手动配置的话也可以略过。

      另外针对你提出的问题现象,可能是没有安装连接mysql所需要的扩展,建议尝试下面命令来安装

      apt-get install php5-mysql php5-mysqli mysql-client mysql-common

      希望对你有所帮助。

      • 老大,还是不行,LNMP一键安装包我安装过,可以成功的跑网站,《Bootstraping WordPress/Nginx/PHP/MySQL on a Cheap VPS with lowendscript》这个我也看过,但是安装过后数据库密码总是提示错误。不知道怎么解决,所以我现在是想学基本的,我想学着手动配制。能不能给个Q,教我一下

        • 《Bootstraping WordPress/Nginx/PHP/MySQL on a Cheap VPS with lowendscript》这个密码是随机生成的,你可以通过下面的命令看到密码明文

          cat ~/.my.cnf

          我近期在外面学习,这两天可能不方便登录QQ,说实在的我现在也是半手动半自动的配置服务器的(我博客的VPS就是lowendscript配置),完全意义上的手动,我认为是要手动编译源代码的,但是这样不利于软件的管理和升级,大体上通过apt-get安装的顺序如下:

          # 下面两句更新并升级系统或者已安装的软件
          apt-get update
          apt-get upgrade
           
          # 1.安装Nginx
          apt-get install nginx
           
          # 2.安装MySQL,以及连接MySQL的Client
          apt-get install mysql-server mysql-client mysql-common
           
          # 3.安装PHP,以及PHP访问MySQL的必须组件
          # 下面这句中 php5-cgi指WEB方式访问的FastCGI
          #            php5-cli指的是命令行执行PHP
          apt-get install php5 php-cgi php5-cgi php5-cli
          apt-get install php5-common php5-mysql php5-mysqli
           
          # 选择安装其他组件,比如phpmyadmin,详见原文
           
          # 最后重新更新配置
          # 重启php-cgi
          invoke-rc.d php-cgi restart
          # 重载Nginx配置
          nginx -s reload

          如果你对命令有了解的话可以参考lowendscript脚本内容,或者将现在流行的一键安装包下载下来阅读其间的命令代码,应该基本上都是能看懂的。
          另外现在流行的除了php5-cgi外还有PHP FPM方式,这个稳定性好,负载大,就是较占用内存,安装命令是apt-get install php5-fpm
          部分文档供参考《http://library.linode.com/web-servers/nginx/php-fastcgi/debian-6-squeeze》
          如果仍然有问题,等我回来再联系吧。

  2. 我刚才又安装一次lowendscript脚本,MYSQL密码在.my.cnf里,可以看的到,我直接安装wordpress可以正常安装。于是我又安装一次系统,安装好lowendscript脚本后,我修改MYSQL密码。重启VPS,登陆后再安装,就出错了“mysqladmin: connect to server at ‘localhost’ failed
    error: ‘Access denied for user ‘root’@’localhost’ (using password: YES)’
    ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)”
    但是我用修改的新密码直接mysql -u root -p 然后输入新密码,可以登陆。但输入系统自动生成的那个密码就登陆不了了,用CAT查看.my.cnf文件密码还是系统生成的那个
    为什么修改MYSQL密码后wordpress安装不上去了
    还有,我如果想再添加一个域名,用织梦做网站呢?那该怎么办呢?

    • 保存在.my.cnf的密码是利用lowendscript安装MySQL的初始root密码,当你修改过密码后,这个文件就没有作用了,MySQL不是通过这个文件来验证密码的,所以你修改过密码后应该用新密码登录。

      而之前WordPress安装的话已经在wp-config.php的大概第21行和24行记录了连接MySQL所需要的密码了,当你更改过密码后,这部分也需要更新为你新的MySQL密码和MySQL用户名,否则WordPress会因为密码错误而无法连接MySQL数据库。

      再添加一个域名的话,你需要修改Nginx配置,在/etc/nginx/sites-enabled路径下面添加配置文件example.conf(文件名任意),内容差不多这样:

      server {
          server_name example.com; # 你要绑定的域名
          root /var/www;  # 你的Web文件路径
          include /etc/nginx/fastcgi_php;
          location / {
              index index.php; # 默认首页
          }
      }
      

      或者完整的输入下面的命令并回车会帮助你更快的建立包含配置内容的文件:

      cat > "/etc/nginx/sites-enabled/example.conf" <<END
      server {
          server_name example.com; # 你的域名
          root /var/www;  # 你的Web文件路径
          include /etc/nginx/fastcgi_php;
          location / {
              index index.php; # 默认首页
          }
      }
      END

      你也可以将多个站写入一个配置文件中(包含多个server { … }),不过基本上建议一个站建立一个配置文件,这样分割利于管理。

      然后重新加载PHP和Nginx:

      invoke-rc.d php-cgi restart
      nginx -s reload

      祝你成功

请稍后...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*