Skip to content

使用 宝塔 安装服务(推荐)

linuxwindowsmac

小贴士

推荐使用宝塔面板。你也可以使用lnmp、小皮面板、mamp、或自行搭建服务器。

安装宝塔面板

centos/centos兼容系统(如Anolis)安装脚本

bash
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

Ubuntu/Deepin安装脚本

bash
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec

Debian安装脚本

bash
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh ed8484bec

万能安装脚本

bash
if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

国产龙芯架构安装脚本

bash
wget -O install_panel.sh http://download.bt.cn/install/0/loongarch64/loongarch64_install_panel.sh && bash install_panel.sh ed8484bec

windows安装

注意

必须为没装过其它环境如Apache/Nginx/php/MySQL的新系统,推荐使用centos 7.X或兼容的系统安装宝塔面板

推荐使用Chrome、火狐、edge浏览器,国产浏览器请使用极速模式访问面板登录地址

如果不确定使用哪个Linux系统版本的,可以使用万能安装脚本

国产龙芯架构CPU安装命令,支持龙芯架构的loongnix 8.x、统信UOS 20、kylin v10系统

Linux安装成功后会出现如下提示

小贴士

请妥善保存面板地址、账号和密码

注意事项

云服务器需要在控制台开放宝塔面板的TCP访问端口。如果使用FTP需要开放TCP 21、39000/40000端口,否则无法访问面板或无法使用FTP服务

安装完成后登录宝塔面板(windows直接使用宝塔面板工具箱进入)

安装服务环境

小贴士

无论是linux还是windows,都推荐NMP环境(nginx+mysql+php)

注意

  • mysql请选择mysql 5.7或以上版本(如果使用RDS等云数据库,无需安装mysql)
  • php请选择php 8.1 或以上版本
  • 不推荐安装phpMyAdmin(漏洞太多)

Linux服务环境安装

安装完成在浏览上打开面板的地址,登入面板,面板会自动推荐你安装环境套件,这里有两种选择,第一种是LNMP套件,第二种是LAMP套件,(如图):

安装PHP基础扩展

在宝塔面板的软件商店-已安装找到PHP-8.1(或是更高版本),点击设置,在弹出的设置界面装点击安装扩展。需要安装'sodium', 'fileinfo', 'curl', 'gd', 'json', 'openssl', 'pdo', 'pdo_mysql', 'simplexml', 'zip', 'bcmath', 'redis'扩展,正常来说,宝塔面板基本上将基础扩展都默认安装了,所以扩展界面上是无法找到对应扩展的。

linux服务器一般只需要在宝塔面板上安装扩展即可(安装完后需要重启php服务),如图:

windows服务器几乎所有的扩展都已经安装好,如果存在找不到sodium或reids扩展的情况,需要在PHP配置文件最下面添加扩展配置(安装完后需要重启php服务):

bash
[sodium]
extension=php_sodium.dll

# 正常来说,redis是存在的,但是被注释了,只要删除extension=php_redis.dll前面的;号即可
[redis]
extension=php_redis.dll

删除PHP禁用函数

在宝塔面板的软件商店-已安装找到PHP-8.1(或是更高版本),点击设置,在弹出的设置界面装点击禁用函数

删除禁用函数putenvproc_openproc_get_status

代码部署

windows系统可随意部署代码,一般不会有权限问题

linux系统部署:

将你的代码部署到服务器,一般都在/home/wwwroot路径下。

宝塔面板在安装时默认创建了www用户作为网站访问用户。如果采用ssh或者git来部署代码,务必将操作用户切换为www。否则会造成文件无权限访问的问题(包含FTP无法上传覆盖)。

宝塔面板限制了www用户的权限,采用su www切换到www用户时比较麻烦,为了方便直接使用su www命令切换到www用户,可以执行以下命令():

bash
vi /etc/passwd

www:x:1000:1000::/home/www:/sbin/nologin修改为www:x:1000:1000::/home/www:/bin/bash,然后保存。

再执行以下命令来设置www用户的密码

bash
passwd www 你的www用户密码

如果已经采用了root用户来部署了代码,可以使用宝塔面板的文件夹管理来更改权限,或者使用如下代码来更换owner和权限():

bash
cd /home/wwwroot
chown -R www:www 你的站点文件夹
chmod -R 755 你的站点文件夹

composer包安装

执行如下命令进行composer包的安装:

bash
# 进入项目目录
cd /home/wwwroot/你的站点文件夹
# 切换用户
su www
# composer安装
php composer.phar install
# composer更新
php composer.phar update

windows安装composer包注意事项

  • 如果没有将php命令加入到windows环境中,需要执行完整的php路径,如:D:\BtSoft\php\81\php.exe composer.phar install

添加站点

宝塔面板选择网站->添加站点,如图:

