Appearance
使用 宝塔 安装服务(推荐)
linux | windows | mac |
---|---|---|
![]() | ![]() | ![]() |
小贴士
推荐使用宝塔面板。你也可以使用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安装成功后会出现如下提示
![](https://box.kancloud.cn/c7c3c4faf56d48b0cf78d07c4a9e3ad9_601x178.png)
小贴士
请妥善保存面板地址、账号和密码
注意事项
云服务器需要在控制台开放宝塔面板的TCP访问端口。如果使用FTP需要开放TCP 21、39000/40000端口,否则无法访问面板或无法使用FTP服务
安装完成后登录宝塔面板(windows直接使用宝塔面板工具箱进入)
![](https://box.kancloud.cn/b9eca0155b6aebf0791589126652756a_536x435.png)
安装服务环境
小贴士
无论是linux还是windows,都推荐NMP环境(nginx+mysql+php)
注意
- mysql请选择mysql 5.7或以上版本(如果使用RDS等云数据库,无需安装mysql)
- php请选择php 8.1 或以上版本
- 不推荐安装phpMyAdmin(漏洞太多)
Linux服务环境安装
安装完成在浏览上打开面板的地址,登入面板,面板会自动推荐你安装环境套件,这里有两种选择,第一种是LNMP套件,第二种是LAMP套件,(如图):
![](https://box.kancloud.cn/3020066b5492ac8de154a534c4f36878_660x430.png)
安装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
(或是更高版本),点击设置
,在弹出的设置界面装点击禁用函数
。
删除禁用函数putenv
,proc_open
,proc_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
添加站点
宝塔面板选择网站->添加站点
,如图:
![](/bt_site_create.jpg)
小贴士
- 如果需要使用FTP上传代码,可以选择创建FTP
- 如果使用本地数据库且未创建数据库,可以选择创建Mysql数据库()
- PHP版本请选择PHP 8.1或以上
修改运行目录
创建好站点后在站点列表选择设置
,将运行目录修改为/web
,取消防跨站攻击(open_basedir)
,如图:
![](/bt_site_run_menu.jpg)
开启端口
默认的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分钟
,然后输入脚本代码,如下图:。
![](/bt_cron.jpg)
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