设为首页 收藏本站
查看: 906|回复: 0

[经验分享] Linux服务器Python生产环境配置

[复制链接]

尚未签到

发表于 2015-12-15 13:25:24 | 显示全部楼层 |阅读模式
Linux服务器Python生产环境配置
[日期:2015-02-01]来源:hearrain.com  作者:Linux[字体:大 中 小]



经常我们做Linux运维配置的时候会重复查找一些教程,所以打算从运维层面开始做一些知识积累。先做一些简单的整理,后期再根据需求持续更新。
  本文记录Debian Linux服务器下Python生产环境的配置流程和注意事项。
初始化操作系统:Debian Linux
1. 修改root用户密码
  对一台刚安装好的Debian系统,首先应该去修改它的root用户密码。使用root用户登录远程主机。

ssh root@xxx.xxx.xxx.xxx
  这时,命令行会出现警告,表示这是一个新的地址,存在安全风险。键入yes,表示接受。然后,就应该可以顺利登入远程主机。
  接着,修改root用户的密码。

passwd
2. 新建用户
  首先,添加一个用户组(这里假定为admin用户组)。

addgroup admin
  然后,添加一个新用户(假定为foo)。

useradd -d /home/foo -s /bin/bash -m foo
  上面命令中,参数d指定用户的主目录,参数s指定用户的shell,参数m表示如果该目录不存在,则创建该目录。
  接着,设置新用户的密码。

passwd foo
  将新用户(foo)添加到用户组(admin)。

usermod -a -G admin foo
  Debian系统默认没有sudo,所以需要先安装sudo才行。

apt-get install sudo
  接着,为新用户设定sudo权限。

visudo
  visudo命令会打开sudo设置文件/etc/sudoers,找到下面这一行。

root    ALL=(ALL:ALL) ALL
  在这一行的下面,再添加一行。

root    ALL=(ALL:ALL) ALL
foo    ALL=(ALL) NOPASSWD: ALL
  上面的NOPASSWD表示,切换sudo的时候,不需要输入密码,我喜欢这样比较省事。如果出于安全考虑,也可以强制要求输入密码。

root    ALL=(ALL:ALL) ALL
foo    ALL=(ALL:ALL) ALL
  然后,先退出root用户的登录,再用新用户的身份登录,检查到这一步为止,是否一切正常。

exit
ssh foo@xxx.xxx.xxx.xxx
3.SSH设置
  首先,确定本机有SSH公钥(一般是文件~/.ssh/id_rsa.pub),如果没有的话,使用ssh-keygen命令生成一个(可参考我写的SSH教程)。
  在本机上另开一个shell窗口,将本机的公钥拷贝到服务器的authorized_keys文件。

cat ~/.ssh/id_rsa.pub | ssh foo@xxx.xxx.xxx.xxx 'mkdir -p .ssh && cat - >> ~/.ssh/authorized_keys'

# 或者在服务器端,运行下面命令

echo "ssh-rsa [your public key]" > ~/.ssh/authorized_keys
  然后,进入服务器,编辑SSH配置文件/etc/ssh/sshd_config。

sudo cp /etc/ssh/sshd_config ~
sudo nano /etc/ssh/sshd_config
  在配置文件中,将SSH的默认端口22改掉,可以改成从1025到65536之间的任意一个整数(这里假定为25000)。

Port 25000
  然后,检查几个设置是否设成下面这样,确保去除前面的#号。

Protocol 2

PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

UseDNS no
  上面主要是禁止root用户登录,以及禁止用密码方式登录。
接着,在配置文件的末尾,指定允许登陆的用户。

AllowUsers bill
  保存后,退出文件编辑。
接着,改变authorized_keys文件的权限。

sudo chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh/
  然后,重启SSHD。

sudo service ssh restart

# 或者

sudo /etc/init.d/ssh restart
  下面的一步是可选的。在本机~/.ssh文件夹下创建config文件,内容如下。

Host s1
HostName xxx.xxx.xxx.xxx
User foo
Port 25000
  最后,在本机另开一个shell窗口,测试SSH能否顺利登录。

ssh s1
4. 运行环境配置
  首先,检查服务器的区域设置。

locale
  如果结果不是en_US.UTF-8,建议都设成它。

sudo locale-gen en_US en_US.UTF-8 en_CA.UTF-8
sudo dpkg-reconfigure locales
  然后,更新软件。

sudo apt-get update
sudo apt-get upgrade
  最后,再根据需要,做一些安全设置,比如搭建防火墙,关闭HTTP、HTTPs、SSH以外的端口,再比如安装Fail2Ban,详细可参考这篇《Securing a Linux Server》。
安装常用软件
安装常用包

sudo apt-get install curl git
安装VIM

sudo apt-get install vim

#下载配置
curl https://gist.githubusercontent.com/fengluo/3749890/raw >> ~/.vimrc
  我们使用Vundle来管理安装VIM插件

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  安装好了之后可以打开vim运行

:PluginInstall
  也可以直接从命令行安装配置

vim +PluginInstall +qall
部署Python环境

sudo apt-get install python-pip python-dev build-essential

# 更新pip
sudo pip install --upgrade pip
安装virtualenv
  virtualenv可以帮助我们创建一个隔离的python环境。各个python应用之间应该使用独立的python环境,保证不会互相干扰。

sudo pip install virtualenv
安装supervisor
  Supervisor是个强大的进程管理工具,帮助用户监控和控制系统进程。

pip install supervisor

# 如果不会写配置,可以用下面的命令来生成一个配置
echo_supervisord_conf > /etc/supervisord.conf
安装MySQL

sudo apt-get install mysql-server

sudo apt-get install libmysqlclient-dev
安装Nginx

sudo apt-get install nginx
  --------------------------------------分割线 --------------------------------------
  CentOS 6.2实战部署Nginx+MySQL+PHP http://www.iyunv.com/Linux/2013-09/90020.htm
  使用Nginx搭建WEB服务器 http://www.iyunv.com/Linux/2013-09/89768.htm
  搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程 http://www.iyunv.com/Linux/2013-09/89692.htm
  CentOS 6.3下Nginx性能调优 http://www.iyunv.com/Linux/2013-09/89656.htm
  CentOS 6.3下配置Nginx加载ngx_pagespeed模块 http://www.iyunv.com/Linux/2013-09/89657.htm
  CentOS 6.4安装配置Nginx+Pcre+php-fpm http://www.iyunv.com/Linux/2013-08/88984.htm
  Nginx安装配置使用详细笔记 http://www.iyunv.com/Linux/2014-07/104499.htm
  Nginx日志过滤 使用ngx_log_if不记录特定日志 http://www.iyunv.com/Linux/2014-07/104686.htm
  --------------------------------------分割线 --------------------------------------
  本文永久更新链接地址:http://www.iyunv.com/Linux/2015-02/112649.htm

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-151561-1-1.html 上篇帖子: Python聊天室~简单实用~小伙伴们赶快戳进来 下篇帖子: python切换进程用户到nginx账号
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表