Skip to content

安装开发环境 - Ubuntu ​

安装 PHP ​

EduSoho 推荐使用 Docker 部署 PHP,MySQL、Nginx 仍在宿主机安装。

Docker 部署(推荐) ​

先按 Docker 官方文档 安装 Docker Engine 和 Compose 插件。

以下以 PHP 7.2 为例;EduSoho 8.6.14 及以上可使用 PHP 7.4,将下文的 7.2 全部替换为 7.4。

创建部署目录:

bash
sudo mkdir -p /opt/php-7.2
sudo chown "$(id -u):$(id -g)" /opt/php-7.2
cd /opt/php-7.2
mkdir -p conf data/cron

创建 docker-php-entrypoint:

sh
#!/bin/sh
set -e

mkdir -p /run/php /var/spool/cron/crontabs
chown root:crontab /var/spool/cron/crontabs
chmod 1730 /var/spool/cron/crontabs
for f in /var/spool/cron/crontabs/*; do
  [ -f "$f" ] || continue
  chown "$(basename "$f")":crontab "$f"
  chmod 600 "$f"
done
cron
exec "$@"

创建 Dockerfile:

dockerfile
FROM ubuntu:24.04

ENV TZ=Asia/Shanghai
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
      software-properties-common ca-certificates tzdata && \
    LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php && \
    apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
      cron php-pear php7.2-cli php7.2-common php7.2-curl php7.2-dev \
      php7.2-fpm php7.2-json php7.2-mbstring php7.2-mcrypt php7.2-mysql \
      php7.2-opcache php7.2-zip php7.2-intl php7.2-gd php7.2-xml php7.2-redis && \
    ln -sf /usr/sbin/php-fpm7.2 /usr/local/bin/php-fpm && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

COPY docker-php-entrypoint /usr/local/bin/docker-php-entrypoint
RUN chmod +x /usr/local/bin/docker-php-entrypoint
WORKDIR /var/www
ENTRYPOINT ["docker-php-entrypoint"]
CMD ["php-fpm", "-F"]

构建镜像并复制配置:

bash
sudo docker build --pull --no-cache -t edusoho/php:7.2 .
sudo docker run --rm --entrypoint cp -v "$PWD/conf:/conf" edusoho/php:7.2 \
  /etc/php/7.2/fpm/pool.d/www.conf /conf/www.conf
sudo docker run --rm --entrypoint cp -v "$PWD/conf:/conf" edusoho/php:7.2 \
  /etc/php/7.2/fpm/php.ini /conf/php.ini
sudo chown "$(id -u):$(id -g)" conf/*

修改 PHP-FPM 监听地址,开发环境使用 127.0.0.1:9000:

bash
sed -i -E 's|^[[:space:]]*listen[[:space:]]*=.*|listen = 127.0.0.1:9000|' conf/www.conf

创建 docker-compose.yml:

yaml
services:
  fpm:
    image: edusoho/php:7.2
    restart: unless-stopped
    network_mode: host
    volumes:
      - /var/www:/var/www
      - ./conf/www.conf:/etc/php/7.2/fpm/pool.d/www.conf
      - ./conf/php.ini:/etc/php/7.2/fpm/php.ini
      - ./data/cron:/var/spool/cron
    environment:
      TZ: Asia/Shanghai

启动并验证:

bash
sudo docker compose up -d
sudo docker compose exec fpm php-fpm -t
sudo docker compose exec fpm php -v
sudo docker compose logs fpm

网站目录须按相同绝对路径挂载;MySQL 地址使用 127.0.0.1,PHP 上传和内存限制在 conf/php.ini 中调整,修改后执行 sudo docker compose restart fpm。

后续安装 EduSoho、执行 PHP 命令时,先进入容器:

bash
cd /opt/php-7.2
sudo docker compose exec -u www-data fpm bash
cd /var/www/edusoho

直接安装 ​

不使用 Docker 时,可通过 PPA 安装 PHP,以下以 PHP 7.1 为例:

bash
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php-pear php7.1-cli php7.1-common php7.1-curl \
    php7.1-dev php7.1-fpm php7.1-json php7.1-mbstring php7.1-mcrypt \
    php7.1-mysql php7.1-opcache php7.1-zip php7.1-intl php7.1-gd php7.1-xml

修改 PHP-FPM 监听方式为127.0.0.1:9000:

bash
sudo sed -i 's/listen = .*/listen = 127.0.0.1:9000/g' /etc/php/7.1/fpm/pool.d/www.conf

