当尝试在端口80上运行python bottle时,我得到以下内容:
socket.error: [Errno 10013] An attempt was made to access a socket in a way forb
idden by its access permissions
我的目标是在端口80上运行Web服务器,这样网址就会很好而且整洁而不需要指定端口 例如:
http://localhost/doSomething
而不是
http://localhost:8080/doSomething
有什么想法吗?
由于
答案 0 :(得分:2)
正如错误所说的那样。您需要具有在第80个端口上运行某些内容的权限,普通用户无法执行此操作。您可以以root用户身份执行瓶子webapp(或者可能是www-data),只要端口空闲,它就应该没问题。
但考虑到安全性(和稳定性),您应该考虑不同的部署方式,例如nginx和gunicorn。
答案 1 :(得分:1)
检查系统的防火墙设置。
使用以下命令检查另一个应用程序是否已使用端口80:
netstat -an | grep :80
netstat -an | findstr :80
根据Windows Sockets Error Codes:
WSAEACCES 10013
许可被拒绝。
尝试以其禁止的方式访问套接字 访问权限。一个例子是使用sendto的广播地址 没有使用setsockopt(SO_BROADCAST)设置广播权限。 WSAEACCES错误的另一个可能原因是绑定时 调用函数(在Windows NT 4.0上使用SP4及更高版本),另一个 应用程序,服务或内核模式驱动程序绑定相同 具有独占访问权的地址这种独家访问是一项新功能 带有SP4及更高版本的Windows NT 4.0,并使用 SO_EXCLUSIVEADDRUSE选项。
答案 2 :(得分:0)
有时不需要安装nginx,带有gunicorn的python是主管的一种可行选择,但您需要做出很多技巧来工作
我假设您知道安装主管,然后再重新安装要求
pip3 install virtualenv
mkdir /home/user/.envpython
virtualenv /home/user/.envpython/bin/activate
source /home/user/.envpython/bin/activate
cd /home/user/python-path/
pip3 install -r requirements
创建类似这样的主管文件
nano /etc/supervisord.d/python-file.conf
并使用此示例进行编辑,编辑所需的程序,记住python3在其他端口> 1024上运行
;example with path python supervisor in background
[program:python]
environment=HOME="/home/user",USER="user"
user=user
directory = /home/user/python-path
command = python3 /home/user/python-path/main.py
priority = 900
autostart = true
autorestart = true
stopsignal = TERM
;redirect_stderr = true
stdout_logfile = /home/user/.main-python-stdout.log
stderr_logfile = /home/user/.main-python-stderr.log
;example with path python gunicorn supervisor and port 80
[program:gunicorn]
;environment=HOME="/home/user",USER="user"
;user=user
directory = /home/user/python-path
command = bash /home/user/.scripts/supervisor-initiate.sh
priority = 900
autostart = true
autorestart = true
stopsignal = TERM
;redirect_stderr = true
stdout_logfile = /home/user/.main-python-stdout.log
stderr_logfile = /home/user/.main-python-stderr.log
并创建文件
nano /home/user/.scripts/supervisor-initiate.sh
具有以下内容
source /home/user/.envpython/bin/activate
cd /home/user/python-path
gunicorn -w 1 -t 120 -b 0.0.0.0:80 main:app
我假设您在python中的文件称为main,并使用flask或django初始化了名为“ app”的应用程序
仅重新启动受监管进程
systemctl restart supervisord
您在80端口上安装了带有gunicorn的应用程序,因为我在很长一段时间内都找到了这种解决方案,所以我发了帖子
等待任何人都可以使用