这是包含静态 html 文件的目录
public
|-- index.html
|-- media
| `-- blurred_image-8.jpg
|-- post
| `-- 13considerations
| `-- index.html
Run Code Online (Sandbox Code Playgroud)
我正在尝试配置 nginx 以转换所有.html
以删除后缀结尾的 url 。
像这样:-
server {
listen 80;
server_name mysite.com;
location / {
root /var/www/mysite/public;
try_files $uri $uri/ $uri/index.html;
}
location /media/ {
alias /var/www/mysite/public/media/;
error_page 404 = /404;
expires 30d;
}
location /static/ {
alias /var/www/mysite/public/static/;
error_page 404 = /404;
expires 30d;
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于主页“ http://mysite.com/ ”,但如果我尝试访问“ http://mysite.com/post/13thinkations/ ”,则会收到 500 内部服务器错误。
是什么赋予了?
所以我正在试验 uWSGI 并且非常喜欢它。
我有一个关于使用它的 .ini 文件的问题。
是否可以动态计算其 .ini 配置参数的值?
例如,对于我的“uwsgi.ini”文件中的“chdir”值,我有
[uwsgi]
socket=127.0.0.1:3034
chdir=/Users/calvin/work/myproject
virtualenv=/Users/calvin/.virtualenvs/myproject
module=django.core.handlers.wsgi:WSGIHandler()
env= DJANGO_SETTINGS_MODULE=myproject.settings
master=True
pidfile=/tmp/myproject-master.pid
vacuum=True
max-requests=5000
daemonize=/var/log/uwsgi/myproject.log
Run Code Online (Sandbox Code Playgroud)
为我的“本地机器”、我的“开发/登台”服务器和我的“生产服务器”编写 3 个单独的 .ini 文件非常麻烦。更何况一个同事的本地机器的chdir
价值会完全不同。
我尝试使用import os
和动态os.join.path
计算chdir
值,但它不起作用,这是意料之中的,因为 uwsgi 没有 python 解释器?
假设我有一个这样的 shell 脚本:-
#!/bin/sh
# cherrypy_server.sh
PROCESSES=10
THREADS=1 # threads per process
BASE_PORT=3035 # the first port used
# you need to make the PIDFILE dir and insure it has the right permissions
PIDFILE="/var/run/cherrypy/myproject.pid"
WORKDIR=`dirname "$0"`
cd "$WORKDIR"
cp_start_proc()
{
N=$1
P=$(( $BASE_PORT + $N - 1 ))
./manage.py runcpserver daemonize=1 port=$P pidfile="$PIDFILE-$N" threads=$THREADS request_queue_size=0 verbose=0
}
cp_start()
{
for N in `seq 1 $PROCESSES`; do
cp_start_proc $N
done
}
cp_stop_proc()
{
N=$1
#[ -f "$PIDFILE-$N" ] && kill `cat …
Run Code Online (Sandbox Code Playgroud) 因此,我编写了一个 golang 应用程序,systemd
每当我的服务器重新启动时,我都希望对其进行初始化。
这是服务文件:-
[Unit]
Description=golang wiki initialization
[Service]
Type=forking
PIDFile=/tmp/gowiki.pid-3030
User=root
Group=root
WorkingDirectory=/var/www
ExecStart=/bin/bash -c 'daemonize -o stdout.log -e stderr.log /var/www/wiki'
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
每当我重新启动服务器时,它似乎都能很好地工作,但是当我gowiki
在终端中手动启动或重新启动时,我仍然遇到了一些令人恼火的问题:-
systemctl start gowiki
Run Code Online (Sandbox Code Playgroud)
或者
systemctl restart gowiki
Run Code Online (Sandbox Code Playgroud)
这确实让我的 gowiki 进程运行;然而,在我执行我的systemctl start gowiki
命令后,我被冻结在我的终端中,并且在我手动强制按下 Ctrl-C 之前,该命令似乎不会退出。
我做错了什么导致这个问题?