Fork me on GitHub

28 Jul 2016

.NET in Linux Web 服务器配置


安装linux

首先我们要做的就是安装linux,其发行版redhat,ubuntu,centos等等都可以,我选择了centos.

1.下载 centos,安装过程这里不再赘述

2.服务器装好系统之后,更新系统 (耗时操作,可选择执行)

yum -y update 升级所有包,改变软件设置和系统设置,系统版本内核都升级

yum -y upgrade 升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变

安装mono

在linux上安装mono,以便跑我们写的.net应用,另外对.net core感兴趣的同学也可以去试试,就不用装mono了,不过自己写的站点在迁移时就都要用.net core重新生成一遍了,这里有篇博文可以看看http://www.cnblogs.com/shanyou/p/4295163.html,个人认为目前成熟的解决方案还是mono

1.安装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

可能还需要安装cmake,我在配置mono的时候遇到

mono依赖

mono依赖

2.安装Mono需要的GDI+ 兼容API库 - Libgdiplus

Libgdiplus是一个Mono库,用于对非Windows操作系统提供GDI+兼容的API。libgdiplus是mono中的System.Drawing依赖的一个组件,用于显示web页面基本颜色等。最新版本查看地址:http://download.mono-project.com/sources/libgdiplus/

cd /usr/local/src/

wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-x.xx.tar.bz2 具体版本视情况而定

tar -jxvf libgdiplus-x.xx.tar.bz2

cd libgdiplus-x.xx

./configure --prefix=/usr

make

make install

monogdi插件

monogdi插件

monogdi插件

Tips:

tar [-cxtzjvfpPN] 文件与目录 ....

参数:

-c :建立一个压缩文件的参数指令(create 的意思);

-x :解开一个压缩文件的参数指令!

-t :查看 tarfile 里面的文件!

特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。

-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?

-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?

-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!

-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数

3.安装 mono

最新版本查看地址:http://download.mono-project.com/sources/mono/

cd /usr/local/src/

wget http://download.mono-project.com/sources/mono/mono-x.xx.x.tar.bz2 具体版本视情况而定

tar -jxvf mono-x.xx.x.tar.bz2

cd mono-x.xx.x

./configure --prefix=/usr

make

make install

mono配置

mono配置

经过漫长的编译过程,大概需要半小时左右,输入mono -V 有mono版本信息,则安装成功

mono配置

Tips:

  1. 源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)

  2. --prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱

安装jexus

选择国产的jexus作为web服务器,选这个应该是先入为主的感觉...还有就是有个 linuxdotnet社区,jexus配置教程和常见问题,都能在这里找到答案。把解压所得到的文件及文件夹全部复制或移动到 /usr/jexus 这个文件夹中即可

cd /tmp
wget http://www.linuxdot.net/down/jexus-x.x.x.tar.gz
tar -zxvf jexus-x.x.x.tar.gz
sudo mv jexus /usr/
cd /usr/jexus

jexus目录

Tips:

注意安装的centos版本,centos从7.x开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的,低于7的还是可以使用iptables,将80端口打开

firewall-cmd --zone=public --query-port=80/tcp 查看
firewall-cmd --zone=public --add-port=80/tcp --permanent   添加 (--permanent永久生效,没有此参数重启后失效)

CentOS 6.x装好mono和Jexus后,在 /ect/rc.local 后面添加 /usr/jexus/jws start 就可以让jexus跟随系统一起启动,然而在CentOS 7.x上用上面的方法却行不通

vi /lib/systemd/system/jexus.service

写入如下脚本

Description=jexus                   描述服务
After=network.target                描述服务类别
[Service]                           服务运行参数的设置
Type=forking                        后台运行的形式
ExecStart=/usr/jexus/jws start      服务的具体运行命令
ExecReload=/usr/jexus/jws restart   重启命令
ExecStop=/usr/jexus/jws stop        停止命令
PrivateTmp=true                     表示给服务分配独立的临时空间
[Install]                           服务安装的相关设置,可设置为多用户
WantedBy=multi-user.target

jexus自启动

修改时注意服务的路径,你也可以从/lib/systemd/system 文件夹下复制一个service结尾的文件,改名后修改里面的内容。修改后 设置权限 加入到服务中去

chmod 754 jexus.service 
systemctl enable jexus.service

最后reboot看看有没有生效

安装nginx

选择nginx作为反向代理服务器,个人感觉小型站点使用这个,有点杀鸡用牛刀的赶脚,这里也不班门弄斧了,这里有个 教程地址 ,感觉写的还不错

结语

最后根据不同的业务,选择合适的数据库,whatever you want! 在这里给出linux上安装mysql教程地址:如果是个人站点,完全可以装在同一台服务器,如果用户访问量较大,建议还是单独弄一台服务器跑数据库