编程

如何在 Ubuntu 18.04 上安装 OpenCart

915 2023-09-06 00:14:00

介绍

通过本教程,你将学会如何在 Ubuntu 18.04 服务器上安装 OpenCart。

需求

  • 域名
  • Ubuntu 上安装 Nginx 服务器
  • SSL 证书

更新系统软件包至最新版,并使用下面命令进行安装:

sudo apt update && sudo apt upgrade
sudo apt install unzip

步骤 1 - 创建 MySQL 数据库

1) 如果系统中已有 MySQL 或 MariaDB 可跳过此步。如果没有,你可以使用下面命令下载 MySQL 5.7 :

sudo apt install mysql-server mysql-client

注意: 新安装的 MySQL,推荐运行,  mysql_secure_installation 命令去提示 MySQL 服务器的安全性。

2) 然后使用下面命令登陆 MySQL shell:

sudo mysql

3) 现在,执行 SQL 语句,创建新数据库:

CREATE DATABASE opencart;

4) 然后创建 MySQL 用户名,并授权所有必须的权限:

GRANT ALL ON opencart.* TO 'opencart'@'localhost' IDENTIFIED BY 'change-with-strong-password';

将 change-with-strong-password 替换为强密码。

5) 完成后,使用下面命令退出 MySQL

EXIT;

步骤 2 - 安装配置 PHP

1) Ubuntu 18.04 安装的默认版本与该安装不兼容。因此,我们将添加 PPA 以安装最新版 PHP 8.2。由于 Nginx 被用作 web 服务器,你需要安装 PHP-FPM 包。 

添加 PPA:

sudo apt update
sudo apt -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

安装 PHP 及其扩展:

sudo apt install php php-common php-cli php-fpm php8.2-opcache php-gd php-mysql php-curl php-intl php8.2-xsl php-mbstring php-zip php-bcmath php-soap

2) 安装完这些 PHP 包后,它们将自动启动。你可以用下面命令验证:

sudo systemctl status php8.2-fpm

3) 输出显示 FPM 服务器被激活且在运行:

Output

 ● php8.2-fpm.service - The PHP 8.2 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php8.2-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-02-25 10:45:42 UTC; 53s ago
     Docs: man:php-fpm8.2(8)
 Main PID: 27446 (php-fpm8.2)
   Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 3 (limit: 505)
   CGroup: /system.slice/php8.2-fpm.service
           ├─27446 php-fpm: master process (/etc/php/8.2/fpm/php-fpm.conf)

4) 然后,使用 sed 修改 php.ini,设置 PHP 选项:

sudo sed -i "s/memory_limit = .*/memory_limit = 1024M/" /etc/php/8.2/fpm/php.ini
sudo sed -i "s/upload_max_filesize = .*/upload_max_filesize = 256M/" /etc/php/8.2/fpm/php.ini
sudo sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/8.2/fpm/php.ini
sudo sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/8.2/fpm/php.ini
sudo sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.2/fpm/php.ini
sudo sed -i "s/;opcache.save_comments.*/opcache.save_comments = 1/" /etc/php/8.2/fpm/php.ini

设置PHP默认版本为 8.2:

sudo update-alternatives --config php

选择正确的版本号 PHP 8.2

Output

There are 4 choices for the alternative php (providing /usr/bin/php).

  Selection    Path                  Priority   Status
------------------------------------------------------------
  0            /usr/bin/php.default   100       auto mode
  1            /usr/bin/php.default   100       manual mode
  2            /usr/bin/php7.2        72        manual mode
  3            /usr/bin/php7.4        74        manual mode
* 4            /usr/bin/php8.2        82        manual mode

Press <enter> to keep the current choice[*], or type selection number: 4

步骤 3 - 安装 OpenCart

1) 本文写作时,OpenCart 的最新版是 4.0.2.2。
下载前,先创建一个目录保存OpenCart 文件:

sudo mkdir -p /var/www/html/example.com

2) 然后,使用如下命令从 OpenCart 仓库中下载最新版:

cd /tmp
wget https://github.com/opencart/opencart/releases/download/4.0.2.2/opencart-4.0.2.2.zip

3) 下一步,解压 OpenCart 文件并移动到域名根目录:

unzip opencart-*.zip
sudo mv /tmp/opencart-4.0.2.1/upload/* /var/www/html/example.com/

4) 然后使用 cp 命令,复制配置文件:

sudo cp /var/www/html/example.com/{config-dist.php,config.php}
sudo cp /var/www/html/example.com/admin/{config-dist.php,config.php}

5) 授权使服务器有访问网站文件和目录的权限。

sudo chown -R www-data: /var/www/html

步骤 4 - 配置 Nginx

1)现在,创建以下文件: 

sudo nano /etc/nginx/sites-available/example.com

如果你有域名请使用如下配置:

# Redirect HTTP -> HTTPS
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

# Redirect WWW -> NON WWW
server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    root /var/www/html/example.com;
    index index.php;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # log files
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

}

否则,可以使用下面配置,以使用 IP 地址访问:

server {
    listen 80;
    server_name example.com;

    root /var/www/html/example.com;
    index index.php;

    # log files
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

}

使用你自己的 OpenCart 域名替换 example.com,并设置正确的 SSL 请求证书文件路径。所有的 HTTP 请求会直接重定向到 HTTPS。

2) 重启前检测语法错误:

sudo nginx -t

3) 如果没有出错,你将看到如下输出:

Output

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

4) 然后将其链接到 sites-enabled 并取消默认配置的链接:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default

4) 重启 NGINX 服务器

sudo systemctl restart nginx

步骤 5 - 进行 OpenCart 安装

1)  OpenCart 下载完且完成服务器配置后,你需要处理网页安装。

打开浏览器输入域名,你可以看到类似于下面屏幕的内容。

2) 选择你需要的语言,然后在同意许可协议后点击 Continue。

3) This reveals the information tab:

4) 如果所有预安装要求都符合,点击 Continue 继续。

5) 下一屏将要求输入数据库连接详情。

6) 接下来输入用户名,密码,邮箱并点击 Continue

7) 然后就会跳转到确认安装完成的页面。

8) 点击 Login to your Administration 按钮,访问后台。

9) 首次登录后台会弹出弹窗,要求将存储目录移除网站目录。

10) 选择默认的 Automatically Move 选项并点击红色的 Move 按钮。该目录应该是服务器有权访问的目录。

现在可以自定义安装并添加新产品了。

11) 删除安装目录。回到终端并输入如下命令:

sudo rm -rf /var/www/html/example.com/install