树莓派折腾记:部署LNMP环境并实现多站点共存

文章更新:

  20161212 初次成文   20170601 更新多站点的部署方式并增加注意事项

问题提出:

  谈到树莓派能折腾些什么,不得不提的就是把树莓派部署所需环境在小派上跑网站了。在这篇文章中,小苏会向大家介绍如何在树莓派上部署LNMP环境并实现多站点访问。

  由于树莓派在软件和硬件上的更新,互联网中大多数有关在树莓派上部署LNMP环境的教程大多基于"树莓派2代",经过小苏的测试,这些教程已经不再适用于小苏手中的"树莓派3代"了,经过一番搜索和折腾,小苏最终找到了使用于3代的部署教程,并且经过进一步折腾,终于在树莓派3代上成功实现了"多站点共存"。

解决方案:

  1. 做一些准备工作:

sudo apt-get update #更新软件源索引 sudo apt-get upgrade #更新已安装的软件(可选)

  2. 安装Nginx,PHP,MySQL和它们的一些依赖组件:

sudo apt-get install nginx php5-fpm php5-cgi php5-cli php5-curl php5-gd php5-mcrypt php5-mysql php5-memcache php5-gd php5-sqlite php5-cgi php5-xmlrpc mysql-server mysql-client

  值得一提的是,这个过程是直接安装编译好的deb包,而不是下载源码另外编译,但即使如此,这个过程还是可能需要较长时间。

  在安装过程中,需要用户输入MySQL的Root用户密码,按提示输入,输入完成按"回车键"即可提交。

  3. 安装phpmyadmin:

sudo apt-get install phpmyadmin

  在安装过程中需要用户选择已安装的服务器类型,有apache和lighthttpd两个选择,但我们刚刚安装的nginx却不在选择列表内,选择apache即可,没有影响。

  如果你在安装phpmyadmin的过程中遇到了类似以下内容的提示,可以按Tab键切换光标,选择"Yes"后按Enter键确认以进行接下来的操作(若未遇到此提示请忽略):

The phpmyadmin package must have a database installed and configured before it can be used. This
can be optionally handled with dbconfig-common.
If you are an advanced database administrator and know that you want to perform this configuration
manually, or if your database has already been installed and configured, you should refuse this
option. Details on what needs to be done should most likely be provided in
/usr/share/doc/phpmyadmin.

Otherwise, you should probably choose this option.
Configure database for phpmyadmin with dbconfig-common?

  在安装过程中还需要MySQL的Root用户密码,输入刚刚设置好的即可,并且还需要输入phpmyadmin的管理密码,输入并按回车键提交即可。

  安装phpmyadmin完成后,我们需要创建一个链接将phpmyadmin文件夹链接到Nginx的网页文件夹中:

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

  4. 配置Nginx网站文件夹属性:   将Nginx默认的网页文件夹:/var/www/html/赋予可执行权限,并且将其用户组改为"www-data"。

sudo chmod 755 /var/www/html/ #将/var/www/html/文件夹赋予可执行权限 sudo chown -R www-data:www-data /var/www/html #将/var/www/html/文件夹的用户组改为"www-data"

  5. Nginx配置:   在这一步中,我们通过修改Nginx站点属性文件来配置Nginx:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak #备份Nginx默认站点属性文件 sudo vim /etc/nginx/sites-available/default #使用vim编辑默认站点属性文件

  在vim中,我们清空原文件的内容,粘贴以下内容:

server
{
    listen       80;
    server_name yourdomain.com; #server_name end
    index index.html index.htm index.php; #index end
    charset utf-8;

    root  /var/www/html;

    location ~ .*\.php(\/.*)*$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
  }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)$
    {
        expires      12h;
    }

    access_log off; #access_log end
    error_log /dev/null; #error_log end
}

  其中,我们需要修改文件中的"yourdomain1.com"为你想要绑定的域名,其他保持默认,保存文件。

  这个站点为默认站点,所谓的默认站点,为访问者访问树莓派的IP地址后显示在访问者屏幕上的站点。

  保存文件后我们需要重启一下Nginx:

