如何在Ubuntu12.04VPS上通过git使用Postgres、Nginx和PHP安装Moodle
状态: 已弃用
本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.
请参阅: 本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。
关于本指南
Moodle 是一个非常流行且经验丰富的学习平台,被许多机构使用。 虽然设置一个工作的 moodle 平台很容易,但对于许多并发用户来说,顺利运行它要困难得多。 因此,本指南中采用的一些设计选择试图解决此问题,并为常见用例提供干净、快速的解决方案。
旋转 Droplet 并创建用户
设置你的 VPS
使用 Ubuntu 12.04 LTS 创建一个新的 droplet 并设置一个新用户来完成大部分服务器端工作。
通过 ssh 登录到您的服务器(这取决于您的 IP 以及您是否为 ssh 启用了根证书):
ssh -l root your_server_ip
现在创建一个新用户并将其添加到 sudo
组(在本教程中我将调用用户 worker
):
adduser worker usermod -a -G sudo worker
现在注销并尝试以新用户身份登录:
exit ssh -l worker your_server_ip
更新您的 VPS
是时候更新您的系统并确保它在最新版本上运行:
sudo apt-get update sudo apt-get upgrade
在接下来的步骤中,我们将安装必要的软件包,然后再根据需要进行配置。
安装 nginx:
sudo apt-get install nginx
安装 php,以及一些 moodle 喜欢的模块:
sudo apt-get install php5-fpm php-apc php5-curl php5-gd php5-xmlrpc php5-intl
安装 Postgres 作为您的数据库服务器(以及它的 php 依赖项):
sudo apt-get install postgresql postgresql-contrib php5-pgsql
安装 git
Git 非常适合 moodle,因为它可以帮助您使您的网站保持最新状态,并且几乎没有更新的麻烦。
sudo apt-get install git
现在你已经准备好所有的包了。 在本教程中,我们将使用大多数预配置的设置来保持简单和易于重现。
配置你的 VPS
Nginx 决定 wwwroot 在 /usr/share/nginx/www
下,这对我们来说很好。 我们现在将在那里安装moodle:
cd /usr/share/nginx
该目录尚未准备好供任何人访问,因此我们将允许我们的用户单独访问它; moodle 不会写入自己的目录,它将使用我们将在稍后阶段设置的 moodledata
目录:
chown -R $USER:$USER www cd www git clone https://github.com/moodle/moodle.git
这将在名为 moodle 的目录中克隆 github moodle 存储库。 现在你可以更轻松地做很多事情。 例如,如果您从另一个托管服务提供商迁移到 DigitalOcean,您可以“签出”您上次使用的版本,然后签出最新版本。 或者你可以坚持使用稳定版本。 有一个简单的代码管理世界为您打开。 对于本教程,我们将简单地查看在 git 中“标记”的最新稳定版本。 要找出适合您的最新版本,请执行以下操作:
cd moodle git tag
您将获得一长串标签,截至目前最新的是 v2.5.2。 所以我将简单地检查这个标签,因为我们从全新安装开始:
git checkout v2.5.2
现在 git 魔法发生了。 一旦 git 完成它的工作,我们就在一个复制 2.5.2 稳定版的 moodle 目录中。 完美的。
如果您需要更新,您可以通过几个简单的步骤来完成:
git fetch git merge git checkout v2.6.0
在此示例中,您将加载一个提供标签 v.2.6.0(此时尚不存在)的 git 树。 然后,您通过前往 Moodle 管理页面继续进行数据库更新。
调整
在你的moodle目录中有一个名为config-dist.php的文件。 打开并编辑它:
nano config-dist.php
为了在您的服务器上工作,需要更改一些值(为简单起见,删除了注释):
<?PHP unset($CFG); global $CFG; $CFG = new stdClass(); $CFG->dbtype = 'pgsql'; $CFG->dblibrary = 'native'; $CFG->dbhost = 'localhost'; $CFG->dbname = 'moodle'; $CFG->dbuser = 'moodle'; $CFG->dbpass = 'password'; $CFG->prefix = 'mdl_'; $CFG->dboptions = array( 'dbpersist' => false, 'dbsocket' => false, 'dbport' => '', ); $CFG->wwwroot = 'http://domain_or_ip'; $CFG->dataroot = '/usr/local/moodledata'; $CFG->directorypermissions = 02777; $CFG->admin = 'admin'; require_once(dirname(__FILE__) . '/lib/setup.php');
这是一个完整的配置文件。 更改值后,您可以将其保存为 config.php 到您的 moodle 目录(确保使用您自己的密码和您自己的 wwwroot)。
进一步的步骤
刚刚执行的更改为这些后续步骤奠定了基础。 你需要设置一个moodle数据目录和一个缓存目录:
sudo mkdir /usr/local/moodledata sudo mkdir /var/cache/moodle
让它们属于 www-data 用户,简称 nginx:
sudo chown www-data:www-data /usr/local/moodledata sudo chown www-data:www-data /var/cache/moodle
第一个是存储用户上传、会话数据和其他只有 Moodle 需要访问的东西,而这些东西不应该从网络上访问。 缓存存储有助于保存文件以加快缓存速度。
现在是时候为moodle 设置数据库了。 为此,请使用 postgres 用户创建一个名为 moodle 的新角色,然后该角色将能够处理您将要创建的 moodle 数据库:
sudo su - postgres pgsql
这将启动一个新的 postgres 控制台:
CREATE USER moodle WITH PASSWORD 'password'; CREATE DATABASE moodle; GRANT ALL PRIVILEGES ON DATABASE moodle to moodle; \q
使用这些命令,您创建了一个名为“moodle”的新数据库用户,您授予该用户所有必要的权限来管理您还创建的moodle 数据库。 要返回 shell,请使用 \q
命令。
退出用户 postgres,然后在最后一步告诉 nginx 如何提供文件。 为此,请创建一个 nginx 主机文件:
exit sudo nano /etc/nginx/sites-available/moodle
它应该如下所示:
server { listen 80; root /usr/share/nginx/www/moodle; server_name example.com; # put your real site address here rewrite ^/(.*\.php)(/)(.*)$ /$1?file=/$3 last; location ^~ / { try_files $uri $uri/ /index.php?q=$request_uri; index index.php index.html index.htm; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; } } }
启用您的moodle站点并删除默认符号链接:
sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/moodle
测试你的 Moodle 平台
在我们最终启动我们的服务器之前,需要修复一个涉及您的 nginx 配置的小更改:
sudo nano /etc/php5/fpm/pool.d/www.conf
在此文件中找到 listen = 127.0.0.1:9000
并将其更改为:
listen = /var/run/php5-fpm.sock
现在启动你的 nginx 服务器和 php:
sudo service nginx start sudo service php5-fpm start
在这最后一步之后,您可以测试您的新 moodle 平台。 将您的浏览器指向您的域或服务器的 IP 地址。
Moodle 在安装时会问你几个问题。
微调您的虚拟服务器
最后,你会想要微调更多的东西。
Cronjobs 对 moodle 非常重要,在异地运行它们不如在本地运行它们有效。 您可以向 www-data 用户的 cron 选项卡添加一个简短命令:
sudo su www-data crontab -e
这将打开一个编辑器。 添加以下行,它将为您每十分钟运行一次 cron 脚本:
*/10 * * * * php -q -f /usr/share/nginx/www/moodle/admin/cli/cron.php
输入“exit”保存并返回到你自己的shell
教程到此结束。 您的 Moodle 平台现在应该非常快。 享受。