网络环境(免密码认证)
1 客户端生成密钥对
ssh-keygen -t rsa
2 公钥发给服务器
公钥字符串存放到/home/dev/.ssh/authorized_keys(在/etc/ssh/sshd_config中的authorized_keys 配置项指定)
3 重启ssh服务
项目环境
两个重点知识点
xshell下拷贝文件(这两个命令只限于xshell)
rz win----》linux (需要安装)
sz linux—》win
kill lsof -ti :8000
杀死进程
1 python虚拟环境
export WORKON_HOME=/data/virtual
source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv -p python3 django
2 xshell下拷贝文件
rz win----》linux
sz linux---》win
3 django 源码安装
查看INSTALL文件
pyton setup.py build(可选)
python setup.py install
4 创建django项目
1 创建项目
django-admin startproject itcast
2 创建app
python manage.py startapp
3 创建页面
修改views.py----->返回一个httpresponse
4 注册应用
修改settings.py文件
5 url路由
修改urls.py文件
5 pcre动态库安装
1 查看INSTALL
2 ./configure
(检查系统依赖,指定安装路径,裁剪定制软件包)
make
(编译)
make install
(安装)
6 nginx 安装
1 ./configure --prefix=/data/server/nginx --without-http_gzip_module
(指定安装路径在/data/server/nginx,裁掉gzip模块)
2 make && make install
3 若nginx启动报错:找不到动态库
ldd 查找链接路径
ln -s 创建软连接
ln -s /usr/local/lib/libpcre.so.1 /lib/x86_64-linux-gnu/libpcre.so.1
7 启动项目
1 启动django
python manage.py runserver > /dev/null 2>&1 &
2 启动nginx
/data/server/nginx/sbin/nginx
手动代码发布
2.打包代码(代码服务器执行)
cd /home/dev/data/codes
tar zcf tar_code.tar.gz test1/
3. 传输代码
cd /data/codes
scp [email protected]:/home/dev/data/codes/tar_code.tar.gz .
4. 关闭应用
cd /data/server/nginx/sbin
./nginx -s stop
kill `lsof -ti :8000`
5. 解压代码:
cd /data/codes
tar xf tar_code.tar.gz
6. 放置代码
cd /data/server/itcast/test1
mv views.py /data/backup/views.py-`date +%Y%m%d%H%M%S`
cp /data/codes/test1/views.py .
7. 开启应用
export WORKON_HOME=/data/virtual/
source /usr/local/bin/virtualenvwrapper.sh
workon django
cd /data/server/itcast/
python manage.py runserver > /dev/null 2>&1 &
cd /data/server/nginx/sbin
./nginx
8.检查
netstat -ltn | grep 80
简单脚本编写
1 命令罗列
2 固定内容变量化(方便修改)
3 功能函数化(方便扩展)
远程执行命令
ssh [email protected] "bash /home/dev/data/scripts/tar_code.sh"
(登陆到代码服务器,执行打包代码的脚本)
大型脚本编写
1 确定框架
将功能定义成函数
2 命令填充
将之前记录的命令填到函数里
3 日志功能
1 定义写日志函数
获取时间日期步骤等信息,拼接后重定向到文件
2 各个步骤调用该函数
4 锁文件功能(保证脚本同一时间只执行一次)
1 创建加锁和解锁函数
创建和删除锁文件(/tmp/XXXXX)
2 在所有步骤之前调用加锁函数,所有步骤之后调用解锁函数
3 部署函数调用之前先判断锁文件是否存在
5 功能参数化(方便后续扩展)
通过case语句,判断参数,若是deploy则执行deploy函数
安全性参数个数的判断($#)
脚本调试
-n 检查语法错误
-v 先显示脚本内容,然后指向
-x 显示一条执行一条