Odoo 服务器域名配置

Odoo 服务器域名配置

市场上的两大主流 Web 服务器无疑是 Apache 和 Nginx,Odoo 部署为 Web 站点时,显然不会采用 http://your.ip.address:8069的方式进行访问,于我们需要进行 Web 服务器的配置:

Read More

通过CentOS 7从零开始学习Linux及常见问题

本文将通过CentOS 7来学习Linux的以下常用知识:

  • Linux网络设置
  • SSH常用配置和使用方法
  • Linux常用服务
    • Crontab定时任务
    • NTP时间同步
    • Logrotate日志切割
    • Supervisor进程管理
  • Linux常用命令
  • Linux中的防火墙配置方法
  • 使用Apache配置Web服务器
  • 使用Nginx配置Web服务器
  • MySQL的安装及常用操作
  • Linux中的常见问题
  • Memcached和Redis缓存
  • Git的配置和使用
  • PHP安装及配置
    • Lavarel的安装及配置
    • Yii的安装及配置
    • ThinkPHP的安装及配置
    • phpMyAdmin的安装及配置
    • phpRedisAdmin的安装及配置
  • Java环境搭建
    • Tomcat搭建和启用
    • Maven使用示例
  • Python运行环境配置
  • Zabbix监控系统安装配置
  • VirtualBox 设置共享文件夹

CentOS 7目录结构

Read More

CentOS 7安装Apache + MySQL + PHP

一、配置防火墙,开启80端口、3306端口

CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。

1、关闭firewall:

#停止firewall服务

systemctl stop firewalld.service

#禁止firewall开机启动

systemctl disable firewalld.service

 

2、安装iptables防火墙

#安装

yum install iptables-services

#编辑防火墙配置文件

vi /etc/sysconfig/iptables

添加80,3306端口

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

 #最后重启防火墙使配置生效

systemctl restart iptables.service

#设置防火墙开机启动

systemctl enable iptables.service

 

二、关闭SELINUX
#修改配置文件

  1. vi /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq! #保存退出

#使配置立即生效

setenforce 0

三.安装apache

yum -y install httpd

可能会用到的:

systemctl start httpd.service #启动apache

systemctl stop httpd.service #停止apache

systemctl restart httpd.service #重启apache

systemctl enable httpd.service #设置apache开机启动
restart一下,然后:
输入localhost
出现之后代表已经安装上去了。

四.安装mysql

