# Root install (LEMP)

本指南适用于 Ubuntu 18.04.3 (LTS) x64,它旨在 LEMP(Linux, NGINX, MySQL 和 PHP) 中安装 Chevereto

example.com 替换为您自己的域名

# 准备系统

在开始之前,请确保更新且为最基本的系统

sudo apt update && sudo apt upgrade

如果询问有关更新或保留软件包的问题,请使用推荐的选项

# 安装 NGINX

sudo apt install nginx

# 安装 MySQL 数据库

sudo apt install mysql-server

进入 MySQL 控制台

sudo mysql -u root

进入 MySQL 控制台后,您会看到 mysql> 提示符。运行以下语句:

CREATE DATABASE chevereto;
CREATE USER 'chevereto' IDENTIFIED BY 'enter_a_password_here';
GRANT ALL ON chevereto.* TO 'chevereto' IDENTIFIED BY 'enter_a_password_here';
quit

注意: 您必须注意数据库名称、用户名和密码(其中为enter_a_password_here),这些详细信息将会在后面使用到

数据库、用户和权限设置完毕,运行以下命令来进行 MySQL 安全安装

sudo mysql_secure_installation

请按如下方式回答所有问题

Set root password? [Y/n] n
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

# 安装 PHP

sudo apt install php-fpm php-zip php-curl php-mbstring php-gd php-mysql

使用 nano 编辑器创建 chevereto.ini 文件

sudo nano /etc/php/7.2/fpm/conf.d/chevereto.ini

使用 Ctrl+Shift+V 粘贴以下内容:

upload_max_filesize = 20M;
post_max_size = 20M;
max_execution_time = 30;
memory_limit = 512M;

使用快捷键 Ctrl+o Ctrl+x 保存并关闭文件

# 安装网站

创建网站文件路径,并为 www-data 设置好用户权限

sudo mkdir -p /var/www/html/example.com/public_html
sudo chown www-data:www-data /var/www/html/example.com/public_html

移除默认的 NGINX 网站

sudo rm -f /etc/nginx/sites-enabled/default

使用 nano 编辑器创建网站配置文件

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

使用 Ctrl+Shift+V 粘贴以下内容:

server {
    listen         80 default_server;
    listen         [::]:80 default_server;
    server_name    example.com;
    root           /var/www/html/example.com/public_html;
    index          index.html;

    # Context limits
    client_max_body_size 20M;

    # Disable access to sensitive files
    location ~* (app|content|lib)/.*\.(po|php|lock|sql)$ {
        deny all;
    }

    # Image not found replacement
    location ~ \.(jpe?g|png|gif|webp)$ {
        log_not_found off;
        error_page 404 /content/images/system/default/404.gif;
    }

    # CORS header (avoids font rendering issues)
    location ~ \.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ {
        add_header Access-Control-Allow-Origin "*";
    }

    # Pretty URLs
    location / {
        index index.php;
        try_files $uri $uri/ /index.php$is_args$query_string;
    }

    location ~* \.php$ {
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }
}

使用快捷键 Ctrl+o Ctrl+x 保存并关闭文件

设置网站软链接(使网站可用)

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

重启 PHP 和 NGINX.

sudo systemctl restart php7.2-fpm
sudo systemctl restart nginx

# 设置 HTTPS

安装 Certbot 和 Web 服务器专用包,然后运行 Certbot

sudo apt install python-certbot-nginx
sudo certbot --nginx

当系统询问您是否要将 HTTP 流量自动重定向到 HTTPS 流量时,请回答 YES

当该工具完成后,Certbot 会更新你的Web服务器配置,以便使用新证书

# 安装 Chevereto

下载安装程序到你的网站目录,为这些文件设置 www-data 用户执行权限,

sudo -u www-data wget -O /var/www/html/example.com/public_html/installer.php https://chevereto.com/download/file/installer

打开你的网站 /installer.php ,按照流程操作(忽略 Nginx 规则的警告)。完成后,进入 仪表盘,确保连接 IP 与您的 IP 一致。

# 真实 IP (CloudFlare,可选)

如果您运行 CloudFlare,您需要配置 ngx_http_realip_module。安装并同步 CloudFlare IP 段的脚本

wget -P /opt/scripts https://raw.githubusercontent.com/ergin/nginx-cloudflare-real-ip/master/cloudflare-sync-ips.sh
chmod +x /opt/scripts/cloudflare-sync-ips.sh
/opt/scripts/cloudflare-sync-ips.sh

文件 /etc/nginx/cloudflare 现在应该包含 CloudFlare IP 段,现在必须将其包含在 /etc/nginx/nginx.conf 中的 NGINX 配置中。在 http{} 块中加入以下一行

include /etc/nginx/cloudflare;

添加一个 crontab,每天更新 CloudFlare IP 段

sudo crontab -e

如果询问要使用的编辑器,请选择 nano

使用 Ctrl+Shift+V 粘贴以下内容:

# Auto sync Cloudflare IP ranges and reload NGINX
0 */12 * * * /opt/scripts/cloudflare-sync-ips.sh >/dev/null 2>&1

使用快捷键 Ctrl+o Ctrl+x 保存并关闭文件

# 额外步骤

# 邮箱

你可能需要在这个服务器配置邮件服务。请确保在 仪表盘 > 设置 > 电子邮件 中填写您要使用的电子邮件配置。

我们建议使用 SMTP 邮件服务,而不是使用你的服务器来发送邮件

# 网站在线状态监控

设置一个网站在线监控,以确保你的网站在离线时能及时通知到你