---
description: 使用OneinStack 搭建环境，并使用简易化脚本快速部署本项目
---

# 通过OneinStack快速部署

{% hint style="info" %}
本教程需要面板程序<mark style="color:green;">**`版本>2.7.0`**</mark>方可使用！\
\
**请使用root账户进行操作!**
{% endhint %}

## 一丶搭建环境 <a href="#install-bt" id="install-bt"></a>

### 环境部署

{% tabs %}
{% tab title="Debian" %}
```sh
apt update && apt install wget curl git vim -y
```
{% endtab %}

{% tab title="Centos" %}
```bash
yum update -y && yum install wget curl git vim -y
```
{% endtab %}
{% endtabs %}

### 部署OneinStack & 网页环境

{% hint style="info" %}
如果害怕遇到网络中断,SSH断连等问题,可以自行谷歌nohup/screen的用法
{% endhint %}

前往 [OneinStack官网](https://oneinstack.com/auto/) 选择合适的软件,再复制安装命令到SSH上执行

* 环境安装要求，请参考 => [面板要求](https://proxypanel.gitbook.io/wiki/#requirements)
* Tips: 软件版本在面板支持的情况下，尽可能挑选<mark style="color:green;">**最新**</mark>的<mark style="color:green;">**稳定**</mark>版本用于生产环境；
* MySQL 数据库可以不安装在和面板同一机器上，可以选择云服务商的数据库进行托管或者在其他服务器安装进行分离使用；

<figure><img src="https://2245841974-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCJ37x3F9xZgjO4aIyo%2Fuploads%2FzgmU5ZGqGJYtFwbwsGgi%2Fimage.png?alt=media&#x26;token=032678dc-dc58-4885-9b6a-38066e65814b" alt=""><figcaption><p>可参考选项</p></figcaption></figure>

{% code overflow="wrap" %}
```sh
# 本案例的数据库密码：ProxyPanel2023

wget -c http://mirrors.oneinstack.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --php_option 12 --phpcache_option 1 --php_extensions fileinfo,redis --phpmyadmin  --db_option 2 --dbinstallmethod 1 --dbrootpwd ProxyPanel2023 --redis  --reboot 
```
{% endcode %}

{% hint style="warning" %}
**别忘了DB密码，这个真的很重要!**
{% endhint %}

<figure><img src="https://2245841974-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCJ37x3F9xZgjO4aIyo%2Fuploads%2FQmMeUVzT8V7e8VPxJ8f5%2Fimage.png?alt=media&#x26;token=be6d5df7-1209-419d-94ae-937d9a2d590a" alt=""><figcaption><p>搭建完成</p></figcaption></figure>

## 二丶网站搭建

{% hint style="warning" %}
开始前，请先做好IP=>域名的DNS解析，再开始创建网站!
{% endhint %}

SSH连接到VPS后输入下方命令，开始创建网站。

```sh
/root/oneinstack/vhost.sh
```

1. 三个选项分别是 `1. 只使用HTTP`, `2. 使用自己的证书`,以及 `3. 申请Let's Encrypt免费证书`
2. 输入网站域名
3. 输入网站目录,直接回车网站目录默认位于`/data/wwwroot/网站域名`
4. 是否需要添加更多域名
5. 是否需要HTTP重定向到HTTPS
6. 输入证书钥匙长度，默认2048
7. 输入邮箱申请证书

<figure><img src="https://2245841974-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCJ37x3F9xZgjO4aIyo%2Fuploads%2FKpsTSMYKLt5uxpv5hG4D%2FM%24%25JO%40_UU5CUZ~%7D~A%607F~FY.png?alt=media&#x26;token=766333c5-2e5e-4f73-8e3d-6b40e34874a6" alt=""><figcaption></figcaption></figure>

自动申请完证书后,还有几步

9. 是否需要盗链保护;
10. 是否需要添加伪静态规则; 选择 `laravel`
11. 添加哪种伪静态规则;
12. 是否允许记录访问日志;

<figure><img src="https://2245841974-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCJ37x3F9xZgjO4aIyo%2Fuploads%2FJzDNNOcsZcy407qQO5L3%2Fimage.png?alt=media&#x26;token=43c88368-d652-477f-9f4a-1d6e52783af7" alt=""><figcaption></figcaption></figure>

### PHP 删除禁用函数

{% tabs %}
{% tab title="便捷" %}
{% code overflow="wrap" %}
```bash
sed -i '/disable_functions/s/putenv,//g; /disable_functions/s/pcntl_alarm,//g; /disable_functions/s/pcntl_signal,//g; /disable_functions/s/symlink,//g; /disable_functions/s/proc_[^,]*,//g' /usr/local/php/etc/php.ini && service php-fpm restart
```
{% endcode %}
{% endtab %}

{% tab title="手动" %}
```bash
# 编辑php.ini文件
nano /usr/local/php/etc/php.ini
```

在\[disable\_functions] 中去除~~(解封)~~以下函数:

* putenv
* pcntl\__alarm_
* _pcntl\_signal_
* _symlink_
* _proc\_开头的函数_

```bash
# 编辑完成，后重启PHP
service php-fpm restart
```
{% endtab %}
{% endtabs %}

### 修改网站运行目录

{% tabs %}
{% tab title="便捷" %}
{% code overflow="wrap" %}
```bash
# 编辑 网站Nginx的配置文件
# 使用前请将{网站域名}替换为实际目录，不知道的可以 ls /usr/local/nginx/conf/vhost/ 看看目录下的文件都有啥

sudo sed -i 's/\(root .*\);/\1\/public;/g' /usr/local/nginx/conf/vhost/网站域名.conf && systemctl restart nginx
```
{% endcode %}
{% endtab %}

{% tab title="手动" %}
<pre class="language-bash"><code class="lang-bash"><strong># 使用前请将{网站域名}替换为实际目录，看看目录下的文件都有啥
</strong>ls /usr/local/nginx/conf/vhost/

# 使用前请将{网站域名}替换为实际目录，
# 编辑 网站Nginx的配置文件
nano /usr/local/nginx/conf/vhost/网站域名.conf
</code></pre>

在root开头那行末尾分号前添加`/public`

```bash
# 编辑完成，重启nginx
systemctl restart nginx
```
{% endtab %}
{% endtabs %}

<figure><img src="https://2245841974-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MCJ37x3F9xZgjO4aIyo%2Fuploads%2F4fc8HA5S8gUuXLsWuIHq%2F0SWMS%40T%244YD(U%40%5D%25%5D%40~VRS0.png?alt=media&#x26;token=49498aa2-7ea3-4209-a6b8-f0ad69d646e1" alt=""><figcaption><p>编辑网站Nignx配置文件</p></figcaption></figure>

## 三丶创建数据库

### 登录数据库

首先使用以下命令登录mysql，并输入数据库密码

<pre class="language-bash"><code class="lang-bash"><strong>mysql -u root -p
</strong></code></pre>

### 创建数据库

<pre class="language-sql" data-overflow="wrap"><code class="lang-sql"><strong># 创建了名为ProxyPanel的数据库
</strong><strong>create database ProxyPanel default character set utf8mb4 collate utf8mb4_unicode_ci;
</strong>
# 查看数据库列表
show databases;
</code></pre>

### 创建数据库用户（可选）

{% hint style="info" %}
如果想偷懒，可跳过创建数据库用户，直接使用root用户
{% endhint %}

创建数据库用户

{% tabs %}
{% tab title="方法1" %}
{% code overflow="wrap" %}
```sql
# 授予ProxyPanelUser用户在ProxyPanel数据库上的所有权限，密码为ProxyPanelPwd
grant  all  privileges  on  ProxyPanel.*  to  ProxyPanelUser@'localhost' identified by 'ProxyPanelPwd';
```
{% endcode %}
{% endtab %}

{% tab title="方法2" %}
{% code overflow="wrap" %}
```sql
# 授予ProxyPanelUser用户在所有数据库和表上的使用权限，密码为 ProxyPanelPwd
grant usage on *.* to ProxyPanelUser@'localhost' identified by 'ProxyPanelPwd';
```
{% endcode %}
{% endtab %}
{% endtabs %}

最小权限原则，所以我们推荐<mark style="color:green;">方法1</mark>。其中的数据库名，用户名，密码请酌情修改。

```sql
# 完成后，刷新权限
flush privileges;
```

{% hint style="danger" %}
如果创建用户失败请尝试先删除用户后再刷新权限

```sql
drop user 'ProxyPanelUser'@'localhost';
flush privileges
```
{% endhint %}

```sql
// 退出数据库
quit
```

## 四丶安装面板

<pre class="language-sh"><code class="lang-sh"><strong>cd /data/wwwroot/网站域名
</strong># 例：cd /data/wwwroot/proxypanel.ddo.jp 不清楚可以用 ls /data/wwwroot/ 获取目录信息

git clone https://github.com/ProxyPanel/ProxyPanel.git tmp &#x26;&#x26; cp -r tmp/. . &#x26;&#x26; rm -rf tmp/
</code></pre>

再运行以下代码安装面板

```shell
sh install.sh
```

## 五丶设置&优化

{% hint style="info" %}
每次修改 `.env` 后，请运行以下代码，重新预加载必要文件\
SSH：在网站根目录下，运行以下代码；Laravel 自带缓存常用内容来优化面板运行。

```sh
php artisan optimize
```
{% endhint %}

在面板文件中，编辑 `.env`

![](https://2245841974-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MCJ37x3F9xZgjO4aIyo%2F-MJk33Y17nmQQWs87-qO%2F-MJkWS787Yl8pGi_6X8a%2Fimage.png?alt=media\&token=0cff44d5-9749-46ac-958f-b5d6994da9ec)

### 设置邮件

```
MAIL_DRIVER=smtp #或使用 mailgun
# SMTP设置
MAIL_HOST=smtp.exmail.qq.com
MAIL_PORT=465 #SMTP端口
MAIL_USERNAME=admin@proxypanel.ml #使用的邮箱地址
MAIL_PASSWORD=password #SMTP授权码
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=admin@proxypanel.ml #用户看到的发件人邮箱地址
MAIL_FROM_NAME=ProxyPanel #发件人名称

# Mailgun设置
MAILGUN_DOMAIN=
MAILGUN_SECRET=
```

## PHP

```sh
# 编辑php.ini文件
nano /usr/local/php/etc/php.ini
```

将 memory\_limit 适当的提高, 有助于提高网站运行稳定性

```sh
# 编辑完成，重启nginx
service php-fpm restart
```

## 系统

#### 添加SWAP虚拟内存

> VPS服务器内存过小，会导致进程被杀掉；适当添加Swap虚拟内存了，可缓解这个现象。

```sh
# 查看实际内存
free -h
```

```sh
# 一键添加SWAP脚本
wget https://www.moerats.com/usr/shell/swap.sh && bash swap.sh
```

## 六丶更新&升级

#### Master版 <a href="#master-update" id="master-update"></a>

参考 [升级指南](https://proxypanel.gitbook.io/wiki/upgrade-guide)

#### Release版 <a href="#update-release" id="update-release"></a>

下载最新的压缩包，重新安装