sudo service nginx restart #重启Nginx服务

  6. 做完这一步后,访问"http://你的树莓派IP地址/phpmyadmin"即可看到phpmyadmin的登陆页面,代表LNMP环境部署成功。

  至此为止,LNMP环境部署成功,我自己折腾的时候卡在第5步好久,最后以AMH面板的配置文件为基础,结合教程中fastcgi部分重新做了一份配置文件,终于成功(捂脸哭)。   下面开始介绍LNMP的多站点配置过程:

  LNMP环境搭建完成后,如果你想在树莓派上部署多个网站,可以通过下面的方式操作:

  在Nginx中实现多站点共存的方式是在/etc/nginx/conf.d中新建多个后缀为conf的多站点配置文件。

  1. 配置第二个站点:   接下来我们创建第二个站点:站点文件夹路径为/var/www/site1,第二个站点的配置文件为/etc/nginx/conf.d/site1.conf ,其中,站点文件夹可以在网站配置文件(/etc/nginx/conf.d/site1.conf)中更改。

  首先我们建立并配置第二个站点文件夹:

cd /var/www #将工作目录定位到/var/www sudo mkdir site1 #新建第二个站点的网站文件夹 sudo chmod 755 ./site1 #赋予site1文件夹可执行权限 sudo chown -R www-data:www-data ./site1 #将site1文件夹的用户组改为"www-data"

  配置站点配置文件/etc/nginx/conf.d/site1.conf:

sudo vim /etc/nginx/conf.d/site1.conf #新建site1.conf文件

  将下面的内容粘贴到site1.conf中,修改domain2.com为你绑定的域名,保存并退出vim:

server
{
    listen       81;
    server_name domain2.com; #server_name end
    index index.html index.htm index.php; #index end
    charset utf-8;

    root  /var/www/site1;

    location ~ .*\.php(\/.*)*$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
  }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp3|wma)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)$
    {
        expires      12h;
    }

    access_log off; #access_log end
    error_log /dev/null; #error_log end
}

  其中,81为此站点监听的端口,你也可以将此端口改成你想要的其他端口(只要不与其他服务的端口冲突就可以)。

  接下来,我们重启Nginx服务:

sudo service nginx restart #重启Nginx服务

  2. 在局域网中访问部署在树莓派中的多个站点:   在上面的步骤中,我们在Nginx中部署了多个站点,在局域网下的其他设备上,我们可以通过在树莓派的IP地址后加入各站点的监听端口来实现。

  在上面的步骤中,默认站点的监听端口为80,所以我们可以直接访问树莓派的IP地址(IP地址后无需增加端口)即可访问到默认站点,比如树莓派在局域网中的IP地址为192.168.123.152,那么我们直接在同局域网下的其他设备的浏览器中输入:

http://192.168.123.152/

  即可访问默认站点,如果你是按以上方法配置的,访问第二个站点只需要在树莓派的IP地址后加入:监听端口号,因为第二个站点的监听端口号为81,所以我们在同局域网下的其他设备的浏览器中输入:

http://192.168.123.152:81/

  即可访问到第二个站点。

参考资料:

  在Raspberry Pi 3上搭建Typecho+LNMP: http://www.51hei.com/bbs/dpj-55369-1.html

  树莓派从系统安装到搭建nginx+php+mysql - hongfeizhou: http://www.cnblogs.com/hongfeizhou/p/5307013.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏散尽浮华

[原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

近年来,由于开源项目、社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发、敏捷开发、迭代开发、持续集成和单元测试这些拉风的...

1.1K9
来自专栏云计算教程系列

如何在服务器上安装LAMP

在本教程中,我们将在Ubuntu上安装LAMP。Ubuntu将满足我们的第一个要求:Linux操作系统。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免...

3972
来自专栏Laoqi's Linux运维专列

集群架构の のzabbix 监控

44710
来自专栏张伟博客

linux安装一键安装phpstudy web环境

8327
来自专栏北京马哥教育

HTTP 协议漫谈

简介 网络上已经有不少介绍 HTTP 的好文章,对HTTP的一些细节介绍的比较好,所以本篇文章不会对 HTTP 的细节进行深究,而是从够高和更结构化的角度将 H...

29211
来自专栏三杯水

系统重启后nginx reload不生效原因分析

这是一种比较少见,困扰我很久的问题,虽然这个问题很简单,但是找到根本原因还是费了不少时间,现在把分析过程分享如下。

2772
来自专栏Golang语言社区

HTTP协议漫谈

简介 园子里已经有不少介绍HTTP的的好文章。对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将H...

3776
来自专栏python3

Linux查看进程占用资源排名

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

1011
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用Pydio托管文件共享服务器

随着云的采用增加,越来越多的数据被远程存储。从音乐到图片再到个人文档,很多人都将文件上传到他们不管理的服务器上。如果您希望将文件保存在您控制的服务器上,则可以使...

3080
来自专栏博客园迁移

jenkins自动部署应用到tomcat中,编译后shell脚本的简单示例

1.先配置好jenkins需要用到的其他外部组件  jdk,maven,git/svn

1763

扫码关注云+社区