俱乐部春纳网页后端小结

ubuntu下开发环境的搭建

php + apache + mysql 安装

sudo apt-get install apache2
sudo apt-get install libapache2-mod-php5 php5
sudo apt-get install mysql-server mysql-client
参考资料:ubuntu下安装Apache+PHP+Mysql

apache的使用

把文件放到/var/www/html目录下,通过localhost访问
一般情况下apache是自动打开的,手动开启关闭重启的命令如下:
apachectl -k start
apachectl -k stop
apachectl -k restart

mysql的使用

登录前

登录:mysql [-h 服务器] -u 用户名 -p然后按照提示输入密码
修改密码:mysqladmin -u 用户名 password "新密码"然后按照提示输入原密码

登录后

用户相关操作、创建数据库(root)

创建用户:insert into mysql.user(Host, User, Password) values('主机', '用户名', password('密码'));
本地访问的主机是localhost, 如果要远程通过phpmyadmin管理数据库,那么主机是%
创建数据库:creat database 数据库名;
用户授权:grant [select, update, insert, delect, all] on 数据库.表 to '用户名'@‘主机名’ identified by "密码";
如果是所有数据库或所有表,用*代替
授权后刷新系统权限表:flush privileges;
删除用户:delect from user where User='用户名' and Host='主机名';;
删除后刷新系统权限表:flush privileges;
删除数据库:drop database 数据库名;
修改用户密码:update mysql.user set password=password('新密码') where User='用户名' and Host='主机名';
修改后刷新系统权限表:flush privileges;

切换数据库:

use 数据库名;

显示数据:

select 列 from 表名;
若显示全部内容,列使用*

查看数据库:

show databases;
数据库中的charset尽量使用utf8,而不是gbk,防止暴露服务器信息
参考资料:GBK字符编码(字符集)缺陷导致web安全漏洞【虽然看不太懂】

phpmyadmin的使用

安装:

从官网下载后解压到/var/www/html,通过localhost访问

配置:

如果本地访问,直接使用就好
如果要连接到远程服务器的mysql,那么打开目录下的libraries/config.defaut.php文件,找到$cfg['Servers'][$i]['host']将值改为相应的服务器

mysql备份

mysqldump命令

mysqldump -h 主机 -u 用户名 -p 密码 数据库名

备份脚本(.sh)

USER="username"
PASSWORD="password"
DATABASE="datebase"
HOST="localhost"
OPTIONS="-h$HOST -u$USER -p$PASSWORD $DATABASE"

DATE=`date '+%Y%m%d-%H%M'`
BACKUP_DIR=/home/zk/datebase/
DUMPFILE=$DATE.sql

cd $BACKUP_DIR
mysqldump $OPTIONS > $DUMPFILE

该脚本将datebase数据库的内容备份到/home/zk/datebase/目录下,文件以备份时间命名

定时备份crontab

参考资料:Linux crontab定时执行任务 命令格式与详细例子
基本格式:分 时 日 月 周 命令
每一行为一个任务,定时执行命令
可以用星号(*)表示任意值
crontab -e:直接编辑时程表(vi)
crontab -r:删除当前时程表
crontab -l:列出当前时程表
crontab FILE:使用FILE文件的内容替代当前时程表

CI框架

安装:

从官网下载后解压到/var/www/html目录下即可
通过localhost/...../index.php/..控制器../..方法../..参数..访问
相关子目录:

application:用户主要目录(主要是views, controllers, models, config)
system:框架的系统目录,一般不用管
user_guide:用户手册,英文版,不需要可以删除

设计模式:MVC(Model - View - Controller)

模型(Model):处理页面和数据库的交互

数据库配置:.../application/config/database.php文件

$db['default']['hostname']:主机名
$db['default']['username']:mysql用户名
$db['default']['password']:mysql密码
$db['default']['database']:所用的数据库

形式
<? php          
    Class 模型名(首字母大写,与文件名相同,单文件名全小写) extends CI_model    
    {        
        public function 方法名()        
        {            
            ...........        
        }    
    }

特殊方法:__construct(),构建函数,当模型被调用时,首先自动调用这个函数
通常要在构建函数中载入数据库$this->load->database();

获取数据库内容
获取整张表

$query=$this->db->get('表名');返回Active Record类并且赋给变量$query
$query->result_array();调用类的result_array()方法,返回一个包含各行内容的字典,可以在视图上通过foreach分别取出每一行
对于每一行,是一个以字段名为索引的字典

获取某一行的内容

$query=$this->db->get_where('表名', 筛选条件);筛选条件是一个{‘字段名’=>值}的数组
$query->row_array();调用类的row_array()方法,返回一个包含匹配行的内容的字典

向数据库写入内容

$this->input-&gt;post('提交内容的name');返回表当内对应name的value
$this->db->insert('表名', 内容)写入数据库,内容是一个字典

视图(View):要展示的静态页面

可以把一个页面写成多个文件,显示时再拼接起来
比如可以创建一个templates文件夹,里面放一些各个网页通用头和尾
必须是php文件

html -> php改写

