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. 【手记】未能从程序集System.Net.Http.Formatting中加载类型System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter

    实际报错如图: 如果你跟我一样是在折腾Asp.Net WebApi 2.x时遇到这个问题,请参看如下办法: 删除现有System.Net.Http.Formatting引用(如果引用了的话) 重新引用 ...

  2. Asp.net 面向接口可扩展框架之应用程序上下文作用域组件

    在团队中推广面向接口开发两年左右,成果总体来说我还是挺满意的,使用面向接口开发的模块使用Unity容器配置的功能非常稳定,便于共享迁移(另一个项目使用只需要复制配置和调用接口即可),如果再配合上DI那 ...

  3. disabled="true" 的标签元素不可提交

    把jsp页面的input 标签设置成不可编辑: <input  name="Id"    value="${order.Id}" readOnly=&qu ...

  4. this上下文,以及通过call 、apply 实现继承

    上下文:this关键字通常指向当前函数的拥有者,把拥有者叫做执行上下文. this代表函数运行时自动生成的内部对象,只能在函数内部使用. 构造函数中的this 指 构造函数的实例对象.javascri ...

  5. js设置、获取单值cookie和多值cookie

    js设置.获取单值cookie和多值cookie,代码如下: var CookieUtil = (function () { var Cookie = function () { // 获取单值coo ...

  6. 深入理解cookies

    HTTP cookies,通常又称作"cookies",已经存在了很长时间,但是仍旧没有被予以充分的理解.首要的问题是存在了诸多误区,认为cookies是后门程序或病毒,或压根不知 ...

  7. Linux tree命令

    Linux tree命令用于以树状图列出目录的内容. 执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件. 语法 tree [-aACdDfFgilnNpqstux][-I <范 ...

  8. 关于印发利用DEM确定耕地坡度分级技术规定(试行)的通知

    下载:http://files.cnblogs.com/files/gisoracle/%E5%88%A9%E7%94%A8DEM%E7%A1%AE%E5%AE%9A%E8%80%95%E5%9C%B ...

  9. hyperv 创建虚拟以太网交换机失败

    问题: hyperv 创建虚拟以太网交换机失败 解决办法: 取消无线共享,重新创建虚拟以太网交换机即可

  10. asp.netDataTable导出excel方法(1)

    先来写一段代码,这段代码也是我在网上找的,但是他那个原先有点问题,我对他那个进行了修改,现在这个代码是我修改改过的,应该没有问题的. public int StreamExport(System.Da ...