CentOS 7 安装 LAMP 与 Mono
目录:
在 CentOS 7.7 64位系统中,安装 Apache + Mysql + PHP + Mono 以支持 ASP.NET Web 程序跨平台运行,其达到跨平台目的,只需配置 Apache + Mono 即可,其它配置为附加配置。
操作系统:CentOS 7.7 64位
安装wget + git文件下载工具:
# for Amazon Linux/CentOSyum -y install wget git# for Debian/Ubuntuapt-get -y install wget git
安装net-tools查看进程占用端口情况:
[root@node04 ~]# yum install net-tools[root@node04 ~]# netstat -tunpl# 查找占用 8080 端口的进程[root@node04 ~]# netstat -lnp | grep 8080
部署 LAMP
Linux + Apache + Mysql + PHP
使用《LAMP 一键安装包 》安装过程。
1、git clone 并赋予脚本执行权限
[root@node04 ~]# git clone https://github.com/teddysun/lamp.git[root@node04 ~]# cd lamp[root@node04 lamp]# chmod 755 *.sh
2、开始安装
执行lamp.sh脚本。
[root@node04 lamp]# ./lamp.sh
安装完毕,注意事项:
防火墙服务(service)
自动添加了 http 和 https 两项防火墙服务,分别对应 80/443 端口。可针对服务进行添加/删除。
[root@node04 ~]# firewall-cmd --zone=public --list-allpublic (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources:services: dhcpv6-client http https sshports:protocols:masquerade: noforward-ports:source-ports:icmp-blocks:rich rules:[root@node04 ~]# firewall-cmd --permanent --zone=public --remove-service=http[root@node04 ~]# firewall-cmd --permanent --zone=public --add-service=http[root@node04 ~]# firewall-cmd --reload
lamp 根目录的 software
software 目录,用于缓存安装过程中,需要下载的软件包。安装完毕后,会自动删除,不做提醒是否保留,可自己备份,再次时安装速度更快。
安装完毕后的配置情况:
Congratulations, LAMP install completed!------------------------ Installed Overview -------------------------Apache: httpd-2.4.46Default Website: http://192.168.1.195Apache Location: /usr/local/apacheApache Additional Modules: do_not_installDatabase: mysql-5.7.31MySQL Location: /usr/local/mysqlMySQL Data Location: /usr/local/mysql/dataMySQL Root Password: xxxxxxDatabase Management Modules: do_not_installPHP: php-5.6.40PHP Location: /usr/local/phpPHP Additional Extensions: do_not_installKodExplorer: do_not_install---------------------------------------------------------------------# 查看端口占用情况[root@node04 lamp]# netstat -tunpl
设置 Mysql 允许远程连接:
一开始报错如下:
ERROR 1130: Host 192.168.3.100 is not allowed to connect to this MySQL server
问题原因是用户权限,把 mysql 数据库的 user 表里的 root 用户(或者其他任意用户)的 host 字段,变更为%。
开始设置:
# 用 root 用户登录,并输入密码[root@node04 ~]# mysql -u root -pEnter password:# 选择 mysql 数据库mysql> use mysql;# 查看 host 字段信息mysql> select 'host' from user where user='root';# 更新 host 为 %mysql> update user set host='%' where user='root';# 虽然报错了,但是不用理会ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'# 刷新用户权限mysql> flush privileges;# 退出 mysql 命令行mysql> exitBye
程序目录:
MySQL 安装目录: /usr/local/mysqlMySQL 数据库目录: /usr/local/mysql/data(默认路径,安装时可更改)MariaDB 安装目录: /usr/local/mariadbMariaDB 数据库目录: /usr/local/mariadb/data(默认路径,安装时可更改)PHP 安装目录: /usr/local/phpApache 安装目录: /usr/local/apachephpMyAdmin 安装目录: /data/www/default/phpmyadminAdminer 安装路径: /data/www/default/adminer.phpKodExplorer 安装目录: /data/www/default/kod
网站目录:
默认的网站根目录: /data/www/default默认页位置: /data/www/default/index.html新建网站默认目录: /data/www/网站域名phpmyadmin 后台地址: http://网站域名或IP/phpmyadmin/phpmyadmin 默认用户名:root 默认密码:lamp.sh(注:此密码为 MySQL 的 root 密码。在安装时会要求输入,如不输入则为默认密码 lamp.sh)XCache 后台地址: http://域名或IP/xcache/XCache 默认用户名:admin 默认密码:123456(注:用户名和密码在配置文件 /usr/local/php/php.d/xcache.ini 中定义)
配置文件:
Apache 日志目录: /usr/local/apache/logs新建网站日志目录: /data/wwwlog/网站域名Apache 默认 SSL 配置文件: /usr/local/apache/conf/extra/httpd-ssl.conf新建网站配置文件: /usr/local/apache/conf/vhost/网站域名.confPHP 配置文件: /usr/local/php/etc/php.iniPHP 所有扩展配置文件目录: /usr/local/php/php.d/MySQL 配置文件: /etc/my.cnf
命令一览:
MySQL/MariaDB 命令:/etc/init.d/mysqld (start|stop|restart|status)Apache 命令:/etc/init.d/httpd (start|stop|restart|status)Memcached 命令(可选安装)/etc/init.d/memcached (start|stop|restart|status)Redis 命令(可选安装)/etc/init.d/redis-server (start|stop|restart|status)
安装 LAMP 及建站简单流程:
- 安装 LAMP 环境
- 添加虚拟主机。运行命令:
lamp add
(如果只建一个站,则可以直接将网站程序上传至/data/www/default目录下即可) - 上传并解压网站程序到网站目录,默认位置为:
/data/www/网站域名/ - 更改网站目录权限。以 root 用户登录,运行:
chown -R apache.apache /data/www/网站域名/ - 运行网站安装程序完成网站安装
注意:在安装过程的交互中,当发现输错选项需要更正时,可以按下 Ctrl 键,同时再按退格(Backspace)键,即可消除。或者同时按下Ctrl + u即可全部清除,重新输入。
使用提示:
lamp add 创建虚拟主机lamp del 删除虚拟主机lamp list 列出虚拟主机
如何升级
注意:双斜杠//后的内容不要复制输入
cd ~/lampgit reset --hard // Resets the index and working treegit pull // Get latest version firstchmod 755 *.sh./upgrade.sh // Select one to upgrade./upgrade.sh apache // Upgrade Apache./upgrade.sh db // Upgrade MySQL or MariaDB./upgrade.sh php // Upgrade PHP./upgrade.sh phpmyadmin // Upgrade phpMyAdmin./upgrade.sh adminer // Upgrade Adminer
如何卸载
./uninstall.sh
部署 Mono
Mono 是一个跨平台,且开源的 .NET 框架。
- Mono 官网
- Mono Github
- Mono 官方文档关于 Web
其中包含 ASP.NET / mod_mono / FastCGI - Mono 官方文档关于 GUI
其中包含 System.Drawing / libgdiplus
安装 libgdiplus
Libgdiplus 是 Mono 项目的一部分,用于实现 GDI+ API 。在跨平台时,在 Linux 系统中,支持 System.Drawing 服务器端图片的处理。
# 安装依赖[root@node04 ~]# yum install autoconf automake libtool[root@node04 ~]# yum install freetype-devel fontconfig libXft-devel[root@node04 ~]# yum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel[root@node04 ~]# yum install glib2-devel cairo-devel[root@node04 ~]# git clone https://github.com/mono/libgdiplus[root@node04 ~]# cd libgdiplus/# 进行编译[root@node04 libgdiplus]# ./autogen.sh --prefix=/usr/local# 编译最后,输出:---Configuration summary* Installation prefix = /usr/local* Cairo = 1.15.12 (system)* Text = cairo* EXIF tags = yes* X11 = yes* Codecs supported:- TIFF: yes- JPEG: yes- GIF: yes- PNG: yesNOTE: if any of the above say‘no’you may install thecorresponding development packages for them, rerunautogen.sh to include them in the build.---Now type‘make’to compile# 安装[root@node04 libgdiplus]# make[root@node04 libgdiplus]# make install
安装 mono 和 xsp
将 Mono 存储库添加到系统
CentOS / RHEL 7 :
rpmkeys --import "http://pool.sks-keyservers.net/pks/lookup?op=get&search=0x3fa7e0328081bff6a14da29aa6a19b38d3d831ef"su -c 'curl https://download.mono-project.com/repo/centos7-stable.repo | tee /etc/yum.repos.d/mono-centos7-stable.repo'
注意:Mono 源库支持CentOS / RHEL 8、CentOS / RHEL 7、CentOS / RHEL 6,注意你所使用的操作系统。更多查看:https://www.mono-project.com/download/stable/
# 安装 mono[root@node04 ~]# yum install mono# 查看 mono 版本[root@node04 ~]# mono --version# 安装 xsp[root@node04 ~]# yum install xsp# 启动 xsp 示例,通过浏览器查看 http://localhost:9000[root@node04 ~]# cd /usr/lib/xsp/test[root@node04 test]# xspxsp4Listening on address: 0.0.0.0Root directory: /usr/lib/xsp/testListening on port: 9000 (non-secure)Hit Return to stop the server.
安装 mod_mono
mod_mono 是 Apache 2.0/2.2/2.4.3 的一个模块,提供 Apache 对 ASP.NET 的支持。
更多查看:
mod_mono 安装分两种:
第一种,是 yum 安装已经发布好的安装包,需要注意的是,此安装包内已经内置 Apache 等其他必须的依赖。
第二种,编译安装,编译安装灵活性大,只安装 mod_mono 模块,需要你自己处理依赖关系,提前安装好 mod_mono 需要的依赖。其中,在编译安装过程中,会自动识别出 Apache 是否存在,和配置相关目录设置。
由于,之前已经安装过 Apache,那么就采用编译安装 mod_mono 模块,过程如下:
[root@node04 ~]# git clone https://github.com/mono/mod_mono[root@node04 ~]# cd mod_mono/[root@node04 mod_mono]# ./autogen.sh[root@node04 mod_mono]# make[root@node04 mod_mono]# make install
执行make install安装完成后,有警告信息:libtool: warning: remember to run 'libtool --finish /usr/local/lib'
继续执行,警告信息中提示的命令:
[root@node04 mod_mono]# libtool --finish /usr/local/lib
安装完成后,设置如下:
在 Apache 配置文件(httpd.conf)添加设置,引入 mod_mono 模块配置文件。
# mod_mono configInclude /usr/local/apache/conf/mod_mono.conf
剩下的,就是配置 Apache 虚拟主机,重启 Apache 就可以了,关于 mod_mono 模块更多配置,请看官网说明。
对于 mod_mono 模块,配置支持 ASP.NET MVC4 需要注意的几点:
# 指定支持 .NET 版本,默认支持 1.1,可指定 2.0/3.0/4.0MonoServerPath "/usr/bin/mod-mono-server4"# 兼容模式 asp.net 程序不做任何修改,兼容运行在 Unix 系统,但会减低性能。MonoSetEnv xxx MONO_IOMAP=all# 开启 Mono 服务端调试MonoDebug true# 支持 ASP.NET MVC 无后缀 URL 文件扩展名ForceType application/x-asp-net# 应用程序根目录MonoApplications "/:/data/www/xxx"
如果在站点配置中,指定了开启MonoDebug true调试,则站点发布时发布->设置->配置选项为 Debug ,不能选择 Release 。
在 Web.config 文件中配置:
<configuration><system.web><customErrors mode="Off" /></system.web></configuration>
设置示例 1:
<VirtualHost *:80>ServerName you.domain.comServerAdmin web-admin@you.domain.comDocumentRoot /srv/www/you.domain.com# MonoServerPath can be changed to specify which version of ASP.NET is hosted# mod-mono-server1 = ASP.NET 1.1 / mod-mono-server2 = ASP.NET 2.0# For SUSE Linux Enterprise Mono Extension, uncomment the line below:# MonoServerPath you.domain.com "/opt/novell/mono/bin/mod-mono-server2"# For Mono on openSUSE, uncomment the line below instead:MonoServerPath you.domain.com "/usr/bin/mod-mono-server2"# To obtain line numbers in stack traces you need to do two things:# 1) Enable Debug code generation in your page by using the Debug="true"# page directive, or by setting <compilation debug="true" /> in the# application's Web.config# 2) Uncomment the MonoDebug true directive below to enable mod_mono debuggingMonoDebug you.domain.com true# The MONO_IOMAP environment variable can be configured to provide platform abstraction# for file access in Linux. Valid values for MONO_IOMAP are:# case# drive# all# Uncomment the line below to alter file access behavior for the configured applicationMonoSetEnv you.domain.com MONO_IOMAP=all## Additional environtment variables can be set for this server instance using# the MonoSetEnv directive. MonoSetEnv takes a string of 'name=value' pairs# separated by semicolons. For instance, to enable platform abstraction *and*# use Mono's old regular expression interpreter (which is slower, but has a# shorter setup time), uncomment the line below instead:# MonoSetEnv you.domain.com MONO_IOMAP=all;MONO_OLD_RX=1MonoApplications you.domain.com "/:/srv/www/you.domain.com"<Location "/">Allow from allOrder allow,denyMonoSetServerAlias you.domain.comSetHandler monoSetOutputFilter DEFLATESetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary</Location><IfModule mod_deflate.c>AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript</IfModule></VirtualHost>
设置示例 2:
Alias /MonoTest "/usr/local/lib/xsp/test"MonoServerPath MonoTest "/usr/bin/mod-mono-server2"MonoDebug MonoTest trueMonoSetEnv MonoTest MONO_IOMAP=allMonoApplications MonoTest "/MonoTest:/usr/local/lib/xsp/test"<Location "/MonoTest">Allow from allOrder allow,denyMonoSetServerAlias MonoTestSetHandler monoSetOutputFilter DEFLATESetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary</Location><IfModule mod_deflate.c>AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript</IfModule>
参考文献:
- 在 Ubuntu Server 上安装配置 Mono 生产环境
- Part 1: Installing the Software
- Part 2: Setting up and Configuring MySQL
- Part 3: Walk through porting the ASP.NET MVC website.
(完)