天气越来越热了,烧烤摊越来越难经营,追的美剧也季终了。没事干咋办?搞软件开发吧,要成为烧烤王的男人,只有借助APP来帮忙了。
要用手机APP来卖烧烤,需要一个服务器后端来提供数据支持。于是无厘头的选择了Python来开发后端。烧烤一天只卖出两三串,没钱买台服务器啊。上网一搜,发现近期各互联网企业都在搞云服务,随便选了一个腾讯云的。
操作系统CentOS最高版本为7.2(没有7.3),凑合用吧。首先安装好必要的依赖,升级到Python 3.6.1,在pip各种需要的包后开始本文的正题:
1. 安装uWSGI
pip install uwsgi
安装后的文件路径应该在:/usr/local/python3/bin/uwsgi
为了方便运行,建立快捷方式:
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
2. 配置uWSGI
建立一个存放项目文件的文件夹,如:
cd /
mkdir webapis
将要运行的文件,如:myapi.py放入webapis文件夹
此时可以通过命令来启动uWSGI了:
uwsgi --socket 127.0.0.1:8001 --chdir /webapis --wsgi-file myapi.py --callable app --processes 1 --threads 2 --stats 127.0.0.1:9191
参数这么一长串,比我每天卖的串串还多,每次运行真麻烦。阅读官方文档,发现还可以通过建立的参数文件来启动uWSGI:
cd /
touch uwsgi.ini
vim uwsgi
进入编辑器,按i进行编辑,输入:
[uwsgi]
socket=127.0.0.1:8001
chdir=/webapis
wsgi-file=myapi.py
callable=app
processes=1
threads=2
stats=127.0.0.1:9191
按ESC之后输入:wq
保存退出
3. 启动uWSGI
uwsgi /uwsgi.ini
4. 安装Nginx
yum install -y nginx
5. 配置Nginx
修改Nginx配置文件,连接uWSGI
vim /etc/nginx/nginx.conf
找到如下位置,修改箭头的部分
……
server {
listen 80 default_server;
listen [::]:80 default_server;
> server_name 123.123.123.123; #填入服务器外网IP
root /usr/share/nginx/html;
#Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
> include uwsgi_params;
> uwsgi_pass 127.0.0.1:8001; #填入前面uWSGI参数文件中设置的内网地址和端口
> uwsgi_param UWSGI_CHDIR /webapis; #项目文件夹
> uwsgi_param UWSGI_SCRIPT myapi:app; #运行文件名和app实例名
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
……
:wq
保存退出
6. 运行Nginx:
启动:
nginx
或重启:
nginx -s reload
在浏览器中输入你的服务器IP+API路径,应该能看到运行结果了。
服务器配置成功,下一步开始设计我的iOS应用和后端API了。
7. 修改程序后重启uWSGI
修改程序并上传到项目文件夹内,发现服务不能立即生效,需要重启uWSGI服务。
列出运行的uWSGI进程
ps -ef | grep uwsgi
root 6270 6175 0 23:34 pts/0 00:00:00 uwsgi /uwsgi.ini
root 6275 6270 0 23:34 pts/0 00:00:00 uwsgi /uwsgi.ini
root 6842 6689 0 23:42 pts/1 00:00:00 grep --color=auto uwsgi
找到运行命令为:uwsgi /uwsgi.ini的两条,发现有共同的ID:6270,于是:
kill -9 6270
ps -ef | grep uwsgi
只剩下:
root 6975 6689 0 23:44 pts/1 00:00:00 grep --color=auto uwsgi
然后运行:
uwsgi /uwsgi.ini
在浏览器中刷新页面,修改生效。