update start.sh

This commit is contained in:
mshe 2026-05-28 14:43:33 +08:00
parent dd67943b42
commit faf8cc5714
9 changed files with 301 additions and 6 deletions

0
.idea/.gitignore vendored Normal file
View File

View File

@ -0,0 +1,14 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredPackages">
<value>
<list size="1">
<item index="0" class="java.lang.String" itemvalue="flask" />
</list>
</value>
</option>
</inspection_tool>
</profile>
</component>

View File

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

21
.idea/learn-spider.iml Normal file
View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="Flask">
<option name="enabled" value="true" />
</component>
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.10" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TemplatesService">
<option name="TEMPLATE_CONFIGURATION" value="Jinja2" />
<option name="TEMPLATE_FOLDERS">
<list>
<option value="$MODULE_DIR$/templates" />
</list>
</option>
</component>
</module>

7
.idea/misc.xml Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.9 (learn-spider)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10" project-jdk-type="Python SDK" />
</project>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/learn-spider.iml" filepath="$PROJECT_DIR$/.idea/learn-spider.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

229
.idea/workspace.xml Normal file
View File

@ -0,0 +1,229 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="29e8f12f-1d00-4e65-8b7a-d266f481ff29" name="更改" comment="chore(install): 更新安装脚本以使用新的学习爬虫仓库&#10;&#10;- 将 vim-plug 下载链接替换为学习爬虫仓库的 install.sh&#10;- 添加 start.sh、update.sh 和 uninstall.sh 脚本的下载&#10;- 移除旧的 python 执行命令&#10;- 更新自动化安装流程到新的源地址">
<change beforePath="$PROJECT_DIR$/sh/auto_install.sh" beforeDir="false" afterPath="$PROJECT_DIR$/sh/auto_install.sh" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Flask Main" />
<option value="Python Script" />
</list>
</option>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 5
}</component>
<component name="ProjectId" id="3DjvhMu4Ipdz8hnE7N4fLfhY0AN" />
<component name="ProjectViewState">
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"Flask 服务器.learn-spider.executor": "Run",
"Python.china_net.executor": "Run",
"RunOnceActivity.ShowReadmeOnStart": "true",
"git-widget-placeholder": "main",
"last_opened_file_path": "/Users/mshe/developer/code/python-workspace/learn-spider/sh",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"settings.editor.selected.configurable": "settings.sync",
"vue.rearranger.settings.migration": "true"
}
}]]></component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/sh" />
<recent name="$PROJECT_DIR$" />
<recent name="$PROJECT_DIR$/spider" />
</key>
</component>
<component name="RunManager" selected="Python.china_net">
<configuration name="china_net" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
<module name="learn-spider" />
<option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/spider" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/spider/china_net.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
<configuration name="learn-spider" type="Python.FlaskServer">
<module name="learn-spider" />
<option name="target" value="$PROJECT_DIR$/app.py" />
<option name="targetType" value="PATH" />
<option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="launchJavascriptDebuger" value="false" />
<method v="2" />
</configuration>
<recent_temporary>
<list>
<item itemvalue="Python.china_net" />
</list>
</recent_temporary>
</component>
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-js-predefined-d6986cc7102b-5c90d61e3bab-JavaScript-PY-242.23339.19" />
<option value="bundled-python-sdk-0029f7779945-399fe30bd8c1-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-242.23339.19" />
</set>
</attachedChunks>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="默认任务">
<changelist id="29e8f12f-1d00-4e65-8b7a-d266f481ff29" name="更改" comment="" />
<created>1778808412351</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1778808412351</updated>
<workItem from="1778808425415" duration="1833000" />
<workItem from="1779096652209" duration="2278000" />
<workItem from="1779170746673" duration="525000" />
<workItem from="1779673152455" duration="4561000" />
<workItem from="1779779192025" duration="14140000" />
</task>
<task id="LOCAL-00001" summary="feat(vnc): 添加VNC服务器批量部署脚本&#10;&#10;- 创建run.sh脚本实现用户批量创建、VNC配置和公共目录设置&#10;- 添加预安装依赖包功能包括XFCE桌面环境和TigerVNC服务&#10;- 实现批量创建10个用户并设置VNC密码的自动化流程&#10;- 配置防火墙规则开放noVNC端口和SSL证书生成&#10;- 创建公共共享目录并为每个用户建立工作区软链接&#10;- 分离setup.sh中的依赖安装逻辑到独立的pre_install.sh脚本&#10;- 移除原有的Python环境初始化代码到新的预安装脚本中">
<option name="closed" value="true" />
<created>1779867453478</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1779867453478</updated>
</task>
<task id="LOCAL-00002" summary="debug(spider): 修改爬虫调试配置并更新安装脚本&#10;&#10;- 将浏览器启动模式从无头模式改为有头模式以便调试&#10;- 在预安装脚本中添加虚拟环境激活命令&#10;- 重新排列安装脚本中的依赖安装顺序">
<option name="closed" value="true" />
<created>1779867711633</created>
<option name="number" value="00002" />
<option name="presentableId" value="LOCAL-00002" />
<option name="project" value="LOCAL" />
<updated>1779867711633</updated>
</task>
<task id="LOCAL-00003" summary="10s">
<option name="closed" value="true" />
<created>1779867727180</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1779867727180</updated>
</task>
<task id="LOCAL-00004" summary="fix(build): 修复预安装脚本中的playwright命令路径&#10;&#10;- 修改pre_install.sh脚本中的playwright命令执行方式&#10;- 将全局playwright命令替换为虚拟环境中的完整路径&#10;- 确保在虚拟环境中正确安装playwright依赖">
<option name="closed" value="true" />
<created>1779867938943</created>
<option name="number" value="00004" />
<option name="presentableId" value="LOCAL-00004" />
<option name="project" value="LOCAL" />
<updated>1779867938943</updated>
</task>
<task id="LOCAL-00005" summary="fix(deps): 修复 Playwright 安装命令&#10;&#10;- 将 playwright install 命令限制为仅安装 chromium 浏览器&#10;- 将 playwright install-deps 命令限制为仅安装 chromium 依赖&#10;- 避免安装不必要的浏览器引擎以减少安装时间和磁盘占用">
<option name="closed" value="true" />
<created>1779868127707</created>
<option name="number" value="00005" />
<option name="presentableId" value="LOCAL-00005" />
<option name="project" value="LOCAL" />
<updated>1779868127707</updated>
</task>
<task id="LOCAL-00006" summary="feat(vnc): 添加VNC服务器安装脚本并重构项目结构&#10;&#10;- 新增install.sh脚本包含批量创建用户、设置VNC密码、配置noVNC服务等功能&#10;- 移除旧的run.sh和setup.sh脚本将功能整合到新的安装脚本中&#10;- 实现自动化VNC环境部署包括XFCE桌面、noVNC代理、SSL证书生成&#10;- 配置多用户VNC访问支持预设10个用户账户及对应端口映射&#10;- 创建公共工作目录并设置适当的文件权限和软链接&#10;- 添加防火墙配置和系统服务自动启动功能">
<option name="closed" value="true" />
<created>1779872034031</created>
<option name="number" value="00006" />
<option name="presentableId" value="LOCAL-00006" />
<option name="project" value="LOCAL" />
<updated>1779872034031</updated>
</task>
<task id="LOCAL-00007" summary="chore(build): 更新预安装脚本配置&#10;&#10;- 添加了 bash shebang 行&#10;- 修改 pip 安装命令以使用腾讯云镜像源&#10;- 保持虚拟环境创建和依赖安装流程不变&#10;- 维持 playwright 浏览器安装步骤">
<option name="closed" value="true" />
<created>1779941277419</created>
<option name="number" value="00007" />
<option name="presentableId" value="LOCAL-00007" />
<option name="project" value="LOCAL" />
<updated>1779941277419</updated>
</task>
<task id="LOCAL-00008" summary="feat(vnc): 添加批量VNC环境部署脚本&#10;&#10;- 新增install.sh脚本实现完整的VNC环境自动化部署&#10;- 添加批量创建用户功能支持10个用户同时部署&#10;- 集成noVNC和websockify服务配置&#10;- 实现SSL证书自动生成和token配置文件创建&#10;- 添加公共工作目录和用户软链接设置&#10;- 集成爬虫项目自动下载和环境预安装&#10;- 新增start.sh用于启动指定用户的VNC服务&#10;- 添加uninstall.sh用于清理用户和数据&#10;- 实现update.sh用于爬虫项目更新&#10;- 优化VNC启动配置和防火墙设置">
<option name="closed" value="true" />
<created>1779949378302</created>
<option name="number" value="00008" />
<option name="presentableId" value="LOCAL-00008" />
<option name="project" value="LOCAL" />
<updated>1779949378302</updated>
</task>
<task id="LOCAL-00009" summary="chore(install): 更新安装脚本以使用新的学习爬虫仓库&#10;&#10;- 将 vim-plug 下载链接替换为学习爬虫仓库的 install.sh&#10;- 添加 start.sh、update.sh 和 uninstall.sh 脚本的下载&#10;- 移除旧的 python 执行命令&#10;- 更新自动化安装流程到新的源地址">
<option name="closed" value="true" />
<created>1779949458373</created>
<option name="number" value="00009" />
<option name="presentableId" value="LOCAL-00009" />
<option name="project" value="LOCAL" />
<updated>1779949458373</updated>
</task>
<option name="localTasksCounter" value="10" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="feat(vnc): 添加VNC服务器批量部署脚本&#10;&#10;- 创建run.sh脚本实现用户批量创建、VNC配置和公共目录设置&#10;- 添加预安装依赖包功能包括XFCE桌面环境和TigerVNC服务&#10;- 实现批量创建10个用户并设置VNC密码的自动化流程&#10;- 配置防火墙规则开放noVNC端口和SSL证书生成&#10;- 创建公共共享目录并为每个用户建立工作区软链接&#10;- 分离setup.sh中的依赖安装逻辑到独立的pre_install.sh脚本&#10;- 移除原有的Python环境初始化代码到新的预安装脚本中" />
<MESSAGE value="debug(spider): 修改爬虫调试配置并更新安装脚本&#10;&#10;- 将浏览器启动模式从无头模式改为有头模式以便调试&#10;- 在预安装脚本中添加虚拟环境激活命令&#10;- 重新排列安装脚本中的依赖安装顺序" />
<MESSAGE value="10s" />
<MESSAGE value="fix(build): 修复预安装脚本中的playwright命令路径&#10;&#10;- 修改pre_install.sh脚本中的playwright命令执行方式&#10;- 将全局playwright命令替换为虚拟环境中的完整路径&#10;- 确保在虚拟环境中正确安装playwright依赖" />
<MESSAGE value="fix(deps): 修复 Playwright 安装命令&#10;&#10;- 将 playwright install 命令限制为仅安装 chromium 浏览器&#10;- 将 playwright install-deps 命令限制为仅安装 chromium 依赖&#10;- 避免安装不必要的浏览器引擎以减少安装时间和磁盘占用" />
<MESSAGE value="feat(vnc): 添加VNC服务器安装脚本并重构项目结构&#10;&#10;- 新增install.sh脚本包含批量创建用户、设置VNC密码、配置noVNC服务等功能&#10;- 移除旧的run.sh和setup.sh脚本将功能整合到新的安装脚本中&#10;- 实现自动化VNC环境部署包括XFCE桌面、noVNC代理、SSL证书生成&#10;- 配置多用户VNC访问支持预设10个用户账户及对应端口映射&#10;- 创建公共工作目录并设置适当的文件权限和软链接&#10;- 添加防火墙配置和系统服务自动启动功能" />
<MESSAGE value="chore(build): 更新预安装脚本配置&#10;&#10;- 添加了 bash shebang 行&#10;- 修改 pip 安装命令以使用腾讯云镜像源&#10;- 保持虚拟环境创建和依赖安装流程不变&#10;- 维持 playwright 浏览器安装步骤" />
<MESSAGE value="feat(vnc): 添加批量VNC环境部署脚本&#10;&#10;- 新增install.sh脚本实现完整的VNC环境自动化部署&#10;- 添加批量创建用户功能支持10个用户同时部署&#10;- 集成noVNC和websockify服务配置&#10;- 实现SSL证书自动生成和token配置文件创建&#10;- 添加公共工作目录和用户软链接设置&#10;- 集成爬虫项目自动下载和环境预安装&#10;- 新增start.sh用于启动指定用户的VNC服务&#10;- 添加uninstall.sh用于清理用户和数据&#10;- 实现update.sh用于爬虫项目更新&#10;- 优化VNC启动配置和防火墙设置" />
<MESSAGE value="chore(install): 更新安装脚本以使用新的学习爬虫仓库&#10;&#10;- 将 vim-plug 下载链接替换为学习爬虫仓库的 install.sh&#10;- 添加 start.sh、update.sh 和 uninstall.sh 脚本的下载&#10;- 移除旧的 python 执行命令&#10;- 更新自动化安装流程到新的源地址" />
<option name="LAST_COMMIT_MESSAGE" value="chore(install): 更新安装脚本以使用新的学习爬虫仓库&#10;&#10;- 将 vim-plug 下载链接替换为学习爬虫仓库的 install.sh&#10;- 添加 start.sh、update.sh 和 uninstall.sh 脚本的下载&#10;- 移除旧的 python 执行命令&#10;- 更新自动化安装流程到新的源地址" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<default-breakpoints>
<breakpoint type="python-exception">
<properties notifyOnTerminate="true" exception="BaseException">
<option name="notifyOnTerminate" value="true" />
</properties>
</breakpoint>
</default-breakpoints>
</breakpoint-manager>
</component>
<component name="com.intellij.coverage.CoverageDataManagerImpl">
<SUITE FILE_PATH="coverage/learn_spider$china_net.coverage" NAME="china_net 覆盖结果" MODIFIED="1779780853999" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/spider" />
<SUITE FILE_PATH="coverage/learn_spider$learn_spider.coverage" NAME="learn-spider 覆盖结果" MODIFIED="1778808456145" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />
</component>
</project>

View File

@ -5,20 +5,24 @@ username="user$INDEX"
export DISPLAY=:$INDEX
echo "当前显示桌面:$DISPLAY"
echo "正在启动Xvfb虚拟显示"
sudo su - "$username" -c "Xvfb :$INDEX -screen 0 1280x800x24 &"
sleep 2
echo "正在启动VNC服务"
sudo su - "$username" -c "vncserver :$INDEX -geometry 1280x800 -depth 24 -localhost no"
echo "授权桌面访问"
sudo su - "$username" -c "export DISPLAY=:$INDEX && xhost +" 2>/dev/null
sudo su - "$username" -c "x11vnc -display :$INDEX -forever -nopw -rfbport $((5900 + INDEX)) &"
echo "等待 VNC 启动"
sleep 3
start_spider(){
cd $PUBLIC_DIR/learn-spider
sudo -E ./run.sh # -E 保留当前环境变量
sudo -E ./run.sh
}
echo "启动爬虫"
start_spider $INDEX
# sleep 60
echo "爬虫执行完毕,关闭VNC"
sudo su - "$username" -c "vncserver -kill :$INDEX" 2>/dev/null
sudo pkill -f "x11vnc.*$INDEX"
sudo pkill -f "Xvfb :$INDEX"