目标: 在win7上安装vmware,并新建2个虚拟机,centos6.6/7.0,并在虚拟机里将python网站和php网站同时配置在一个apache上.
1. 安装vmware,并新建2个虚拟机,分别使用CentOS6.6和CentOS7.0.安装完成后分别命名为centos6和centos7.
注意: 虚拟机的网络连接都设置为桥接模式
有些操作需要superuser权限,所以为了方便,先su获取权限.以下所有操作都有superuser权限.
配置虚拟机的网络,使得win7和centos能够连通,且centos能直接访问互联网.centos6不需要特别设置就可以了.如果centos7无法联网,按照下列方法解决:
首先在终端输入ifconfig,找到网卡名称,我的是eno1677736.
然后修改网卡的配置vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
HWADDR=00:0C:29:2D:A6:8F
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=eff0f28b-5583-431e-9748-308bbc3241fe
ONBOOT=no
最后一行的ONBOOT=no改为ONBOOT=yes
然后重启网络
systemctl restart network
systemctl restart NetworkManger
这样centos7就能连接网络了.
centos其他设置.
为了方便,我不是直接在虚拟机里操作(鼠标切进去切出来很麻烦,我没有安装vmware tools,使用sftp传输文件),而是使用xshell和ssh连接到虚拟机,所以centos可以把GUI界面关掉,只是用命令行界面,节省系统资源.
centos6: vim /etc/inittab
将 id:5:initdefault
中的5改为3
centos7: 使用命令 systemctl set-default multi-user.target
然后重启centos,就默认进入文字界面了,然后使用xshell或secureCRT或者其他工具连接使用.
安装必要的开发工具集和php.使用命令:
yum groupinstall "Development tools"
yum install php php-devel
yum install zlib-devel
yum install bzip2-devel
yum install openssl-devel
yum install ncurses-devel
yum install sqlite-devel
先建立一个目录存放python lib,之后会用到mkdir /usr/local/python/lib
然后就是解压源码包,编译:
./configure --enable-shared --prefix=/usr/local/python LDFLAGS="-Wl,-rpath /usr/local/python/lib"
make && make install
然后为新安装的python建立一个新的软连接(千万不要覆盖旧的python,新起个名字),我这里用python2711
ln -s /usr/local/python/bin/python /usr/bin/python2711
然后验证一下,安装是否成功,在终端分别输入python和python2711,会进入python的交互式界面,可以看到python版本,如果python指向旧的版本,python2711指向新的版本就对了,输入exit()并回车可以退出.
ln -s /usr/local/python/bin/pip /usr/bin/pip2711
pip2711 install django==1.8.4
pip2711 install gunicorn==18
/home/qiu
目录(你自己的目录)下新建一个目录workspace,在workspace里执行 /usr/local/python/bin/django-admin startproject p1
这样就使用p1建立了一个叫做p1的工程,p1目录结构如下:p1 -- db.sqlite3 -- manage.py -- p1 -- __init__.py -- url.py -- settings.py -- wsgi.py
cd /home/qiu
mkdir php
cd php
vim 1.php
输入如下内容:
<html>
<body>
echo "My first PHP script!";
?>
body>
html>
yum install httpd # centos6自带httpd,不用安装
yum install httpd-devel # centos6/7都需要安装
需要注意的是,centos6自带apache2.2,centos通过yum安装的apache是2.4版本,有些配置会有区别,后面会讲到.
下面是几个有用的命令:
rpm -qa | grep httpd # 查看apache版本
httpd -l # 查看apache安装的c扩展
httpd -M # 查看apache加载的模块
lsof -i tcp:80 # 查看80端口占用情况
netstat -ntlp # 列出所有端口
# 配置php访问
# 管理员邮箱
ServerAdmin [email protected]
# php文件存放的位置
DocumentRoot "/home/qiu/php"
# 域名
ServerName php.test.com
# 错误日志存放位置
ErrorLog "logs/ce.err"
CustomLog "logs/ce.access" common
# 静态文件目录
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
# 配置反向代理,python用这个配置
ServerAdmin [email protected]
ServerName gunicorn.test.com
ProxyRequests Off
Order deny,allow
Allow from all
# 以/static/开头的url不转发,apache自己处理(img,css,js静态文件)
ProxyPass /static/ !
# 将请求转发到8888端口
ProxyPass / http://127.0.0.1:8888/
ProxyPassReverse / http://127.0.0.1:8888/
# 配置静态文件目录和可访问权限
Alias /static/ /usr/local/python/lib/python2.7/site-packages/django/contrib/admin/static/
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
NAMEVirtualHost *:80
# php的配置
DocumentRoot /home/qiu/php
ServerName php.test2.com
# apache的反向代理,python用
ServerName gunicorn.test2.com
ProxyRequests Off
Order deny,allow
Allow from all
ProxyPass / http://127.0.0.1:8888/
ProxyPassReverse / http://127.0.0.1:8888/
chmod 777 /home/qiu/workspace/p1
chmod 777 /home/qiu/php
/usr/sbin/sestatus -v | grep SEL # 查看SELinux状态,如果SELinuxstatus参数为enable则为开启状态
setenforce 0 # 关闭SELinux
# centos6 使用如下命令:
service stop iptables # 停止防火墙
chkconfig iptables off # 禁用防火墙
# centos7 使用如下命令:
systemctl stop firewalld.service # 停止防火墙
systemctl disable firewalld.service # 禁用防火墙
192.168.248.61 php.test.com
192.168.248.61 gunicorn.test.com
192.168.248.55 php.test2.com
192.168.248.55 gunicorn.test2.com
根据自己的虚拟机的IP配置,这样的话,在WIN7的浏览器里访问这些域名实际上就是访问了虚拟机里的网站.
/home/qiu/workspace/p1
目录下,执行: /usr/bin/python/bin/gunicorn p1.wsgi:application -b 127.0.0.1:8888
pip2711 install greenlet # 这3个组件都依赖于greenlet,所以要先安装
pip2711 install gevent
pip2711 install eventlet
pip2711 install meinheld
如果要使用meinheld,可以这样写:
/usr/bin/python/bin/gunicorn -k egg:meinheld#gunicorn_worker p1.wsgi:application -b 127.0.0.1:8888
如果要使用gevent或者eventlet,这样写:
/usr/bin/python/bin/gunicorn -k gevent p1.wsgi:application -b 127.0.0.1:8888
/usr/bin/python/bin/gunicorn -k eventlet p1.wsgi:application -b 127.0.0.1:8888
php.test.com
gunicorn.test.com
php.test2.com
gunicorn.test2.com
就可以看到效果了.