3天前,荆老师给了我一台打印机,让我完成省赛代码打印系统的测试。

打印机型号为 HP P1007,算是一台比较老的打印了。

本文记录了从打印机驱动安装到代码打印WEB部署的全过程

1. 安装打印机驱动

HP在linux端没有提供官方的打印机驱动,还好,在HP Linux Imaging and Printing找到了第三方驱动。

刚开始我选择手动安装,然而驱动似乎是正确安装了,但是打印机就是不工作。

后来采取的策略是先配置必要环境,再使用自动安装的脚本,具体记录如下:

必要的文件

通过如下网站进行下载:

https://sourceforge.net/projects/hplip/files/hplip/

http://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/

这里我选择了最新版本 hplip-3.16.5,不过还是推荐 hplip-3.16.3

最终我们得到以下4个文件,一个安装脚本,一个插件,以及两个asc文件:

hplip-3.16.5.run
hplip-3.16.5-plugin.run
hplip-3.16.5.run.asc
hplip-3.16.5-plugin.run.asc

安装依赖

我的系统是 Ubuntu14.04 x64, 其他版本参考 这里

运行如下命令,完成依赖的安装:

sudo apt-get install --assume-yes avahi-utils libcups2 cups libcups2-dev cups-bsd cups-client libcupsimage2-dev libdbus-1-dev build-essential ghostscript openssl libjpeg-dev libsnmp-dev snmp-mibs-downloader libtool libusb-1.0.0-dev wget policykit-1 policykit-1-gnome python3-dbus python3-gi python3-dev python3-notify2 python3-imaging python3-pyqt4 gtk2-engines-pixbuf python3-dbus.mainloop.qt python3-reportlab python3-lxml libsane libsane-dev sane-utils xsane

sudo apt-get install python-dev

运行脚本

sudo chmod +x hplip-3.16.5.run
./hplip-3.16.5.run

会出现各种提示,顺着安装程序一路走下去,即可安装成功。

2. 配置Nginx+PHP+mysql环境

提升权限

sudo su

安装apt源管理工具、添加nginx和php的安装源

apt-get install python-software-properties
add-apt-repository ppa:nginx/stable
add-apt-repository ppa:ondrej/php5
apt-get update

安装mysql

apt-get install mysql-server

安装php及对mysql的支持

apt-get install php5 php5-fpm php5-mysql php-apc

安装php功能模块

apt-get install php-pear php5-dev php5-curl php5-gd php5-intl php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

安装nginx

apt-get install nginx

配置php

vim /etc/php5/fpm/php.ini

找到:cgi.fix_pathinfo=1

改为:cgi.fix_pathinfo=0

配置nginx

创建一个 /www 目录设置为 755 权限

mkdir /www
chmod 755 /www
vim /etc/nginx/sites-enabled/default

找到:root /usr/share/nginx/html;

改为:root /www;

找到:index index.html index.htm;

改为:index index.php index.html index.htm;

找到:location ~ .php$ { * } 区块,修改为:

 location ~ \.php$ {
try_files $uri =404;
include snippets/fastcgi-php.conf;
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}

解决php-fpm与nginx的小bug

vim /etc/nginx/fastcgi_params

在最后一行添加:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

解决nginx不能运行的问题

vim /etc/nginx/snippets/fastcgi-php.conf
删除 ``try_files`` 所在的行

重启各项服务

service php5-fpm reload
service nginx reload

测试

vim /www/index.php

输入 <?php echo phpinfo(); ?> 并保存。

打开你的浏览器访问: http://localhost,若一切正常,将输出php环境信息

3. 部署代码打印程序

将此 代码打印程序 ,复制到 /www 目录下即可。

使用浏览器访问 http://localhost/codeprinter.html 即可。

核心代码如下:

<?php

        $name = $_POST['name'];
$passwd = $_POST['passwd'];
$content = $_POST['content'];
$content = stripslashes($content);
$result = false;
$handle = fopen('namelist', 'r');
while($userinfo = fscanf($handle, "%s %s")){
list($team, $password) = $userinfo;
if($team == $name && $passwd == $password)
$result = true;
}
fclose($handle);
if(!$result){
echo "<script language=javascript>alert('team number or password is wrong!');</script>";
echo "<script language=javascript>history.back();</script>";
}else {
//phpinfo();
$filename = "./code/".$name."-".date('H-i-s');
$fp = fopen($filename, "wb");
$content = date('H-i-s')."\t\t".$name."\n\n".$content;
fwrite($fp, $content);
fclose($fp);
$command = "lpr -o prettyprint ".$filename;
system($command);
echo "<script language=javascript>alert('Your code has been printed successfully, please wait a moment!');</script>";
echo "<script language=javascript>history.back();</script>";
}
?>

最终效果如下:

4. 参考资料

ubuntu14.04安装hp laserjet p1007打印机

基于ubuntu 14搭建nginx+php+mysql环境

php5.3 fastcgi方式 安装以及和nginx整合

codePrinter的更多相关文章

随机推荐

  1. Devexpress WPF Theme Editor 01

    在Devexpress中,已经有内置了很多主题样式.一般我们开发就已经够用了.但是随着客户的需求提高..我们要自己手动写一些样式这些的, 那么Devexpress 已经提供一个专门这样的工具. 下载地 ...

  2. 响应式WEB设计的9项基本原则

    响 应式Web设计对于解决多类型屏幕问题来说是个不错方案,但从印刷的角度来看,其却存在着很多的困难.没有固定的页面尺寸.没有毫米或英寸,没有任何物理 限制,让人感到无从下手.随着建立网站可用的各种小工 ...

  3. codeforces 632+ E. Thief in a Shop

    E. Thief in a Shop time limit per test 5 seconds memory limit per test 512 megabytes input standard ...

  4. java servlet 几种页面跳转的方法及传值

    java servlet 几种页面跳转的方法及传值   java web 页面之间传值有一下这几种方式1.form 表单传递参数2.url地址栏传递参数3.session4.cookie5.appli ...

  5. 解决WIN7与虚拟机CentOS的文件夹共享问题

    一.系统与软件 WIN7 64bit.VirtualBox 5.0.14.CentOS 6.5.SecureCRT 7.2.3 二.使用文件夹共享需要安装增强功能,但是安装时无法读取光盘iso文件 三 ...

  6. java移位运算符

    http://www.iteye.com/topic/766461 这篇博客讲的很清楚

  7. 如何用ORM支持SQL语句的CASE WHEN?

    OQL如何支持CASE WHEN? 今天,一个朋友问我,OQL可否支持CASE WHEN语句?他给的示例SQL如下: then '启用' else '停用' from tb_User OQL是SOD框 ...

  8. 使用HBaseShellPro操作Hadoop 2系列发行版CDH4.4

    前言 对于hadoop,hbase由于项目紧张原因好几个月没有时间认真的来总结下了,最近有一些空,就来继续的把项目中用到的一些技术实际的写出来,动动手,好久没有写东西了,都生疏了,说起hadoop,公 ...

  9. 一步一步HTML5粒子编辑器

    写在前面 大家阅读此文之前,可以先看一篇MiloYip的文章:用JavaScript玩转游戏物理(一)运动学模拟与粒子系统,看完之后再看此文,更加容易理解. MiloYip使用的粒子是canvas中绘 ...

  10. js 20160810

    jquery 获取不到所有相同id 的元素 ,只能获取此id的第一个元素.可以获取所有相同class 的元素