方法参考
http://blog.itpub.net/29773961/viewspace-1248176/
(wget http://repo.mysql.com//mysql57-community-release-el7-8.noarch.rpm)
方法大致相同

在centos7中可以用:

rpm -ivh mysql57-community-release-el7-8.noarch.rpm

sudo yum -y install mysql-community-server

关于这一步骤,在目前能够找到的centos7配置教程上,大多都是安装mariadb,因为centos7默认将mariadb视作mysql。
p.s.因为mysql被oracle收购后,原作者担心mysql闭源,所以又写了一个mariadb,这个数据库可以理解为mysql的分支。
我在此处还是安装mysql

如果需要安装mariadb,只需通过yum就可。

查看MySQL安装过程中临时生成的密码

sudo grep ‘temporary password’ /var/log/mysqld.log

五.安装php
yum -y install php

安装PHP组件,使PHP支持mysql

yum -y install php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash

重启对应服务

systemctl restart mysqld.service

systemctl restart httpd.service

Apache优化

如果要查看当前网站的连接数,可执行命令:

# ps aux | grep httpd | wc -l
27

表示当前链接为27个。
如果这个值大于Apache的配置文件httpd.conf 文件中MaxClients 的值,那么新的连接将会排队等候,这样就造成了访问慢的缘故,因此需要修改MaxClients的值。如果实时检查httpd的连接数则执行:

# watch -n 1 -d "pgrep httpd|wc -l"  //每秒钟一次

计算httpd占用内存的平均数:

# ps aux |awk  '/httpd/{sum+=$6;n++};END{print sum/n}'
17988.3   //单位为k

第六个字段为RSS,表示的是实际物理内存,第五个字段为VSZ ,表示的是虚拟内存

查看TCP的链接情况:

# netstat -an | grep -i "IP地址:80" | awk '{print $6}' | sort | uniq -c | sort -n
     7 SYN_RECV
     10 FIN_WAIT1
     12 FIN_WAIT2
     18 ESTABLISHED
     124 TIME_WAIT

如果有大量SYN_RECV则有可能在遭受DDOS攻击。
服务器的优化
(MPM: Multi-Processing Modules)
apache2主要的优势就是对多处理器的支持更好,在编译时同过使用–with-mpm选项来决定apache2的工作模式。如果知道当前的apache2使用什么工作机制,可以通过httpd -l命令列出apache的所有模块,就可以知道其工作方式:

prefork:
如果httpd -l列出prefork.c,则需要对下面的段进行配置:

StartServers 5 #启动apache时启动的httpd进程个数。
MinSpareServers 5 #服务器保持的最小空闲进程数。
MaxSpareServers 10 #服务器保持的最大空闲进程数。
MaxClients 150 #最大并发连接数。
MaxRequestsPerChild 1000 #每个子进程被请求服务多少次后被kill掉。0表示不限制,推荐设置为1000。

在该工作模式下,服务器启动后起动5个httpd进程(加父进程共6个,通过ps -ax|grep httpd命令可以看到)。当有用户连接时,apache会使用一个空闲进程为该连接服务,同时父进程会fork一个子进程。直到内存中的空闲进程达到MaxSpareServers。该模式是为了兼容一些旧版本的程序。我缺省编译时的选项。

worker:
如果httpd -l列出worker.c,则需要对下面的段进行配置:

StartServers 2 #启动apache时启动的httpd进程个数。
MaxClients 150 #最大并发连接数。
MinSpareThreads 25 #服务器保持的最小空闲线程数。
MaxSpareThreads 75 #服务器保持的最大空闲线程数。
ThreadsPerChild 25 #每个子进程的产生的线程数。
MaxRequestsPerChild 0 #每个子进程被请求服务多少次后被kill掉。0表示不限制,推荐设置为1000。

该模式是由线程来监听客户的连接。当有新客户连接时,由其中的一个空闲线程接受连接。服务器在启动时启动两个进程,每个进程产生的线程数是固定的(ThreadsPerChild决定),因此启动时有50个线程。当50个线程不够用时,服务器自动fork一个进程,再产生25个线程。

perchild:
如果httpd -l列出perchild.c,则需要对下面的段进行配置:

NumServers 5 #服务器启动时启动的子进程数
StartThreads 5 #每个子进程启动时启动的线程数
MinSpareThreads 5 #内存中的最小空闲线程数
MaxSpareThreads 10 #最大空闲线程数
MaxThreadsPerChild 2000 #每个线程最多被请求多少次后退出。0不受限制
MaxRequestsPerChild 10000 #每个子进程服务多少次后被重新fork。0表示不受限制。

该模式下,子进程的数量是固定的,线程数不受限制。当客户端连接到服务器时,又空闲的线程提供服务。 如果空闲线程数不够,子进程自动产生线程来为新的连接服务。该模式用于多站点服务器。

VirtualBox配置CentOS Linux、安装Magento

在前面参照Allan MacGregor的Magento PHP Developer’s Guide一书尝试搭建Linux环境并安装Magento(参见Magento的安装Magento的环境搭建),中间存在一些问题,实际上未能100%完成。之后Alan请教了公司IT部门的技术大牛,在VirtualBox(也可使用VMware但可能需安装VMware Server且比较消耗系统资源)上配置CentOS并成功的安装了Linux,在这里与家分享一下。

VirtualBox以及CentOS的安装在这里就不再赘述,可根据实际需要在http://wiki.centos.org/Download下载CentOS安装文件。

安装Apache、配置网络

第一步我们先来安装Apache,登录后执行如下指令

yum install httpd -y

如果出现无法解析镜像主机的情况,则说明还需对网络及dns进行配置,输入指令vi /etc/sysconfig/network-scripts/ifcfg-eth0,enter进入后按下i进行编辑,将ONBOOT=后的值改为yes,BOOTPROTO值改为no,然后在结尾处加上如下内容:
DNS1=192.168.1.1(根据家庭路由器和公司配置可能会有不同,通常默认都是192.168.1.1)
IPADDR=192.168.1.123(根据实际情况指定,这里选择123)
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

按下esc,shift+:,输入wq保存退出
重启网络服务:service network restart,这里网成了网络相关配置,但还需要再进行一处配置,输入poweroff关机。在VirtualBox主界面选中机器,点击Machine>Settings或直接点击工具栏中的Settings,进入后点击Network,将Adapter1下的NAT改为Bridged Adapter,点击OK完成修改。
点击工具栏Start再次开启机器,这时再执行前面的yum指令就可以开始安装Apache服务器了。执行service httpd start命令启动Apache(默认开机开启Apache执行命令chkconfig httpd on)。

这时在浏览器中输入http://192.168.1.123发现无法访问,这是由于未配置防火墙的原因。在配置之前我们安装一下nano,因为很多人不太习惯使用vi编辑器,输入yum install nano -y命令即可。

下面我们来配置防火墙iptable,在命令行中输入
nano /etc/sysconfig/iptables
然后在-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
后面加入下面这一行,来开放80端口(Web服务的默认端口)
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

这时就可以通过ip地址http://192.168.1.123在浏览器中进行访问了,默认进入的是一个有着Apache 2 Test Page字样的页面。

安装PHP和MySQL

下面安装php,输入指令yum install php -y,然后输入yum install mysql mysql-server -y来安装MySQL数据库,输入service mysqld start启用MySQL(默认开机开启MySQL执行命令chkconfig mysqld on),输入mysql -uroot -p连接数据库,

create database magento_dev;
创建一个用户来管理这个数据库:
GRANT ALL PRIVILEGES ON magento_dev.* TO ‘alan’@’localhost’ IDENTIFIED BY ‘alanhou2014′; (其中alan和alanhou2014分别为用户名和密码,可根据需要调整)

安装Magento

下面我们开始对Magento进行安装,首先输入yum install subversion -y安装svn,完成后键入cd /var/www切换目录,
svn export –force http://svn.magentocommerce.com/source/branches/1.9 html/

打开C:\system32\drivers\etc\hosts文件,在最后添加一条192.168.1.123 magento.localhost.com

文件下载完成后在浏览器中输入http://magento.localhost.com就可以进入Magento的安装界面,但中间会出现一些错误,这是由于权限给予不足以及缺乏组件,让我们一起来看看有哪些错误提示:

提示没有可写权限

Path “/var/www/html/app/etc” must be writable.
Path “/var/www/html/media” must be writable.
Path “/var/www/html/media/xmlconnect” must be writable.
Path “/var/www/html/media/xmlconnect/original” must be writable.
Path “/var/www/html/media/xmlconnect/original/ok.gif” must be writable.
Path “/var/www/html/media/xmlconnect/custom” must be writable.
Path “/var/www/html/media/xmlconnect/custom/ok.gif” must be writable.
Path “/var/www/html/media/xmlconnect/system” must be writable.
Path “/var/www/html/media/xmlconnect/system/ok.gif” must be writable.
Path “/var/www/html/media/downloadable” must be writable.
Path “/var/www/html/media/customer” must be writable.

chown -R apache:apache html

出现如下提示分别表示缺少dom,mcrypt,gd,mysql这几个php库(可通过php -m查看当前php扩展(extension),也可cd /etc/php.d切换到这里查看)
PHP extension “dom” must be loaded.
PHP extension “mcrypt” must be loaded.
PHP extension “gd” must be loaded.
PHP Extensions “pdo_mysql” must be loaded.
安装方法也很简单:
yum install php-dom php-mcrypt php-gd php-mysql -y
重启Apache服务生效:service httpd restart

若出现The URL “http://magento.localhost.com/” is not accessible. Unable to read response, or response is empty提示,则只需勾选Skip Base URL Validation Before the Next Step即可。
Magento安装完成

Bonus Tip:

此外linux还有一个仓库(repository)的概念,通过cd /etc/yum.repos.d切换,ll或ls -l可查看现在的仓库,如果通过yum无法某些组件的话,通常是由于仓库中未包含所指定的内容(如在这里安装MongoDB以及前面的mcrypt),下面来介绍一个如何安装RHEL EPEL Repo软件源,我们使用的是国外的镜象,输入如下指令:
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm(先使用yum install wget -y来安装wget)
文件下载完成后将其载入到仓库中,使用指令:
rpm -Uvh epel-release-6*.rpm

另外再提供两个中国镜象源地址:
http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm(rpm为Red Hat Package Management的简写形式)
http://mirrors.hustunique.com/epel/6/x86_64/epel-release-6-8.noarch.rpm

Magento环境搭建

接下来会写一些有关Magento的博文,这一系列博文将主要参考Allan MacGregor的Magento PHP Developer’s Guide一书,但不会逐字翻译,只会截取一些精华内容,旨在学习和Magento的安装、代码结构及二次开发等相关知识。

这里通过使用VirtualBox的安装以及添加虚拟机来架设服务器环境,您也可以使用VMware,下载地址:https://www.virtualbox.org/wiki/Downloads。Linux使用较流行的Ubuntu,下载地址为:http://www.ubuntu.com/download/server/(根据实际情况下载32位或64位的)。

VirtualBox安装及配置

安装VirtualBox和安装普通软件的方法一样,双击所下载的.exe文件然后下一步下一步就可以了。

VirtualBox安装向导

安装后可通过File(管理)>Preferences(全局设定)>Language(语言)来修改界面语言,这里使用英文。点击左上方New弹出创建虚拟机窗口,Name为新建虚拟机的名称,Type在下拉列表中选择Linux,Version选择Ubuntu(32位还是64位取决于您所使用的机器是什么 版本),点击Next进入内存大小配置,可使用默认推荐的512M或更大的值,点击Next进入硬盘创建页面,使用默认勾选的Create a virtual hard drive now,点击Create进入下一步,使用默认的VirtualBox Disk Image (VDI),点击Next进入下一步,这一步包含动态分配大小Dynamically Allocated和固定大小Fixed Size两个选项(两者的共别顾名思义,前者会按实际文件大小动态的分配硬盘空间,而后者则直接分配指定大小的硬盘空间),点击Next进入下一步,选择保存位置和占用大小(通常Magento的安装会占用2 GB,另位数据库服务器会占用约3 GB,这里可使用默认的8 GB),点击Create完成安装。

完成虚拟机创建后,您会在VirtualBox界面的左侧看到新创建的虚拟机,先不要启动虚拟机(Virtual Machine,简称VM),选中新创建的虚拟机,点击Settings>Network>Adapter 2,勾选Enable Network Adapter,在Attached to后的下拉框中选中Bridged Adapter,这一步主要是为了能够通过SSH进行远程连接,在同一界面下点击左侧菜单中的System确保优先使用CD/DVD-ROM启动系统。

然后点击左侧菜单下的Storage,选择空的IDE Controller,点击右侧的光盘图标(Choose a virtual CD/DVD disk file…),载入之前下载的Ubuntu 32位或64位iso镜像文件(Alan的机器为32位,所以以下皆为32位的安装,可能与64位略有不同),然后点击Ok,这样我们就完成了VirtualBox的安装和配置。

VirtualBox Ubuntu服务器

启动虚拟机

完成了VirtualBox的安装与配置,下一步我们来起用所创建的虚拟机,选中左边栏中的虚拟机,点击上方的Start,稍等片刻就会进入语言选择界面,这里选择English,进入安装界面,选择Install Ubuntu Server,进入安装过程界面语言,这里还是选择English,下一步根据所选择语言出现国家列表供选择,这里选择United States,然后设置键盘(以上几步中您可以选择简体中文和中国,这里的选择只是为了避免之后与书中内容有冲突)。

完成上述步骤后进入一些自动扫描的页面,下一步设置主网卡,选择后会进行自动的扫描配置。网卡配置完毕后会进入主机名(hostname),设置页面,这里使用默认的名称ubuntu,然后设置用户名和密码,根据个人情况设置不同值。然后选择是否对主目录加密,下一步会读取系统的时间。下一步进行分区(partition)设置,这里选择Guided – use entire disk and set up LVM,然后选择分区磁盘,然后确认几步写入步骤后,即进入安装系统页面,这一步会耗时几分钟

VirtualBox Linus系统安装

下一步设置代理(proxy),这里留空,然后设置是否自动更新,下一步选择需要安装的软件,因为我们要自己安装LAMP各组件,所以这里仅安装OpenSSH server,中间会安装Grub,直接确定,最后会显示安装完成,continue启动,进入log in页面,输入在安装过程中设置的用户名和密码。登入后输入sudo apt-get update升级安装包,这里的APT是的Advanced Packaging Tool的缩写,是大部分Debian GNU/Linux版本的核心库,它简化了系统中软件的安装和维护流程。

VirtualBox Linux Login页面

LAMP组件安装

上面搭建好了Linux的环境,接下来需要安装Apache, MySQL和PHP,首先我们来安装Apache,Apache是HTTP服务器,当前有60%以上的网站都使用Apache,安装Apache仅需输入指令:sudo apt-get install apache2 -y,可通过如下指令来对Apache服务进行操作

$ sudo apache2ctl stop
$ sudo apache2ctl start
$ sudo apache2ctl restart

通过访问虚拟机ip地址如192.168.156.1来进行确认(可能是由于Alan的笔记本是通过wifi来连接网络的,在进行这一步测试过程中出现了故障,后面的内容采用的都是VMware来进行完成的)。

安装完Apache后,下一步就是PHP了,Magento会使用到多个PHP的扩展库(如GD库),因此需要安装所有需要用到的组件,具体的命令如下:

sudo apt-get install php5 php5-curl php5-gd php5-imagick php5-imap php5-mcrypt php5-mysql -y

sudo apt-get install php-pear php5-memcache -y

sudo apt-get install libapache2-mod-php5 -y

通过输入指令php -v可以检测安装情况。

PHP安装情况查询

一个好的Web应用程序自然少不了数据库,下面我们 就来安装MySQL:

sudo apt-get install mysql-server mysql-client -y

在安装过程中需要输入root账户的密码,安装完毕后可通过如下指令进行验证(请根据情况在-p后输入您所设置的密码):

sudo mysql -uroot -palanhou2014

出现mysql>字样则表示安装正常(可通过Ctrl+C来回到原界面)。

至此Magento所需用到的LAMP环境就安装完毕了,下一步我们开始进入Magento的安装