1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
| # 先殺掉不用的東西 killall php-fpm killall mysqld
# 檢查 Nginx 版本是否在 nginx-0.8.40 以上 # 以上就不用安裝 uwsgi 模組了 /usr/local/nginx/sbin/nginx -v
# 安裝必要的 Python 2.7.4 # - 不取代原有系統的 python # - 另取名為 python2.7 cd ~/server wget wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 tar xvf Python-2.7.4.tar.bz2 cd Python-2.7.4 ./configure --prefix=/usr/local make && make altinstall
cd .. wget https://pypi.python.org/packages/source/d/distribute/distribute-0.6.36.tar.gz tar zxvf distribute-0.6.36.tar.gz cd distribute-0.6.36 python2.7 setup.py install
# 安裝 redis cd .. wget http://redis.googlecode.com/files/redis-2.6.12.tar.gz tar zxvf redis-2.6.12.tar.gz cd redis-2.6.12 make PREFIX=/usr/local/redis install cp redis.conf /usr/local/redis/ mkdir -p /usr/local/redis/{var/run,log,snapshot} vim /usr/local/redis/redis.conf
daemonize yes pidfile /usr/local/redis/var/run/redis.pid logfile /usr/local/redis/log/redis.log dir /usr/local/redis/snapshot/
# 安裝 Application mkdir -p /home/user/python unzip appname.zip cd appname virtualenv-2.7 --no-site-package venv source ./venv/bin/activate pip install -r requirements.txt cd /home/user chown -Rf user:user python
# 安裝 supervisor easy_install-2.7 supervisor mkdir -p /usr/local/supervisor/{etc,site,log} echo_supervisord_conf > /usr/local/supervisor/etc/supervisord.conf vim /usr/local/supervisor/etc/supervisord.conf
[include] files = /usr/local/supervisor/site/*.ini vim /usr/local/supervisor/site/python-appname.ini
[program:appname-celeryd] command=/home/user/python/appname/venv/bin/celery worker --app=tube.tasks.base -l debug directory=/home/user/python/appname environment=PYTHONPATH="/home/user/python/appname:/home/user/python/appname/venv/lib/python2.7:/home/user/python/appname/venv/lib/python2.7/site-packages:$PYTHONPATH" user=user numprocs=1 stdout_logfile=/usr/local/supervisor/log/appname-celeryd.out.log stderr_logfile=/usr/local/supervisor/log/appname-celeryd.err.log autostart=true autorestart=true startsecs=10 stopwaitsecs=600
# 安裝 uwsgi cd .. wget http://projects.unbit.it/downloads/uwsgi-1.9.8.tar.gz tar zxvf uwsgi-1.9.8.tar.gz cd uwsgi-1.9.8 python2.7 uwsgiconfig.py --build
mkdir /usr/local/uwsgi cp ./uwsgi /usr/local/uwsgi/
# 建立設定檔 vim /usr/local/uwsgi/python-appname.ini
[uwsgi] chmod = 666 pidfile = /usr/local/uwsgi/python-appname.pid daemonize = /usr/local/uwsgi/python-appname.log socket = /tmp/uwsgi-python-appname.sock chdir = /home/user/python/appname virtualenv = /home/user/python/appname/venv touch-reload = /home/user/python/appname/reload.ini uid = 500 gid = 500 module = manager callable = app processes = 4 threads = 2 stats = 127.0.0.1:9191
# 啟動 USWGI 中的 Web Server 設定 /usr/local/uwsgi/uwsgi /usr/local/uwsgi/python-appname.ini
# 停上 USWGI 中的 Web Server 設定 # 如無效可用 "killall -9 uwsgi" /usr/local/uwsgi/uwsgi --stop /usr/local/uwsgi/python-appname.pid
# 重新讀取 USWGI 中的 Web Server 設定 /usr/local/uwsgi/uwsgi --reload /usr/local/uwsgi/python-appname.pid
# 啟動 Redis /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
# 啟動 Supervisor 和裡面的 Celery /usr/local/bin/supervisord -c /usr/local/supervisor/etc/supervisord.conf
# 管理 Supervisor /usr/local/bin/supervisorctl -c /usr/local/supervisor/etc/supervisord.conf
# 編輯 Nginx mkdir /usr/local/nginx/conf/vhost vim /usr/local/nginx/conf/vhost/sub.domain.com.conf
server { listen 80; server_name pet.zeuik.com;
location / { include uwsgi_params; uwsgi_pass unix:/tmp/uwsgi-python-appname.sock; } }
|