专栏首页张善友的专栏搭建Linux+Jexus+MariaDB+ASP.NET[LJMA]环境

搭建Linux+Jexus+MariaDB+ASP.NET[LJMA]环境

备注:,将我的博客内容整理成册,首先会在博客里优先发布,后续可能的话整理成电子书,主要从linux的最基础内容开始进入Linux的Mono开发方面的话题。本文是我整理博客内容的一篇文章。

LJMA 是Linux+Jexus+MariaDB+ASP.NET的简写,其实就是把Jexus, MariaDB以及ASP.NET安装在Linux系统上,组成一个环境来运行ASP.NET的应用。Jexus是Linux下的基于Mono编写的WEB服务软件,而MariaDB是比较小型的数据库软件,ASP.NET是由微软在.NET Framework框架中所提供,开发Web应用程序的类库,通过Mono我们可以让他在Linux下运行。

Jexus相比其它Linux系统的WEB服务器的优势 一、Jexus直接支持跨平台的ASP.NET网站和PHP网站,中间无需第三方插件。 二、Jexus在静态文件处理方面同样拥有非常优秀的性能。 三、Jexus专们针对应用服务器的需求进行了优化,具有超强的稳定性和不间断运行能力,其稳健度,绝不亚于其它任何WEB服务器。 四、Jexus拥有最基础而关键的入侵检测能力,这是所有其它WEB服务器所不具备的。

安装Mono 环境