重启 PHP-FPM 服务进程:

bash
sudo service php7.1-fpm restart

安装 MySQL ​

EduSoho 推荐安装当前最新稳定版本 MySQL 5.7。

配置 MySQL 5.7 的源:

bash
# 可在 http://dev.mysql.com/downloads/repo/apt/ 页面找到 mysql-apt-config 的最新版本。
wget http://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb

这时会弹出让你选择,将:

  • MySQL Server修改为: mysql-5.7
  • MySQL Tools & Connectors (Currently selected: Enabled)修改为Disabled。
  • MySQL Preview Packages修改过为 Disabled。
bash
sudo apt-get update
sudo apt-get install mysql-server

安装过程中会提示设置 MySQL 的 root 密码,按回车即可,表示密码为空。

注意

为方便开发,这里设置了 MySQL 的 root 密码为空。如在生产环境,请勿这样做,需设置一定强度的密码。

MySql 5.7.6 起,安装时如果 root 不设置密码,那么默认会采用auth_socket的方式登陆 MySQL 。也就是登陆 MySQL 时验证你的 Linux 的当前用户是否为 root,如果不是就不能登陆。在auth_socket模式下,应用程序通过数据库的用户名、密码是无法连接的,这就需要我们将数据库的登陆模式,改为mysql_native_password模式。

进入数据库:sudo mysql -uroot,执行:

sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
FLUSH PRIVILEGES;
exit;

安装 Nginx ​

bash
sudo add-apt-repository ppa:nginx/stable
sudo apt-get update
sudo apt-get install nginx

验证 Nginx 服务启动是否成功:

bash
echo "Hello, World." > /var/www/index.html
echo "<?php \nphpinfo();" > /var/www/phpinfo.php

在浏览器中打开http://localhost,出现Hello, World.表示 Nginx 启动成功。 在浏览器中打开http://localhost/phpinfo.php,出现 PHP 配置相关信息,表示 PHP 配置成功。

如启动失败,可通过查看/var/log/nginx/error.log日志文件来获得错误信息。

安装 Node.js ​

bash
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
bash
echo "
deb https://mirrors.tuna.tsinghua.edu.cn/nodesource/deb_6.x trusty main
deb-src https://mirrors.tuna.tsinghua.edu.cn/nodesource/deb_6.x/ trusty main
" | sudo tee /etc/apt/sources.list.d/nodesource.list
bash
sudo apt-get update
sudo apt-get install -y nodejs

安装 yarn:

bash
sudo npm install -g yarn

配置 npm、yarn 源为国内源,以大幅提升NPM的安装速度:

bash
sudo npm config set registry https://registry.npm.taobao.org
sudo yarn config set registry https://registry.npm.taobao.org

安装 Git ​

bash
sudo apt-add-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git

安装 phpMyAdmin ​

phpMyAdmin 是一款方便易用的 MySql 数据库管理软件。可以在 官网 下载最新版的 phpMyAdmin。

下载后,将 phpMyAdmin 解压到:/var/www/phpmyadmin目录下,创建配置文件config.inc.php,内容如下:

php
<?php

$i = 0;

/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '127.0.0.1';
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['AllowNoPassword'] = true;

在打开浏览器打开 http://localhost/phpmyadmin/ ,即可进入 phpMyAdmin。