我在 lampp ubuntu 机器上有一个 web 应用程序,我需要打开一个终端来执行一些操作,有人能帮我吗
提前致谢
答案1
不,这是错误的方法。我大致会这样做:
- 将网站上的数据存储在服务器上的数据库中,或作为文本文件存储。
- 使用服务器上的脚本(服务或目录观察器
/etc/crontab
)在数据库中填充文件或使用此文本文件中的数据创建文本文件 - 对数据进行处理后,让网页获取这些新数据,以获得所需的结果。
数据库方法更好,但工作量更大。设计良好的数据库会迫使您验证数据,并使数据操作变得容易。您可以使用 MySQL 中的“过程”来操作数据。转储文本文件比较容易,但验证和操作文本文件可能比较棘手。
答案2
Rinzwind 方法的替代方法是:
编写一个包装特权命令的脚本,例如,
#!/bin/sh set -eu input="$1" output="$2" exec /path/to/data-analysis-program [OPTIONS...] "$input" "$output"
将其另存为,
/other/path/to-data-analysis-wrapper.sh
并使其可执行:chmod +x /other/path/to-data-analysis-wrapper.sh
测试包装器脚本是否按照您的要求执行:
sudo /other/path/to-data-analysis-wrapper.sh <INPUT-FILE> <OUTPUT-FILE>
将文件的所有权转移给某个用户,使得拥有 Web 服务器进程的用户无法写入该文件,例如
root
:sudo chown root /other/path/to-data-analysis-wrapper.sh
配置
sudoers
以允许拥有 Web 服务器进程的用户以提升的权限执行脚本。请参阅如何在没有密码的情况下运行特定的 sudo 命令?有关如何一般性地执行此操作并使用以下规则(或根据您的喜好进行调整):www-data ALL = (root) NOPASSWD: /other/path/to-data-analysis-wrapper.sh *
您现在可以
sudo /other/path/to-data-analysis-wrapper.sh <INPUT-FILE> <OUTPUT-FILE>
从代表 Web 服务器运行的 CGI 脚本执行。
更好的方法是以不需要超级用户权限的方式设置数据分析流程。如果这仅与数字运算有关,而不是与特权系统或硬件访问有关,那么应该有一个相对简单的方法。如果您想走这条路,请提出一个新问题并更深入地描述情况。