Mono是一个由Novell公司(由Ximian发起,并由Miguel de lcaza领导的,一个致力于开创.NET在Linux上使用的开源工程。它包含了一个C#语言的编译器, 一个CLR的运行时,和一组类库,并实现了 ADO NET和ASP NET。能够使得开发人员在Linux用C#开发程序。)主持的项目.该项目的目标是创建一系列符合标准ECMA (Ecma-334和Ecma-335)的.Net 工具, 包括C #编译器和共同语言(CL 即 Common Language)执行平台(Platform).与微软的.Net不同, Mono项目不仅可以运行于Windows系统内,还可以运行于Linux, FreeBSD, Unix, Mac OS X和Solaris。

1、系统,安装编译环境,为编译Mono源码做准备。

yum –y update

2、安装Mono源码安装需要的库

yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettext make libpng-devel libjpeg-devel libtiff-devel libexif-devel giflib-devel libX11-devel freetype-devel fontconfig-devel cairo-devel

在执行yum 更新系统的时候可能发生了如下错误:

--> Running transaction check ---> Package gc.x86_64 0:7.1-10.el6 will be installed ---> Package glibc-headers.x86_64 0:2.12-1.80.el6_3.5 will be installed --> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2. 12-1.80.el6_3.5.x86_64 --> Processing Dependency: kernel-headers for package: glibc-headers-2.12-1.80.e l6_3.5.x86_64 --> Finished Dependency Resolution Error: Package: glibc-headers-2.12-1.80.el6_3.5.x86_64 (updates) Requires: kernel-headers Error: Package: glibc-headers-2.12-1.80.el6_3.5.x86_64 (updates) Requires: kernel-headers >= 2.2.1 You could try using --skip-broken to work around the problem ** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows: kernel-2.6.32-220.13.1.el6.x86_64 has missing requires of kernel-firmware >= ('0 ', '2.6.32', '220.13.1.el6')

解决方法:修改文件vi /etc/yum.conf 将exclude=kernel*前加注释即可解决,此参数的意思是排除安装或更新kernel开头的软件,而我们安装gcc需要依赖kernel相关的软件glibc-headers-2.12-1.80.el6_3.5.x86_64 。

3、Mono需要的GDI+兼容API的库Libgdiplus 支持System.Drawing

cd /usr/local/src/

wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2

tar -jxvf libgdiplus-2.10.tar.bz2

cd libgdiplus-2.10

./configure --prefix=/usr

make

make install

4、源码安装Mono 3.2.3

cd /usr/local/src/

wget http://download.mono-project.com/sources/mono/mono-3.2.3.tar.bz2

tar -jxvf mono-3.2.3.tar.bz2

cd mono-3.2.3

./configure --prefix=/usr

make

make install

输入 mono -V 如有mono版本信息,则安装成功.

[azureuser@mono mono-3.2.3]$ mono -V

Mono JIT compiler version 3.2.3 (tarball Sat Sep 21 03:52:16 UTC 2013)

Copyright (C) 2002-2012 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com

TLS: __thread

SIGSEGV: altstack

Notifications: epoll

Architecture: amd64

Disabled: none

Misc: softdebug

LLVM: supported, not enabled.

GC: sgen

如果是64位版本的CentOS,在后续安装好Jexus 5,启动的时候会发生以下错误:

Sender: jws.exe, Sender TypeName: AppDomain

Exception Source: jws, TargetSite Name: A

Message is:

An exception was thrown by the type initializer for Mono.Unix.Native.Stdlib

StackTrace is:

at A.G.A (System.String[] A) [0x00000] in <filename unknown>:0

IsTerminating: True

建议大家在安装mono后,都 ldconfig一下 。(ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表. )

另外有一点也非常重要,要在编译Mono的是指定安装到/usr(./configure --prefix=/usr),如果安装到一个系统根本"不了解"的文件夹,仅ldconfig都不行,还要在/etc/ld.so.conf文件或/etc/ld.so.conf.d 中添加路径后再 ldconfig才行呢。

安装Jexus

Jexus Web Server for nux 是一款基于.NET兼容环境,运行于Linux/unix操作系统之上,以支持ASP.NET为核心功能的高性能WEB服务器,用于替换Apache+mod_mono、Nginx+FastCgi 方案运行ASP.NET。Jexus不但具有跨平台ASP.NET服务器这样的标志性特征,同时还拥有内核级的安全监控、入侵检测、URL重写、无文件路由等一系列重要功能和专有特性,将在第十九章详细介绍Jexus。

从5.3.1版本开始,Jexus的安装过程简化了,内置了两个新的脚本,它们分别是“install”和“upgrade”,对应原来的“安装”和“升级”,将Jexus的安装过程自动化了。jexus本身的安装和升级方式并没有发生更多的变化,因此对于已经习惯于5.3.1之前版本的使用方式的用户,你们仍然可以采用之前的安装方式。

cd /usr/local/src/

wget http://linuxdot.net/down/jexus-5.4.3.tar.gz

tar -zvxf jexus-5.4.3.tar.gz

cd jexus-5.4.3

sudo ./install

安装完成~!!!在执行install脚本时,jexus默认是安装到/usr/jexus/中,如果想安装到其他目录,可以在执行该脚本时增加一个目录的参数(比如 sudu install /usr/local/jexus/)。对于升级就是执行upgrade脚本。

启动jexus 检查是否正常了

cd /usr/jexus

sudo ./jws start

[azureuser@mono jexus-5.4.3]$ cd /usr/jexus/

[azureuser@mono jexus]$ sudo ./jws start

Start ... OK

[azureuser@mono jexus]$ cat log/jws.log

09-21 06:07:56: * Jexus web server start-up success.

看到了Jexus已经成功启动的日志,我们还可以通过浏览器来检查下:http://127.0.0.1/info

安装MariaDB

MariaDB是一个向后兼容、替代MySQL的数据库服务器。MariaDB 是一个采用 Maria 存储引擎的 MySQL 分支版本,是由原来 MySQL 的作者 Michael Widenius 创办的公司所开发的免费开源的数据库服务器。

从源码包安装MariaDB,它的编译需要很长的时间,推荐通过CentOS的yum方式安装。

1、在 /etc/yum.repos.d/ 下建立 MariaDB.repo,内容如下:

[azureuser@mono etc]$ cd /etc/yum.repos.d

[azureuser@mono yum.repos.d]$ vi MariaDB.repo

# MariaDB 10.0 CentOS repository list - created 2013-08-23 13:08 UTC

# http://mariadb.org/mariadb/repositories/

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.0/centos6-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1

如果是其他的操作系统,可以在这里找到相关信息。

2、使用YUM安装MariaDB

[azureuser@mono yum.repos.d]$ sudo yum -y install MariaDB-client MariaDB-server MariaDB-devel

3、启动数据库

[azureuser@mono yum.repos.d]$ sudo service mysql start

如果启动不了,请到 /data/mysql/ 下查看错误日志,这个日志通常是主机名.err。

4、修改Root的密码

[azureuser@mono yum.repos.d]$ mysqladmin -u root password ‘passwd’

5、配置远程访问,MariaDB为了安全起见,默认情况下绑定ip( 127.0.0.1)。

[azureuser@mono yum.repos.d]$ mysql -u root -p

Enter password:

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 4

Server version: 10.0.4-MariaDB MariaDB Server

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ‘passwd’ WITH GRANT OPTION;

MariaDB [(none)]> flush privileges;

第一句中"%"表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可,如:

GRANT ALL PRIVILEGES ON *.* TO root@"172.168.193.25" IDENTIFIED BY "root";

第二句表示从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。

6、如果系统的防火墙开着(or behind a hardware firewall or NAT)你必须放开mysql使用的TCP端口,通常都是3306。

7、大小写敏感

用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;

lower_case_table_names参数详解:

lower_case_table_names = 0

其中 0:区分大小写,1:不区分大小写

测试LJMA是否成功

放一个网站上去测试下,我这里放个小泥鳅的Mono兼容代码版本上去,可以从这里获取https://github.com/geffzhang/LoachsMono,使用Visual Studio编译后放到jexus的 default站点所对应的目录/var/www/default

LJMA环境是搭建好了,这其实仅仅是安装上了软件而已,而具体的配置还是有很多工作要做的呢?也就是说,您虽然搭建出来了环境,但是如果不会配置细节的东西,相当于没有任何工作经验,所以还是多配置Jexus或者ASP.NET。

一键安装脚本 https://github.com/cjy37/linux-asp.net-installScript

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Windows PowerShell 2.0十大新特性

      新的cmdlet、操作符和变量,再加上诸如脚本调试以及后台任务这样的新功能,PowerShell 2.0将帮助你开启PowerShell脚本编程的新世界。 ...

    张善友
  • 在 CentOS 上使用 Jexus 托管运行 ZKEACMS

    ZKEACMS Core 是基于 .net core 开发的,可以在 windows, linux, mac 上跨平台运行,接下来我们来看看如何在 CentOS...

    张善友
  • CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4

    最新更新参看: Centos 7.0 安装Mono 3.4 和 Jexus 5.6 2012年初写过一篇《32和64位的CentOS 6.0下 安装 Mono ...

    张善友
  • 【STM32H7教程】第2章 STM32H7的开发环境搭建

    本章主要为大家讲解V7开发板的开发板环境搭建,涉及IDE,下载器和相关小软件的驱动安装。

    armfly
  • pandas DataFrame的创建方法

    在pandas里,DataFrame是最经常用的数据结构,这里总结生成和添加数据的方法: ①、把其他格式的数据整理到DataFrame中; ②在已有的Dat...

    py3study
  • Fish shell 入门教程

    命令行是程序员的必备技能。图形界面虽然好看,解决问题还是要靠命令行。 命令行由 Shell 提供。各种命令通过 Shell,传递给操作系统的内核。学习命令行就是...

    ruanyf
  • ai怎么手绘飞燕矢量图? ai飞燕插画的画法

    燕子非常的勤劳,它们不仅仅有着高超的飞翔技巧,还会建筑自己的房屋,想要画小燕子,该怎么画呢?今天,我们就来画一画飞燕的形象 ,从中学习一下飞燕的基本绘制技巧,掌...

    砸漏
  • MySQL数据库远程连接、创建新用户、设置权限

    上篇文章我们写了在服务器上安装MySQL,可以随时远程连接,我们这次讲如何创建一个新的用户,给予权限,并且实现远程连接!

    浩Coding
  • 【预约中】DevOps 实战:Jenkins Docker

    随着DevOps理念、 Docker 的普及,云原生时代已经到来,开发工程师对应用环境的掌控力进一步加强,运维成本进一步降低。DevOps 采用 Docker ...

    腾讯云大学
  • Linux运维基础技能: 脚本编程与Linux命令

    本系列文章一共三篇,分别为《脚本编程与 Linux 命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺)...

    张戈

扫码关注云+社区

领取腾讯云代金券