连接的js和css等文件,还有图片等资源不能放在application目录下
需要在根目录下创建一个文件夹,把这些资源放进去
主要是修改连接的js和csss等文件、图片等资源的文件的地址

  • 可以借助url的辅助函数
    需要在方法中加入$this->load->helper('url');载入辅助函数
    把根目录或者资源的目录写入..../application/config/config.php$config['base_url']
    利用base_url()函数
    如config中的base_url设置为localhost/join/resources
    那么,base_url(‘image/background.jpg’)就会返回字符串loacalhost/join/resources/image/background.jpg

js,css文件内不能写php语句,如果需要使用这个函数,可以把内容直接复制到页面上,而不通过连接
注意:改写的时候要注意不要不小心把原文件上的括号、分号给删掉了

控制器(Controller):包含各种方法

形式
<? php        
    class 控制器名(首字母大写,与文件名相同,但文件名全小写) extends CI_controller    
    {        
        public function 方法名()        
        {            
            ........        
        }    
    }

特殊方法:construct(),构建函数
通常需要加入`parents::
construct();,……并不知道有什么卵用,照搬=。=$this->load->model(‘模型名’);载入模型$this->load->view(‘视图文件名’, $data);`:不是只显示这个视图的内容,而是把这个文件的 内容写到当前方法的页面上,并且把变量$data内的数据传递到这个视图文件上

传递的数据在视图文件上的访问

$data['news']['title']
在视图上通过$news['title]来访问这个变量

调用模型上的方法:

$this->模型名->方法名;

表单数据的传递

controllers要有一个方法来接受表单的数据
form的action应指向这个方法
这个方法用来处理表单传递的数据,并且调用模型的方法与数据库进行交互

提交到服务器

登录:

ssh 用户名@服务器,然后输入密码

服务器与本地文件的传输:

scp命令,用法与cp命令相似
比如上传本地~/home.php到服务器的主目录下:
scp ~/home.php 用户名@服务器:home.php

网站的目录:

一般来说,
对于nginx,放在/usr/share/nginx/html/目录下
对于apache,放在/var/www/html/目录下

nginx的配置挺复杂的,还有待以后进一步的学习

关闭ci框架的debug模式

网站挂上去后最好关闭debug模式(防止程序信息暴露在前台)
..../application/config/database.php中的$db['default']['db_debug']修改为FALSE即可
i

github

其实一开始写后端的时候并没有git= =时间紧啊,没时间给我慢慢玩
不过网站挂上去,在写查重和改写雨停的优化版的时候就玩了玩git

github在Windows上有客户端,直接使用就好

在linux上需要用git

安装git:

sudo apt-get install git

配置git:

本地创建ssh key:

ssh-keygen -t rsa -C "邮箱",会提示确认路径和密码,一路回车默认即可

在github中添加ssh key:

进入Account Settings,选择SSH Key,Add SSH Key,title随便填,key复制粘贴文件~/.ssh/id_rsa.pub的全部内容

设置username和email

每次commit都会记录这两个信息
git config --global user.name "用户名"
git config --global user.email "邮箱"

设置要git的目录

进入要git的目录
初始化:git init
添加远程地址:git remote add origin git@github.com:github用户名/远程仓库名.git

使用(简单的git命令)

git clone <ADDRESS>:克隆代码库,可以是本地代码库,也可以是远程代码库(USERNAME@HOST:PATH)
git add <-i> <FILE> ....:【-i,交互式】添加文件到代码库中
git rm <FILE>:将文件移出代码库
git commit -m <MESSAGE>:提交更改,将修改的文件提交到缓冲区
git push <ORIGIN> <BRANCH>:推送代码库到远程代码库
git pull:从远程同步代码库到本地并合并
git branch:查看当前分支
git branch <BRANCH>:创建分支(主分支为Master)
git branch -d <BRANCH>:删除分支
git checkout <BRANCH>:切换到指定分支
git checkout -- <FILE>:从缓冲区替换本地改动
git log:查看提交的历史记录
git status:显示当前的修改状态
git reset <LOG>:恢复到历史版本
参考资料:
git - 简易指南
【Github教程】史上最全github使用方法:github入门到精通

附:ubuntu下的sublime text

安装:

sudo apt-get install sublime-text

中文支持

参考资料:解决Ubuntu下Sublime Text 2无法输入中文的方法

Markdown支持

参考资料:sublime text 2 下的Markdown写作
但是语法高亮的设置我一直找不到,最后是在Package Control: install Pakage中直接安装MarkdownEditing,但是语法高亮效果不太满意,不知道有没有更好的解决方法
注:语法高亮在markdown preview的设置文件中,而且需要下载主题才能使用。
另外可以在github上下载chrome的markdown preview plus插件,这样就能在浏览器上直接打开md文件啦(2015/04/28)

最后

雨停的前端做的好赞!!!诶,不会美工的小码农真是不能比啊╮(╯▽╰)╭

= =学习CI,用服务器的时候遇到好多逗比的问题去请教蛋蛋和六神

感谢蛋蛋和六神的指导嘿嘿~~~

CI官网的教程写的有点晦涩,不太好懂,这里只是个人在使用中自己的理解,可能会有一些错误,欢迎指出~

不过网站还不会挂咯,找个时间得学学怎么挂网站~~