小贴士

  • 如果需要使用FTP上传代码,可以选择创建FTP
  • 如果使用本地数据库且未创建数据库,可以选择创建Mysql数据库(
  • PHP版本请选择PHP 8.1或以上

修改运行目录

创建好站点后在站点列表选择设置,将运行目录修改为/web,取消防跨站攻击(open_basedir),如图:

开启端口

默认的websocket访问端口是8282,你也可以自定义websocket访问端口。切记需要开启端口的访问权限。

设置伪静态

nginx需要在伪静态中设置如下代码:

bash

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}
location /frontendApi/ {
    try_files $uri $uri/ /frontendApi/index.php$is_args$args;
}
location /backendApi/ {
    try_files $uri $uri/ /backendApi/index.php$is_args$args;
}
location /dealerApi/ {
    try_files $uri $uri/ /dealerApi/index.php$is_args$args;
}
location /h5/ {
  try_files $uri $uri/ /h5/index.html last;
}
location /dealer/ {
  try_files $uri $uri/ /dealer/index.html last;
}
location ~/(wss|socket.io)/ {
 proxy_pass http://127.0.0.1:8282; 
 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
 proxy_http_version 1.1;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header Host $host;
 add_header Access-Control-Allow-Origin *;
 add_header Access-Control-Allow-Headers *;
 add_header Access-Control-Allow-Methods *;
 add_header Access-Control-Max-Age 86400;
}
# centerApi仅支持SAAS版本,其它版本无需设置
location /centerApi/ {
    try_files $uri $uri/ /centerApi/index.php$is_args$args;
}

如果安装的apache服务,系统默认自带了.htaccess,可以不用再配置。

如果安装的是IIS服务,rule配置如下:

bash
<rule name="backendApi" stopProcessing="true">
    <match url="^backendApi/(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
    </conditions>
    <action type="Rewrite" url="backendApi/index.php/{R:1}" />
</rule>
<rule name="frontendApi" stopProcessing="true">
    <match url="^frontendApi/(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
    </conditions>
    <action type="Rewrite" url="frontendApi/index.php/{R:1}" />
</rule>
<rule name="frontend" stopProcessing="true">
    <match url="^(.*)$" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
    </conditions>
    <action type="Rewrite" url="index.php/{R:1}" />
</rule>
<rule name="h5" stopProcessing="true">
    <match url="^h5/(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
    </conditions>
    <action type="Rewrite" url="h5/index.html/{R:1}" />
</rule>
# centerApi仅支持SAAS版本,其它版本无需设置
<rule name="centerApi" stopProcessing="true">
    <match url="^centerApi/(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
    </conditions>
    <action type="Rewrite" url="centerApi/index.php/{R:1}" />
</rule>

设置SSL

小贴士

如果需要部署小程序,必须设置SSL,否则可忽略。

宝塔面板可以使用Let's Encrypt来设置免费的SSL。当启用Let's Encrypt后,宝塔面板最生成自动续期的定时任务,注意不要启用强制HTTPS,否则自动续期将可能无法工作。

开启websocket服务

小贴士

如果是分布式部署,请将 /common/wss.php 中的 wss.register_group 参数加上所有分布式服务器的内网IP,每台机器都要执行下述代码

bash
php yii server/websocket start -d

添加定时任务服务

在宝塔面板的计划任务中添加定时任务,任务类型设置为shell脚本,执行周期设置为1分钟,然后输入脚本代码,如下图:。

Linux脚本代码(自行替换路径):

bash
su -c " php /home/wwwroot/你的站点文件夹/yii schedule/run --scheduleFile=/home/wwwroot/你的站点文件夹/console/config/schedule.php " -s /bin/sh www

Windows脚本代码(自行替换路径):

D:\BtSoft\php\81\php.exe D:\你的站点文件夹\yii schedule/run --scheduleFile=D:\你的站点文件夹\console\config\schedule.php

安全Shell操作

注意

如果你的控制台代码中有shell或者服务器操作,则需要取消某些危险的禁用函数,上述的代码则变得不再安全,这时需要更加安全的定时任务执行方式,我们推荐从开始部署就采用更加安全的方式。

Linux操作方式如下:

bash
# 使用root权限进行操作

# 进入php配置文件夹
cd /www/server/php/81/etc/
# 复制php.ini
cp php.ini safe_php.ini
# 编辑safe_php.ini
vi safe_php.ini
# 在vi界面中删除所有的禁用函数

# 需要修改的部分看起来如下
; This directive allows you to disable certain functions.
; It receives a comma-delimited list of function names.
; http://php.net/disable-functions
disable_functions = 

# 最后保存

Windows操作方式如下:

bash
# 进入php配置文件夹,一般是D:\BtSoft\php\81

# 复制文件夹下的php.ini,粘贴为safe_php.ini

# 编辑safe_php.ini

# 删除所有的禁用函数

# 需要修改的部分看起来如下
; This directive allows you to disable certain functions.
; It receives a comma-delimited list of function names.
; http://php.net/disable-functions
disable_functions = 

# 最后保存

然后使用如下代码添加到计划任务。

Linux安全定时任务代码(自行替换路径):

bash
su -c " php -c /www/server/php/81/etc/safe_php.ini /home/wwwroot/你的站点文件夹/yii schedule/run --scheduleFile=/home/wwwroot/你的站点文件夹/console/config/schedule.php "  -s /bin/sh www

Windows安全定时任务代码(自行替换路径):

bash
D:\BtSoft\php\81\php.exe -c D:\BtSoft\php\81\safe_php.ini D:\你的站点文件夹\yii schedule/run --scheduleFile=D:\你的站点文件夹\console\config\schedule.php

系统安装

传送门 ->

广州大舟信息科技 版权所有