pycharm支持一键将代码推送到生产或测试服务器,这里演示一下
一、服务器准备
centos7
yum update -y
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel python3-devel
安装python3
cd /usr/local
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
tar -zxvf Python-3.6.6.tgz
cd Python-3.6.6
./configure --prefix=/usr/local/python3
make
make install
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
升级pip
pip3 install --upgrade pip
二、推送代码
一种方式是直接压缩解压到服务器
第二种就是pycharm推送,这里演示第二种
pycharm需要专业版
配置完成后点击 Upload to 即可自动上传,包括后续代码修改也可以一键同步修改
注意:如果Upload to等按钮为灰色,可能远端服务器无法连接,或者点一下红色标记的按钮即可,具体为啥我也不知。。。
安装程序所需模块
cd /home/dell/cmdb/
pip3 install -r requirements.txt
安装完成后可以使用 pip3 list 查看到已经安装的模块,如果安装期间出现问题,如某个模块安装失败,可以在文件中注释掉,单独安装解决
安装完成后启动服务
python3 manage.py runserver 0.0.0.0:8000 &
0.0.0.0:8000 表示所有ip均可以访问此服务
说是还得配置uwsgi,我觉得没啥必要,,,但还是安装了,安装后也没用到
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
vim django.xml
<uwsgi>
<socket>127.0.0.1:8000</socket> <!-- 内部端口,自定义 -->
<chdir>/home/dell/cmdb/</chdir> <!-- 项目路径 -->
<module>wecode_cmdb.wsgi</module> <!-- untitled3为wsgi.py所在目录名-->
<processes>2</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>
然后配置nginx
cat /etc/nginx/default.d/cmdb.conf
server {
listen 80;
server_name cmdb.codeus.vip; #改为自己的域名,没域名修改为127.0.0.1:80
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; #端口要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT wecode_cmdb.wsgi; #wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /home/dell/cmdb/; #项目路径
}
}
最后我绑定hosts访问域名,结果访问不到,,,域名+8000端口可以访问到,不管了,我觉得可以用nginx直接代理,先这样。
访问的时候报错
django1.8
'WSGIRequest' object has no attribute 'session'
找了半天原因说是django版本问题,我看了pycharm的版本是1.11.29,但是服务器上的是1.8
安装1.11.29
pip3 install Django==1.11.29
报错:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
django-cms 3.1.3 requires Django<1.9,>=1.6.9, but you have django 1.11.29 which is incompatible.
这是因为有个模块需要1.8版本django
卸载它
pip3 uninstall django-cms
再次安装1.11.29版本,访问正常