Nginx+Django+uwsgi项目迁移要注意的坑

今天迁移一个Django项目,部署和原项目一样采用的是Nginx+Django+uwsgi的模式。由于是一台新的机器环境有点差异,部署过程中有些坑踩的有点多。具体如下:
1、整个项目是完全拷贝过来的要先删除原先项目配置文件夹下的所有.pyc文件,再启动uswgi。

1
2
3
4
5
6
7
$ ls
__init__.py nginx_settings.py nginx_wsgi.py settings.py urls.py uwsgi.xml views.pyc wsgi.pyc
__init__.pyc nginx_settings.pyc nginx_wsgi.pyc settings.pyc urls.pyc views.py wsgi.py
$ rm -f *.pyc
$ ls
__init__.py nginx_settings.py nginx_wsgi.py settings.py urls.py uwsgi.xml views.py wsgi.py
$

2、启动uwsgi的时候要在项目配置文件夹下启动,不然会报错”ImportError: No module named nginx_wsgi”

1
2
3
4
$ /usr/bin/uwsgi -x /opt/www/diewu/diewu/uwsgi.xml --uid 501
[uWSGI] parsing config file /opt/www/diewu/diewu/uwsgi.xml
$ pwd
/opt/www/diewu/diewu

3、mysql的sock文件和文件夹需要读取权限,不然可能因为权限不够造成MySQL-python模块连mysql失败”Can’t connect to local MySQL server through socket ‘/opt/mysqldata/mysql.sock’”

1
2
3
4
5
6
[root@xxxx ~]# chown 755 /opt/mysqldata/
[root@xxxx ~]# ls /opt/mysqldata/ -ld
drwxr-xr-x 6 mysql mysql 4096 May 6 14:03 /opt/mysqldata/
$ ll /opt/mysqldata/mysql.sock
srwxrwxrwx 1 mysql mysql 0 May 6 14:03 /opt/mysqldata/mysql.sock
$

4、编译安装uwsgi,启动时报错uwsgi:invalid option — x

1
2
3
4
$ /usr/bin/uwsgi -x /opt/www/diewu/diewu/uwsgi.xml --uid 501
uwsgi:invalid option -- x
getopt_long() error
$

安装libxml2*重新编译安装uwsgi即可

1
2
3
$ yum install libxml*
$ python setup.py build
$ python setup.py install

这些坑踩一次就好了,希望遇到这些问题的攻城狮不要再踩了。

----------------本文结束 感谢阅读----------------